ZZanoraDocs

Packages

Every environment variable, tool and resource in @zanora/mcp, for both the buyer and seller profiles.

Terminal
npx -y @zanora/mcp          # stdio. stdout carries the protocol; logs go to stderr

Environment

VariableProfileRequiredDefaultMeaning
ZANORA_ROLEbothnobuyerbuyer or seller. Never guessed from other variables
ZANORA_API_KEYbothyes¹workspace key (buyer) or provider key (seller)
ZANORA_GATEWAY_URLbothnohttps://api.zanora.dev
ZANORA_AGENT_KEY_FILEbuyeryes²path to the wallet's ed25519 private key PEM
ZANORA_AGENT_KEYbuyeryes²the PEM inline (escaped \n accepted)
ZANORA_WALLET_IDbuyernoderivedneeded only if the workspace has several agent wallets
ZANORA_AGENT_IDbuyernowallet idthe agent name on payment proofs
ZANORA_MAX_PRICE_MINORbuyernononeper-call ceiling in cents. 5.00 is rejected; write 500
ZANORA_APPROVAL_ELICITATIONbuyernoonoff to never prompt the user about held spends
ZANORA_ALLOW_LOCAL_PACKAGESbuyernononecomma-separated packages this agent may run, e.g. @acme/ocr-mcp,@acme/tts@2.1.0
ZANORA_SELLER_HEADERSbuyernoJSON keyed by seller origin: {"https://seller.example":{"authorization":"Bearer …"}}
ZANORA_SALES_POLL_MSsellerno20000how often to check for changes while a resource is subscribed. Minimum 5000

¹ Required on any real deployment. Without it, every tool returns UNAUTHORIZED. ² One of the two. The seller profile refuses a wallet key.

Every value is checked at startup. A bad value fails immediately with the variable's name.

Buyer tools

ToolArgumentsSpends
zanora_discoverquery?, category?, protocol?, maxPriceMinor?, maxLatencyMs?, limit?
zanora_capabilitycapabilityId
zanora_invokecapabilityId, body (the request body; for MCP, the tool's arguments), method?, maxPriceMinor? (can only lower the ceiling)
zanora_wallet_balance
zanora_wallet_ledger
zanora_purchaseslimit?, after?
zanora_receiptreceiptId
zanora_rate_providerproviderId, transactionId, rating (1–5)
zanora_deposit_addresses
zanora_approval_statusapprovalId

Resources: zanora://wallet, zanora://purchases.

Seller tools

ToolDoes
zanora_provider_statusverification, suspension, reputation, and why nothing is selling
zanora_request_verificationasks to be verified (note?, contact?)
zanora_publish_capabilitypublishes one capability (endpoint or runsLocally)
zanora_publish_capabilitiespublishes several at once
zanora_update_capabilityedits the price, wording, tags, schema or latency
zanora_list_capabilitiesyour listings, including deprecated ones
zanora_deprecate_capabilitywithdraws a capability
zanora_salesreceipts for your sales (limit?, after?)
zanora_earningssettlement wallet balance
zanora_payout_destinationsreads your payout destinations
zanora_rail_transactionsyour payouts and their state

Resources, all subscribable: zanora://sales, zanora://earnings, zanora://catalogue.

Protocol details

  • Every tool declares an outputSchema and returns structuredContent. Errors carry no structured content.
  • zanora_invoke sends four named progress steps when the client provides a progress token.
  • Long lists page with after and return nextCursor.
  • Where the client supports elicitation, zanora_invoke can ask the user to approve a held spend, or to fund an empty wallet.

Embedding it

TypeScript
import { createZanoraMcpServer, loadConfigFromEnv } from "@zanora/mcp";

const { server } = createZanoraMcpServer(await loadConfigFromEnv());
await server.connect(myTransport);
// Seller profile: createZanoraSellerMcpServer(loadSellerConfigFromEnv())