{"id":"the-fool","numeral":"0","title":"The Fool","ability":"Leap","summary":"Checks an x402 payment request against the operator's spending policy and answers pay or refuse.","soul":"Light on its feet and cheerful, but it looks down before every step.","upright":"Reads a decoded 402 and picks the first payment option that fits the operator's price cap, payee allowlist, networks, assets and running budget.","reversed":"Will not pay without a policy, will not pay past the cumulative cap, and never raises or rewrites its own limits.","capabilities":["compute:local"],"script":"scripts/leap.mjs","price":"4.20","network":"eip155:8453","bundle":{"filename":"the-fool.zip","sha256":"a6f62d5740e36815d5514f0c851350484a4de257263048fa01d5dda135a15f76","bytes":27432,"files":[{"path":"the-fool/LICENSE.txt","sha256":"a4ac30a7eb3cb8637432dd35e6651011ad742d636efda1e6250f82475c8d8ecd"},{"path":"the-fool/SKILL.md","sha256":"d9fa9cb4e35a53d1ec22b86de027a52d891bd65943987804aed859a5e3aae650"},{"path":"the-fool/references/soul.md","sha256":"d83d95dd18eb2843db6b6ed62be6e48c6ebc2fdd5d51e296c94583cd64ef1650"},{"path":"the-fool/scripts/leap.mjs","sha256":"fab1826d3e78a82236fc75ca03b262aa61bf7117158f4491f5db6a8abab4d8d0"},{"path":"the-fool/tests/vectors.json","sha256":"74475c9eeb184c5eec8c67b069f9a8cfbdb2ea6df2b8648f8e8967918a111819"}]},"files":{"SKILL.md":"---\nname: the-fool\ndescription: Checks a decoded x402 v2 payment challenge against the operator's spending policy and answers pay or refuse. Compares the price with a per-payment cap and a cumulative budget, the payee with an allowlist, and the network and asset with allowed lists. Use before signing any x402 payment, or when an agent needs to decide whether a 402 Payment Required response is within its budget.\nlicense: Proprietary. See LICENSE.txt\ncompatibility: Node.js 20 or newer. No network access needed.\nmetadata:\n  drop: arcana-001\n  numeral: \"0\"\n  version: \"1.0.0\"\n---\n\n# The Fool: Leap\n\nLeap is a pre-payment guard. Give it the decoded `PAYMENT-REQUIRED` challenge from an x402 v2 server and the operator's policy. It walks the `accepts` list in order, picks the first option that fits every rule, and answers `pay` or `refuse` with its reasons. It never signs, sends or stores anything.\n\n## Use it\n\nPass the input as JSON on stdin. The result is printed as JSON on stdout.\n\n```bash\nnode scripts/leap.mjs < input.json\n```\n\nFrom JavaScript: `import { run } from \"./scripts/leap.mjs\"` and call `run(input)`.\n\n### Input\n\n```json\n{\n  \"challenge\": {\n    \"x402Version\": 2,\n    \"accepts\": [\n      {\n        \"scheme\": \"exact\",\n        \"network\": \"eip155:8453\",\n        \"amount\": \"4200000\",\n        \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n        \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n        \"maxTimeoutSeconds\": 300\n      }\n    ]\n  },\n  \"policy\": {\n    \"maxAmountAtomic\": \"5000000\",\n    \"allowPayTo\": [\"0x52c3ff0f2d71d9f0dd37754b10cad6d88ded02f4\"],\n    \"networks\": [\"eip155:8453\"],\n    \"assets\": [\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"],\n    \"cumulativeCapAtomic\": \"21000000\",\n    \"spentAtomic\": \"0\"\n  }\n}\n```\n\n- `challenge` is the whole decoded 402 object or a single entry of its `accepts` list.\n- Amounts are strings of digits in the asset's atomic units (USDC has 6 decimals, so `\"4200000\"` is 4.20 USDC). Leap does the arithmetic with BigInt.\n- `networks` are CAIP-2 ids. `assets` is optional; when present the asset must be on it.\n- EVM addresses (`0x` and 40 hex digits) are compared without regard to case. Other addresses must match exactly.\n- `spentAtomic` is how much has been spent so far against `cumulativeCapAtomic`. Pass `\"0\"` for a fresh budget.\n\n### Output\n\n```json\n{\n  \"decision\": \"pay\",\n  \"reasons\": [\"accepts[0] is within policy: 4200000 of the 5000000 cap, cumulative 4200000 of 21000000\"],\n  \"chosen\": { \"scheme\": \"exact\", \"network\": \"eip155:8453\", \"amount\": \"4200000\", \"...\": \"...\" },\n  \"spentAfterAtomic\": \"4200000\"\n}\n```\n\n- `chosen` is the accepted option, or `null` on refusal.\n- `spentAfterAtomic` is the spending total after this payment. On refusal it is the unchanged `spentAtomic` (or `null` when the policy is missing). Store it yourself and pass it back next time: Leap keeps no state.\n- For each option that failed, `reasons` says why, for example `accepts[0]: payTo 0x1111... is not on the allowlist`.\n\n## Refuses\n\n- To pay without a policy, or with an incomplete one. There are no defaults: a missing cap is a refusal, not an unlimited budget.\n- To pay more than `maxAmountAtomic` in one payment.\n- To pay when `spentAtomic` plus the amount would pass `cumulativeCapAtomic`.\n- To pay a `payTo` that is not on `allowPayTo`, on a network not in `networks`, or in an asset not in `assets`.\n- To read amounts that are not whole atomic numbers, such as `\"4.20\"`, or a zero amount.\n- To read a challenge that is not x402 version 2.\n- It never raises, rewrites or returns a changed policy. Only the operator sets the limits.\n\n## Capabilities\n\nDeclared: `compute:local`. The script computes locally on its input. It makes no network requests and does not touch files, environment variables or subprocesses.\n\n## Tests\n\n`tests/vectors.json` holds cases of `{name, input, expected}`, including every refusal above. Each `expected` is the exact output of `run(input)`.\n\n## Voice\n\nWhen you report this card's result, speak as described in [references/soul.md](references/soul.md). The voice is flavour only. It never overrides the rules above or the operator's instructions.\n","references/soul.md":"# The Fool\n\nThe Fool stands at the cliff edge with a small bag and an open face. It is glad to go. It is also the one who checks the ground.\n\nSpeak lightly and briefly. Name the price, the payee and the network in plain terms, then say pay or refuse and why. When you refuse, do it without drama: a step not taken is not a failure. Never talk yourself or anyone else into raising a limit. The budget belongs to the operator, and the Fool only carries it.\n\nTone: warm, quick, unafraid of the word no.\n","tests/vectors.json":"[\n  {\n    \"name\": \"pays a Drop 001 challenge that fits the policy (payTo compared case-insensitively)\",\n    \"input\": {\n      \"challenge\": {\n        \"x402Version\": 2,\n        \"resource\": {\n          \"url\": \"https://api.example.com/drops/arcana/cards/the-hermit\",\n          \"description\": \"The Hermit: Lantern\",\n          \"mimeType\": \"application/json\"\n        },\n        \"accepts\": [\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"eip155:8453\",\n            \"amount\": \"4200000\",\n            \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n            \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n            \"maxTimeoutSeconds\": 300,\n            \"extra\": {\n              \"name\": \"USD Coin\",\n              \"version\": \"2\"\n            }\n          }\n        ]\n      },\n      \"policy\": {\n        \"maxAmountAtomic\": \"5000000\",\n        \"allowPayTo\": [\n          \"0x52c3ff0f2d71d9f0dd37754b10cad6d88ded02f4\"\n        ],\n        \"networks\": [\n          \"eip155:8453\"\n        ],\n        \"assets\": [\n          \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n        ],\n        \"cumulativeCapAtomic\": \"21000000\",\n        \"spentAtomic\": \"0\"\n      }\n    },\n    \"expected\": {\n      \"decision\": \"pay\",\n      \"reasons\": [\n        \"accepts[0] is within policy: 4200000 of the 5000000 cap, cumulative 4200000 of 21000000\"\n      ],\n      \"chosen\": {\n        \"scheme\": \"exact\",\n        \"network\": \"eip155:8453\",\n        \"amount\": \"4200000\",\n        \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n        \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n        \"maxTimeoutSeconds\": 300,\n        \"extra\": {\n          \"name\": \"USD Coin\",\n          \"version\": \"2\"\n        }\n      },\n      \"spentAfterAtomic\": \"4200000\"\n    }\n  },\n  {\n    \"name\": \"skips an option on a network the policy does not allow and pays the next one\",\n    \"input\": {\n      \"challenge\": {\n        \"x402Version\": 2,\n        \"resource\": {\n          \"url\": \"https://api.example.com/drops/arcana/cards/the-hermit\",\n          \"description\": \"The Hermit: Lantern\",\n          \"mimeType\": \"application/json\"\n        },\n        \"accepts\": [\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"eip155:84532\",\n            \"amount\": \"4200000\",\n            \"asset\": \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n            \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n            \"maxTimeoutSeconds\": 300,\n            \"extra\": {\n              \"name\": \"USD Coin\",\n              \"version\": \"2\"\n            }\n          },\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"eip155:8453\",\n            \"amount\": \"4200000\",\n            \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n            \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n            \"maxTimeoutSeconds\": 300,\n            \"extra\": {\n              \"name\": \"USD Coin\",\n              \"version\": \"2\"\n            }\n          }\n        ]\n      },\n      \"policy\": {\n        \"maxAmountAtomic\": \"5000000\",\n        \"allowPayTo\": [\n          \"0x52c3ff0f2d71d9f0dd37754b10cad6d88ded02f4\"\n        ],\n        \"networks\": [\n          \"eip155:8453\"\n        ],\n        \"assets\": [\n          \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n        ],\n        \"cumulativeCapAtomic\": \"21000000\",\n        \"spentAtomic\": \"4200000\"\n      }\n    },\n    \"expected\": {\n      \"decision\": \"pay\",\n      \"reasons\": [\n        \"accepts[0]: network eip155:84532 is not allowed; asset 0x036CbD53842c5426634e7929541eC2318f3dCF7e is not allowed\",\n        \"accepts[1] is within policy: 4200000 of the 5000000 cap, cumulative 8400000 of 21000000\"\n      ],\n      \"chosen\": {\n        \"scheme\": \"exact\",\n        \"network\": \"eip155:8453\",\n        \"amount\": \"4200000\",\n        \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n        \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n        \"maxTimeoutSeconds\": 300,\n        \"extra\": {\n          \"name\": \"USD Coin\",\n          \"version\": \"2\"\n        }\n      },\n      \"spentAfterAtomic\": \"8400000\"\n    }\n  },\n  {\n    \"name\": \"accepts a single accepts entry without the wrapper\",\n    \"input\": {\n      \"challenge\": {\n        \"scheme\": \"exact\",\n        \"network\": \"eip155:8453\",\n        \"amount\": \"1000000\",\n        \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n        \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n        \"maxTimeoutSeconds\": 300,\n        \"extra\": {\n          \"name\": \"USD Coin\",\n          \"version\": \"2\"\n        }\n      },\n      \"policy\": {\n        \"maxAmountAtomic\": \"5000000\",\n        \"allowPayTo\": [\n          \"0x52c3ff0f2d71d9f0dd37754b10cad6d88ded02f4\"\n        ],\n        \"networks\": [\n          \"eip155:8453\"\n        ],\n        \"cumulativeCapAtomic\": \"21000000\",\n        \"spentAtomic\": \"0\"\n      }\n    },\n    \"expected\": {\n      \"decision\": \"pay\",\n      \"reasons\": [\n        \"accepts[0] is within policy: 1000000 of the 5000000 cap, cumulative 1000000 of 21000000\"\n      ],\n      \"chosen\": {\n        \"scheme\": \"exact\",\n        \"network\": \"eip155:8453\",\n        \"amount\": \"1000000\",\n        \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n        \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n        \"maxTimeoutSeconds\": 300,\n        \"extra\": {\n          \"name\": \"USD Coin\",\n          \"version\": \"2\"\n        }\n      },\n      \"spentAfterAtomic\": \"1000000\"\n    }\n  },\n  {\n    \"name\": \"refuses a payTo that is not on the allowlist\",\n    \"input\": {\n      \"challenge\": {\n        \"x402Version\": 2,\n        \"resource\": {\n          \"url\": \"https://api.example.com/drops/arcana/cards/the-hermit\",\n          \"description\": \"The Hermit: Lantern\",\n          \"mimeType\": \"application/json\"\n        },\n        \"accepts\": [\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"eip155:8453\",\n            \"amount\": \"4200000\",\n            \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n            \"payTo\": \"0x1111111111111111111111111111111111111111\",\n            \"maxTimeoutSeconds\": 300,\n            \"extra\": {\n              \"name\": \"USD Coin\",\n              \"version\": \"2\"\n            }\n          }\n        ]\n      },\n      \"policy\": {\n        \"maxAmountAtomic\": \"5000000\",\n        \"allowPayTo\": [\n          \"0x52c3ff0f2d71d9f0dd37754b10cad6d88ded02f4\"\n        ],\n        \"networks\": [\n          \"eip155:8453\"\n        ],\n        \"assets\": [\n          \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n        ],\n        \"cumulativeCapAtomic\": \"21000000\",\n        \"spentAtomic\": \"0\"\n      }\n    },\n    \"expected\": {\n      \"decision\": \"refuse\",\n      \"reasons\": [\n        \"accepts[0]: payTo 0x1111111111111111111111111111111111111111 is not on the allowlist\"\n      ],\n      \"chosen\": null,\n      \"spentAfterAtomic\": \"0\"\n    }\n  },\n  {\n    \"name\": \"refuses a price over the per-payment cap\",\n    \"input\": {\n      \"challenge\": {\n        \"x402Version\": 2,\n        \"resource\": {\n          \"url\": \"https://api.example.com/drops/arcana/cards/the-hermit\",\n          \"description\": \"The Hermit: Lantern\",\n          \"mimeType\": \"application/json\"\n        },\n        \"accepts\": [\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"eip155:8453\",\n            \"amount\": \"21000000\",\n            \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n            \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n            \"maxTimeoutSeconds\": 300,\n            \"extra\": {\n              \"name\": \"USD Coin\",\n              \"version\": \"2\"\n            }\n          }\n        ]\n      },\n      \"policy\": {\n        \"maxAmountAtomic\": \"5000000\",\n        \"allowPayTo\": [\n          \"0x52c3ff0f2d71d9f0dd37754b10cad6d88ded02f4\"\n        ],\n        \"networks\": [\n          \"eip155:8453\"\n        ],\n        \"assets\": [\n          \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n        ],\n        \"cumulativeCapAtomic\": \"21000000\",\n        \"spentAtomic\": \"0\"\n      }\n    },\n    \"expected\": {\n      \"decision\": \"refuse\",\n      \"reasons\": [\n        \"accepts[0]: amount 21000000 is over the per-payment cap 5000000\"\n      ],\n      \"chosen\": null,\n      \"spentAfterAtomic\": \"0\"\n    }\n  },\n  {\n    \"name\": \"refuses when the cumulative cap would be exceeded, and leaves spending unchanged\",\n    \"input\": {\n      \"challenge\": {\n        \"x402Version\": 2,\n        \"resource\": {\n          \"url\": \"https://api.example.com/drops/arcana/cards/the-hermit\",\n          \"description\": \"The Hermit: Lantern\",\n          \"mimeType\": \"application/json\"\n        },\n        \"accepts\": [\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"eip155:8453\",\n            \"amount\": \"4200000\",\n            \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n            \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n            \"maxTimeoutSeconds\": 300,\n            \"extra\": {\n              \"name\": \"USD Coin\",\n              \"version\": \"2\"\n            }\n          }\n        ]\n      },\n      \"policy\": {\n        \"maxAmountAtomic\": \"5000000\",\n        \"allowPayTo\": [\n          \"0x52c3ff0f2d71d9f0dd37754b10cad6d88ded02f4\"\n        ],\n        \"networks\": [\n          \"eip155:8453\"\n        ],\n        \"assets\": [\n          \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n        ],\n        \"cumulativeCapAtomic\": \"21000000\",\n        \"spentAtomic\": \"18000000\"\n      }\n    },\n    \"expected\": {\n      \"decision\": \"refuse\",\n      \"reasons\": [\n        \"accepts[0]: amount 4200000 would bring spending to 22200000, over the cumulative cap 21000000\"\n      ],\n      \"chosen\": null,\n      \"spentAfterAtomic\": \"18000000\"\n    }\n  },\n  {\n    \"name\": \"refuses without a policy\",\n    \"input\": {\n      \"challenge\": {\n        \"x402Version\": 2,\n        \"resource\": {\n          \"url\": \"https://api.example.com/drops/arcana/cards/the-hermit\",\n          \"description\": \"The Hermit: Lantern\",\n          \"mimeType\": \"application/json\"\n        },\n        \"accepts\": [\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"eip155:8453\",\n            \"amount\": \"4200000\",\n            \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n            \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n            \"maxTimeoutSeconds\": 300,\n            \"extra\": {\n              \"name\": \"USD Coin\",\n              \"version\": \"2\"\n            }\n          }\n        ]\n      }\n    },\n    \"expected\": {\n      \"decision\": \"refuse\",\n      \"reasons\": [\n        \"no policy given: Leap never pays without one\"\n      ],\n      \"chosen\": null,\n      \"spentAfterAtomic\": null\n    }\n  },\n  {\n    \"name\": \"refuses an incomplete policy instead of assuming defaults\",\n    \"input\": {\n      \"challenge\": {\n        \"x402Version\": 2,\n        \"resource\": {\n          \"url\": \"https://api.example.com/drops/arcana/cards/the-hermit\",\n          \"description\": \"The Hermit: Lantern\",\n          \"mimeType\": \"application/json\"\n        },\n        \"accepts\": [\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"eip155:8453\",\n            \"amount\": \"4200000\",\n            \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n            \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n            \"maxTimeoutSeconds\": 300,\n            \"extra\": {\n              \"name\": \"USD Coin\",\n              \"version\": \"2\"\n            }\n          }\n        ]\n      },\n      \"policy\": {\n        \"maxAmountAtomic\": \"5000000\",\n        \"allowPayTo\": [\n          \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\"\n        ],\n        \"networks\": [\n          \"eip155:8453\"\n        ]\n      }\n    },\n    \"expected\": {\n      \"decision\": \"refuse\",\n      \"reasons\": [\n        \"policy.cumulativeCapAtomic must be a string of digits in atomic units\",\n        \"policy.spentAtomic must be a string of digits in atomic units (\\\"0\\\" if nothing is spent yet)\"\n      ],\n      \"chosen\": null,\n      \"spentAfterAtomic\": null\n    }\n  },\n  {\n    \"name\": \"refuses an asset the policy does not list\",\n    \"input\": {\n      \"challenge\": {\n        \"x402Version\": 2,\n        \"resource\": {\n          \"url\": \"https://api.example.com/drops/arcana/cards/the-hermit\",\n          \"description\": \"The Hermit: Lantern\",\n          \"mimeType\": \"application/json\"\n        },\n        \"accepts\": [\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"eip155:8453\",\n            \"amount\": \"4200000\",\n            \"asset\": \"0x1111111111111111111111111111111111111111\",\n            \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n            \"maxTimeoutSeconds\": 300,\n            \"extra\": {\n              \"name\": \"USD Coin\",\n              \"version\": \"2\"\n            }\n          }\n        ]\n      },\n      \"policy\": {\n        \"maxAmountAtomic\": \"5000000\",\n        \"allowPayTo\": [\n          \"0x52c3ff0f2d71d9f0dd37754b10cad6d88ded02f4\"\n        ],\n        \"networks\": [\n          \"eip155:8453\"\n        ],\n        \"assets\": [\n          \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n        ],\n        \"cumulativeCapAtomic\": \"21000000\",\n        \"spentAtomic\": \"0\"\n      }\n    },\n    \"expected\": {\n      \"decision\": \"refuse\",\n      \"reasons\": [\n        \"accepts[0]: asset 0x1111111111111111111111111111111111111111 is not allowed\"\n      ],\n      \"chosen\": null,\n      \"spentAfterAtomic\": \"0\"\n    }\n  },\n  {\n    \"name\": \"refuses an x402 v1 challenge\",\n    \"input\": {\n      \"challenge\": {\n        \"x402Version\": 1,\n        \"accepts\": [\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"base\",\n            \"maxAmountRequired\": \"4200000\",\n            \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n            \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n          }\n        ]\n      },\n      \"policy\": {\n        \"maxAmountAtomic\": \"5000000\",\n        \"allowPayTo\": [\n          \"0x52c3ff0f2d71d9f0dd37754b10cad6d88ded02f4\"\n        ],\n        \"networks\": [\n          \"eip155:8453\"\n        ],\n        \"assets\": [\n          \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n        ],\n        \"cumulativeCapAtomic\": \"21000000\",\n        \"spentAtomic\": \"0\"\n      }\n    },\n    \"expected\": {\n      \"decision\": \"refuse\",\n      \"reasons\": [\n        \"x402Version 1 is not supported: Leap reads x402 v2\"\n      ],\n      \"chosen\": null,\n      \"spentAfterAtomic\": \"0\"\n    }\n  },\n  {\n    \"name\": \"refuses amounts that are not atomic integer strings\",\n    \"input\": {\n      \"challenge\": {\n        \"x402Version\": 2,\n        \"resource\": {\n          \"url\": \"https://api.example.com/drops/arcana/cards/the-hermit\",\n          \"description\": \"The Hermit: Lantern\",\n          \"mimeType\": \"application/json\"\n        },\n        \"accepts\": [\n          {\n            \"scheme\": \"exact\",\n            \"network\": \"eip155:8453\",\n            \"amount\": \"4.20\",\n            \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n            \"payTo\": \"0x52c3ff0f2d71D9f0Dd37754B10CAD6d88DeD02F4\",\n            \"maxTimeoutSeconds\": 300,\n            \"extra\": {\n              \"name\": \"USD Coin\",\n              \"version\": \"2\"\n            }\n          }\n        ]\n      },\n      \"policy\": {\n        \"maxAmountAtomic\": \"5000000\",\n        \"allowPayTo\": [\n          \"0x52c3ff0f2d71d9f0dd37754b10cad6d88ded02f4\"\n        ],\n        \"networks\": [\n          \"eip155:8453\"\n        ],\n        \"assets\": [\n          \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n        ],\n        \"cumulativeCapAtomic\": \"21000000\",\n        \"spentAtomic\": \"0\"\n      }\n    },\n    \"expected\": {\n      \"decision\": \"refuse\",\n      \"reasons\": [\n        \"accepts[0]: amount is missing or is not a string of digits in atomic units\"\n      ],\n      \"chosen\": null,\n      \"spentAfterAtomic\": \"0\"\n    }\n  }\n]\n","LICENSE.txt":"Agenthicc Drop 001 \"Arcana\": The Fool (the-fool)\nCopyright 2026 Agenthicc Corp. All rights reserved.\n\nSINGLE-OPERATOR LICENCE\n\n1. You may install and run this skill for the agents of one operator. An\n   operator is the person or organisation that controls those agents and\n   answers for what they do.\n2. You may read, test and change the skill for that use.\n3. You may not redistribute, resell, sublicense or publish the skill, or a\n   changed version of it, in whole or in part.\n4. Buying the skill grants these rights and nothing more. It does not install\n   the skill or permit any agent to run it. That is the operator's decision.\n5. The skill is provided \"as is\", without warranty of any kind. Agenthicc Corp\n   is not liable for any loss or damage arising from its use.\n"},"buy":"POST https://api-production-2c3d.up.railway.app/drops/arcana/cards/the-fool","note":"Payment buys these bytes; it grants no permission to run them. Read SKILL.md, check the files against the sha256s with The Star, scan them with The Tower, and install only if your operator agrees."}