> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reinskit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure a Reins policy

> Configure Reins account roles, XRP refill amounts, Check expiration, and delegated permissions, then distinguish accepted fields from enforced restrictions.

`reins.yaml` describes the accounts, refill budget, and transaction types you want the agent to use. Generate it with `init --testnet-accounts` so the addresses come from fresh accounts rather than copying example addresses.

## Version and network

The current policy schema uses `version: 1`. The quickstart uses `network: testnet`. The schema also recognizes devnet and mainnet, but the CLI's `apply` command refuses mainnet.

```yaml theme={"dark"}
version: 1
network: testnet
```

## Account roles

`accounts.vault`, `accounts.allowance`, and `accounts.agent` are required, distinct XRPL classic addresses. Keep the addresses produced by initialization.

Optional `accounts.watchdog` and `accounts.agentKey` must be supplied together. They must also be distinct from each other and from the three required accounts. See the [account model](/concepts/accounts) before using that topology.

## Refill budget

For XRP, use a positive decimal string with at most six fractional digits:

```yaml theme={"dark"}
budget:
  asset: XRP
  amount: "10"
  period: 24h
```

`amount` caps each refill Check. `period` controls its lifetime and accepts an integer followed by `s`, `m`, `h`, `d`, or `w`. It is not a rolling spend window.

The schema also accepts issued assets as an object with `currency` and `issuer`. A currency code alone does not identify an issuer. This introductory workflow uses XRP to keep account setup and exposure easier to inspect.

## Delegated transaction types

Choose the smallest set the workflow needs. For payment preparation:

```yaml theme={"dark"}
agent:
  permissions: [Payment]
```

The generated template includes `Payment`, `CheckCash`, and `EscrowFinish`. The parser requires a nonempty permission list and rejects disallowed transaction types. A tool being present in the MCP server does not grant that transaction type on the ledger.

Permission Delegation restricts types rather than the amount of each transaction. Read [enforcement](/concepts/enforcement) before treating a permission list as an amount policy.

## Limits that are not enforced yet

The parser accepts `limits.maxPerTx`, `limits.dailyVelocity`, and `limits.payees`. They describe future independent co-signer rules. They are validated and reported, but the policy service needed to enforce them has not shipped.

Do not rely on these fields to protect funds in the current alpha.

## Review before applying

After editing a policy, inspect the plan before submitting anything:

```bash theme={"dark"}
node packages/cli/dist/cli.js plan reins.yaml
```

Check account roles, transactions, and enforcement descriptions. After applying, use `verify` to compare the intended policy with live ledger state. See the [CLI reference](/reference/cli) for options.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.