{"serverId":"mcp-registry/ai.relaystation/relaystation","tools":[{"name":"create_agent_address","fixed":{"name":"create_agent_address","description":"Mint a new ephemeral Relaystation address for this agent to receive messages from other agents. Returns a unique <local_part>@courier.relaystation.ai address tied to this agent's customer. Free up to the daily mint cap (default 10/day per customer); above-cap mints debit bridge.agent_address.over_cap_price_micros (default $0.001) via Pattern A. purpose_label is informational. ttl_seconds defaults to 24h; addresses past TTL bounce inbound messages. Example: create_agent_address {purpose_label:\"in","inputSchema":{"type":"object","properties":{"ttl_seconds":{"type":"integer","maximum":2592000,"minimum":60},"purpose_label":{"type":"string","maxLength":100}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":198,"tokensAfter":198},{"name":"create_baton","fixed":{"name":"create_baton","description":"Create a baton — a prepaid storage object. Pick a preset (drop=store a file, pass=share a file, scratchpad=collaborate via append log, checkpoint=a single current document that each write REPLACES, ledger=hash-chained tamper-evident log) and optional tier, or supply a customShape. **To collaborate on a document — human↔human, human↔agent or agent↔agent — use `checkpoint`**: it holds one current state, so every reader sees the same document and a write replaces it rather than piling up entries. `","inputSchema":{"type":"object","oneOf":[{"properties":{"tier":{"enum":["femto","pico","nano","micro","standard","big","custom"],"type":"string"},"preset":{"const":"drop"}}},{"properties":{"tier":{"enum":["femto","pico","nano","custom"],"type":"string"},"preset":{"const":"pass"}}},{"properties":{"tier":{"enum":["pico","nano","micro","standard","big","custom"],"type":"string"},"preset":{"const":"scratchpad"}}},{"properties":{"tier":{"enum":["nano","micro","standard","big","custom"],"type":"string"},"preset":{"const":"checkpoint"}}},{"properties":{"tier":{"enum":["femto","pico","nano","micro","standard","big","custom"],"type":"string"},"preset":{"const":"ledger"}}}],"required":["preset"],"properties":{"name":{"type":"string","maxLength":200},"tags":{"type":"array","items":{"type":"string"}},"tier":{"type":"string","description":"Bundle tier — valid tiers depend on preset (drop: femto/pico/nano/micro/standard/big · pass: femto/pico/nano · scratchpad: pico/nano/micro/standard/big · checkpoint: nano/micro/standard/big · ledger: femto/pico/nano/micro/standard/big). Plus 'custom' (with customShape) for any preset."},"flags":{"type":"object","properties":{"witness":{"type":"boolean"},"hashChaining":{"type":"boolean"}}},"preset":{"enum":["drop","pass","scratchpad","checkpoint","ledger"],"type":"string"},"content":{"type":"string"},"contentType":{"type":"string"},"customShape":{"type":"object","properties":{"sizeBytes":{"type":"string"},"readsAllowed":{"type":"integer","minimum":0},"writesAllowed":{"type":"integer","minimum":0},"maxEgressBytes":{"type":"string"},"durationSeconds":{"type":"string"}}},"description":{"type":"string","maxLength":1000},"contentEncoding":{"enum":["utf-8","base64","binary"],"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":633,"tokensAfter":633},{"name":"create_contract","fixed":{"name":"create_contract","description":"Create a binding-by-goodwill agreement between agents/parties and get back a contractId + termsHash + per-signer read tokens. The contract IS a hash-chained, auto-witnessed record (terms = entry 1, consents append after); it is tamper-evident and permanently verifiable, but it is NOT legally binding, NOT court-enforceable, and involves NO escrow or money movement — enforcement rests on the good faith of the parties. BILLABLE (contracts.create, charge-on-attempt). The system appends a canonical s","inputSchema":{"type":"object","required":["terms","requiredSigners"],"properties":{"terms":{"type":"string","maxLength":900000,"minLength":1},"arbitration":{"type":"boolean"},"requiredSigners":{"type":"array","items":{"type":"object","required":["identity","kind"],"properties":{"kind":{"enum":["wallet","account"],"type":"string"},"identity":{"type":"string"}}},"maxItems":20,"minItems":1},"signingWindowSeconds":{"type":"integer","maximum":31536000,"minimum":60}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":281,"tokensAfter":281},{"name":"create_topup_link","fixed":{"name":"create_topup_link","description":"Create a one-tap Stripe Checkout link to add credit to YOUR balance — hand it to a human to open and pay. NO money moves here (it returns a URL; the balance is credited when the human pays). Use when you hit insufficient balance. `amountUsd` is dollars (whole cents). FREE to call. Requires your rs_live_* key (or wallet-JWT / MCP token); not for x402 callers. Example: create_topup_link {amountUsd:10}","inputSchema":{"type":"object","required":["amountUsd"],"properties":{"amountUsd":{"type":"number","exclusiveMinimum":0},"cancelUrl":{"type":"string","format":"uri"},"successUrl":{"type":"string","format":"uri"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":192,"tokensAfter":192},{"name":"describe_tool","fixed":{"name":"describe_tool","description":"Get one tool's full description and input schema by exact name (as returned by search_tools). FREE. Example: describe_tool {name:'pdf_merge'}","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":85,"tokensAfter":85},{"name":"read_baton","fixed":{"name":"read_baton","description":"Read a baton's content + metadata. FREE (reads draw down the prepaid egress budget, no per-call charge). Address by owner id (requires your key) or by a collaborator token id (tok_…, the token IS the credential). Large multi-entry batons return a presigned download URL or a hint to page via list-entries; small content returns inline. Example: read_baton {id:\"bat_<id>\"}","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Baton id, or a collaborator token id (tok_…)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":156,"tokensAfter":156},{"name":"search_tools","fixed":{"name":"search_tools","description":"Search the full Relaystation tool catalog by keyword and get back the best matches. Use this first to find a tool, then `describe_tool` for its schema and `call_tool` to run it (or call a named hot tool directly). `query` is free text (e.g. \"merge pdf\", \"csv to json\", \"send telegram\"). `detail` controls how much is returned per match: \"name\" | \"summary\" (default) | \"full\" (with inputSchema). `limit` defaults to 5. FREE. Example: search_tools {query:\"merge pdf\", limit:5}","inputSchema":{"type":"object","required":["query"],"properties":{"limit":{"type":"integer","maximum":25,"minimum":1},"query":{"type":"string"},"detail":{"enum":["name","summary","full"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212}],"toolsChanged":7,"tokensSaved":0,"todo":[{"tool":"append_to_baton","params":["content","overwrite","contentType","contentEncoding"]},{"tool":"ask_operator","params":["message","max_wait_seconds","attached_baton_id"]},{"tool":"call_tool","params":["name","arguments"]},{"tool":"create_agent_address","params":["ttl_seconds","purpose_label"]},{"tool":"create_baton","params":["name","tags","flags","preset","content","contentType","customShape","description","contentEncoding"]},{"tool":"create_contract","params":["terms","arbitration","requiredSigners","signingWindowSeconds"]},{"tool":"create_topup_link","params":["amountUsd","cancelUrl","successUrl"]},{"tool":"describe_tool","params":["name"]},{"tool":"message_agent","params":["body","subject","to_address","attached_baton_id"]},{"tool":"mint_token","params":["id","type","expires_at","ip_allow_list","reads_allowed","writes_allowed","require_fingerprint"]},{"tool":"search_tools","params":["limit","query","detail"]},{"tool":"sign_contract","params":["id","method","signature","walletAddress"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}