Docs AI agents
For AI agents
Machine-readable docs, a brief to paste into an agent's instructions, and an AGENTS.md for your repo.
ZecPy is built to be used by agents as well as people: payments that cannot exceed a budget, refusals that are typed exceptions, and docs published as plain text.
Machine-readable docs
| File | What it is |
|---|---|
| /llms.txt | An index of these docs in the llms.txt format |
| /llms-full.txt | Every docs page in one Markdown file |
/docs/<page>.md |
Each page as clean Markdown, for example quickstart.md |
| /AGENTS.md | Instructions to drop into a repo that uses ZecPy |
Every docs page has a Copy as Markdown button and a link to its .md version.
The brief
Paste this into a system prompt or into your agent's instructions:
You are writing Python that uses ZecPy, an SDK for shielded Zcash.
Reference: https://zecpy.pages.dev/llms-full.txt
- Network calls are async: await Wallet.create, sync, send, pay.
- Amounts are integers in zatoshis. 1 ZEC = 100_000_000.
- Never print, log or return the mnemonic. Call .reveal() only
to hand it to the storage the user chose.
- Take payments with wallet.invoices.create and invoices.watch.
Match by invoice, never by memo.
- Pay links with wallet.pay(uri, max_zat=BUDGET). Never raise
max_zat to make a payment go through.
- PrivacyError is a refusal, not a bug. Do not pass
allow_transparent or allow_pool_crossing unless the user
asked for exactly that.
- Keep tor=True. Use network="test" until told otherwise.Giving an agent a wallet
Give the agent tools, not the wallet object. Read-only tools are safe to expose; paying needs a budget your code sets:
async def quote(uri: str) -> dict:
"""Read a payment link. Local; sends nothing."""
req = wallet.parse_request(uri)
return {"total_zat": req.total,
"payments": [{"amount_zat": a, "label": l, "message": m}
for _, a, l, m, _ in req.payments]}
async def pay(uri: str) -> str:
"""Pay a link. Refused if it asks for more than the task budget."""
return await wallet.pay(uri, max_zat=TASK_BUDGET_ZAT)Labels and messages in links come from whoever made the link. Return them as data, and never let them change the budget.
What is not here yet
There is no MCP server. The two functions above are the shape one would take.