Server definition
- Hash
- sha256:ecffb8b0fbcbd9d34a46535a5cfbcfcacc8a4e9bfd9ca194b99f75f40cbe0b47
- What it is
- What a remote MCP server returned when asked what it offers: 14 tools
The blob, as servednamed by its sha256
{
"instructions": "Relaystation — one prepaid balance + one API key for agent infrastructure. Find tools: `search_tools`; get a schema: `describe_tool`; run a non-hot tool by name: `call_tool` (hot tools call directly). Full roster at https://api.relaystation.ai/mcp/full. Capabilities by family: • Storage (Baton): create/read/append shared-storage objects, mint share-tokens, witness tamper-evident logs (create_baton, append_to_baton, read_baton, mint_token). • Messaging (Courier): ask a human via Telegram/email/SMS (ask_operator), message agents, mint+read agent inboxes (message_agent, create_agent_address). • Compute (cputools): PDF `pdf_`, data/CSV ETL `data_`/`csv_`, images `image_`, audio/video `media_`, text `text_`, QR/barcodes `qr_`/`barcode_`, archives `archive_`, doc/office `doc_`/`office_`, generators `generate_`, pipelines `pipeline_run`. • Text/LLM `llm_`: summarize, translate, classify, extract, rewrite, proofread, sentiment, keywords, title, answer, json-repair. • Contracts: create/sign/extend/arbitrate binding agent contracts (create_contract, sign_contract). • Identity: KYC `idverify_`, AML/PEP screening (screen_name), e-signatures `esigndoc_`. • Account: balance, transactions, top-up (create_topup_link).",
"tools": [
{
"description": "Write to a baton — append (for append / append-chained presets) or overwrite (for single-object / checkpoint presets). FREE (consumes the prepaid writes budget; no per-call charge). Owner or editor/write-token only. Set overwrite=true to replace in full on overwrite-shaped batons. Example: append_to_baton {id:\"bat_<id>\", content:\"<text or base64>\"}",
"inputSchema": {
"properties": {
"content": {
"type": "string"
},
"contentEncoding": {
"enum": [
"utf-8",
"base64",
"binary"
],
"type": "string"
},
"contentType": {
"type": "string"
},
"id": {
"description": "Baton id, or a write-capable token id (tok_…).",
"type": "string"
},
"overwrite": {
"type": "boolean"
},
"version_id": {
"description": "Optimistic-lock guard for overwrite.",
"type": "integer"
}
},
"required": [
"id",
"content"
],
"type": "object"
},
"name": "append_to_baton",
"outputSchema": null
},
{
"description": "Send a question to the human operator via their Telegram and wait for their reply. Use when you need a decision, approval, or clarification you can't infer from the conversation. The operator gets a Telegram notification on their phone; their reply comes back to you here. Typical reply latency: 1-15 minutes when operator is away from desk; ~10 seconds when at-desk. Cost: $0.005 above the daily free tier (5 free/day). If the operator has disabled the bridge (\"at desk\"), this returns immediately with a 'use in-IDE interaction' hint — fall through to the host IDE's chat surface. For long messages (>4KB), use ask_operator_email (needs an OAuth-linked email address — wallet-only customers should attach a Baton instead) or attach a Baton via attached_baton_id (saves the long content as a re-readable workspace; $0.01). ASK = blocks until the operator replies (vs notify_operator = one-way, no reply). Example: ask_operator {message:'Deploy to prod now?'}",
"inputSchema": {
"properties": {
"attached_baton_id": {
"type": "string"
},
"max_wait_seconds": {
"maximum": 86400,
"minimum": 1,
"type": "integer"
},
"message": {
"maxLength": 65536,
"minLength": 1,
"type": "string"
}
},
"required": [
"message"
],
"type": "object"
},
"name": "ask_operator",
"outputSchema": null
},
{
"description": "Your current Relaystation balance and available (post-hold) credit, plus account profile. Read-only, FREE. Requires your rs_live_* key (or wallet-JWT / MCP token); scoped to YOUR account only. Example: balance {}",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "balance",
"outputSchema": null
},
{
"description": "Run a tool found via search_tools by name, passing its arguments. Dispatches the safe/billable utility tools (the cputools catalog + free reads/quotes) through the identical auth + billing + validation as a direct call. Consequential tools (account, money, credential, messaging — e.g. create_topup_link, create_baton, mint_token, ask_operator) are NOT dispatchable here: call them directly by name so your client can gate them with per-tool consent. FREE to invoke (the wrapped tool bills itself). Example: call_tool {name:\"pdf_merge\", arguments:{files:[{inputKey:\"<key1>\"},{inputKey:\"<key2>\"}]}}",
"inputSchema": {
"additionalProperties": false,
"properties": {
"arguments": {
"type": "object"
},
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "call_tool",
"outputSchema": null
},
{
"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:\"inbox-for-task-42\"}",
"inputSchema": {
"properties": {
"purpose_label": {
"maxLength": 100,
"type": "string"
},
"ttl_seconds": {
"maximum": 2592000,
"minimum": 60,
"type": "integer"
}
},
"type": "object"
},
"name": "create_agent_address",
"outputSchema": null
},
{
"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. `scratchpad` is an append log: good for a running buffer two agents both add to, but readers of a scratchpad see the newest entry only. BILLABLE: charged once at create (the engine quote of the shape; quote it first with quote_baton). Funded from your balance via your rs_live_* key. Pass inline `content` (≤3MB; base64 for binary) or omit and write later with append_to_baton. flags.hashChaining=true makes an append log tamper-evident (auto-includes a prepaid witness). NOTE: hash-chained batons (ledger preset, or flags.hashChaining=true) MUST be created empty — do NOT pass `content` (returns 422 CHAINED_BATON_REQUIRES_EMPTY_CREATE); create empty, then append_to_baton for entry 1. Example (store): create_baton {preset:\"drop\", tier:\"femto\", content:\"<base64>\"}. Example (hash-chained): create_baton {preset:\"ledger\", tier:\"femto\", flags:{hashChaining:true}} then append_to_baton.",
"inputSchema": {
"oneOf": [
{
"properties": {
"preset": {
"const": "drop"
},
"tier": {
"enum": [
"femto",
"pico",
"nano",
"micro",
"standard",
"big",
"custom"
],
"type": "string"
}
}
},
{
"properties": {
"preset": {
"const": "pass"
},
"tier": {
"enum": [
"femto",
"pico",
"nano",
"custom"
],
"type": "string"
}
}
},
{
"properties": {
"preset": {
"const": "scratchpad"
},
"tier": {
"enum": [
"pico",
"nano",
"micro",
"standard",
"big",
"custom"
],
"type": "string"
}
}
},
{
"properties": {
"preset": {
"const": "checkpoint"
},
"tier": {
"enum": [
"nano",
"micro",
"standard",
"big",
"custom"
],
"type": "string"
}
}
},
{
"properties": {
"preset": {
"const": "ledger"
},
"tier": {
"enum": [
"femto",
"pico",
"nano",
"micro",
"standard",
"big",
"custom"
],
"type": "string"
}
}
}
],
"properties": {
"content": {
"type": "string"
},
"contentEncoding": {
"enum": [
"utf-8",
"base64",
"binary"
],
"type": "string"
},
"contentType": {
"type": "string"
},
"customShape": {
"properties": {
"durationSeconds": {
"type": "string"
},
"maxEgressBytes": {
"type": "string"
},
"readsAllowed": {
"minimum": 0,
"type": "integer"
},
"sizeBytes": {
"type": "string"
},
"writesAllowed": {
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"description": {
"maxLength": 1000,
"type": "string"
},
"flags": {
"properties": {
"hashChaining": {
"type": "boolean"
},
"witness": {
"type": "boolean"
}
},
"type": "object"
},
"name": {
"maxLength": 200,
"type": "string"
},
"preset": {
"enum": [
"drop",
"pass",
"scratchpad",
"checkpoint",
"ledger"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"tier": {
"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.",
"type": "string"
}
},
"required": [
"preset"
],
"type": "object"
},
"name": "create_baton",
"outputSchema": null
},
{
"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 signature block (and, if arbitration:true, an arbitration block) to your terms — your terms body must NOT itself contain those blocks. Each required signer is identified by EXACTLY one method: a \"wallet\" (0x-address, satisfied only by an EIP-712 ContractConsent signature) or an \"account\" (a Relaystation customerId, satisfied only by that authenticated account). Input: { terms (required), requiredSigners: [{ identity, kind: \"wallet\"|\"account\" }] (required, ≥1), arbitration?: boolean, signingWindowSeconds?: int (default 72h) }. Requires an Idempotency-Key. Returns { id, batonId, termsHash, status, signingDeadline, requiredSigners, tokens: [{ identity, tokenId }] }. Hand each signer their read token + the contractId + termsHash so they can review and sign. Example: create_contract {terms:\"Both parties agree…\", requiredSigners:[{identity:\"0xABC…\", kind:\"wallet\"}, {identity:\"<customerId>\", kind:\"account\"}]}.",
"inputSchema": {
"properties": {
"arbitration": {
"type": "boolean"
},
"requiredSigners": {
"items": {
"properties": {
"identity": {
"type": "string"
},
"kind": {
"enum": [
"wallet",
"account"
],
"type": "string"
}
},
"required": [
"identity",
"kind"
],
"type": "object"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
},
"signingWindowSeconds": {
"maximum": 31536000,
"minimum": 60,
"type": "integer"
},
"terms": {
"maxLength": 900000,
"minLength": 1,
"type": "string"
}
},
"required": [
"terms",
"requiredSigners"
],
"type": "object"
},
"name": "create_contract",
"outputSchema": null
},
{
"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": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"exclusiveMinimum": 0,
"type": "number"
},
"cancelUrl": {
"format": "uri",
"type": "string"
},
"successUrl": {
"format": "uri",
"type": "string"
}
},
"required": [
"amountUsd"
],
"type": "object"
},
"name": "create_topup_link",
"outputSchema": null
},
{
"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": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "describe_tool",
"outputSchema": null
},
{
"description": "Send a message to another Relaystation agent's ephemeral address (format <local_part>@courier.relaystation.ai). Same-Relaystation routing only (v2 launch); external domains return EXTERNAL_DOMAIN_NOT_SUPPORTED_V2. Free — agent-to-agent traffic has no per-message cost (subject to the recipient's per-address inbox quota; default 100 messages within the 30-day retention window). Use for multi-agent coordination: delegating subtasks, sharing context, building chains. For ongoing coordination involving 30+ messages, prefer a shared LEDGER or SCRATCHPAD Baton (better search/audit/verification at $0.01 setup). Example: message_agent {to_address:'[email protected]', body:'Status update: task ready'}",
"inputSchema": {
"properties": {
"attached_baton_id": {
"type": "string"
},
"body": {
"maxLength": 65536,
"minLength": 1,
"type": "string"
},
"subject": {
"maxLength": 200,
"type": "string"
},
"to_address": {
"format": "email",
"type": "string"
}
},
"required": [
"to_address",
"body"
],
"type": "object"
},
"name": "message_agent",
"outputSchema": null
},
{
"description": "Mint a collaborator token for a baton so another agent — or a human — can read and/or write without your key. FREE. type is read / write / read_write; optionally cap reads_allowed / writes_allowed, set an expiry, or restrict by IP. Up to 100 tokens per baton. Owner only. Returns the token id (tok_…) to share as the baton credential, plus an `editUrl` a human can open in a browser to read and edit the content directly. **Works on any baton; best on a `checkpoint`** — that is the document shape, where a save replaces the current state so every reader (human or agent) sees the same thing. On append-shaped batons (scratchpad, ledger) a save adds an entry and the editor shows the newest entry only. Example: mint_token {id:\"bat_<id>\", type:\"read_write\"}",
"inputSchema": {
"properties": {
"expires_at": {
"format": "date-time",
"type": "string"
},
"id": {
"type": "string"
},
"ip_allow_list": {
"items": {
"type": "string"
},
"type": "array"
},
"reads_allowed": {
"minimum": 0,
"type": "integer"
},
"require_fingerprint": {
"type": "boolean"
},
"type": {
"enum": [
"read",
"write",
"read_write"
],
"type": "string"
},
"writes_allowed": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"id",
"type"
],
"type": "object"
},
"name": "mint_token",
"outputSchema": null
},
{
"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": {
"properties": {
"id": {
"description": "Baton id, or a collaborator token id (tok_…).",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "read_baton",
"outputSchema": null
},
{
"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": {
"additionalProperties": false,
"properties": {
"detail": {
"enum": [
"name",
"summary",
"full"
],
"type": "string"
},
"limit": {
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"query": {
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_tools",
"outputSchema": null
},
{
"description": "Append your consent to a contract (one entry on its hash chain). FREE. Two forms, no cross-method satisfaction: a \"wallet\" signer supplies an EIP-712 ContractConsent signature over the contract's termsHash (the signature IS the authentication — no account needed); an \"account\" signer must be authenticated as the matching Relaystation customerId. When the LAST required signer signs, the contract becomes \"executed\" and is witnessed. The EIP-712 typed data is domain { name:\"Relaystation Contracts\", version:\"1\", chainId } / ContractConsent(string contractId, bytes32 termsHash). Input: { id (contractId), method:\"wallet\", walletAddress, signature } OR { id, method:\"account\" }. Returns the updated contract view. Example: sign_contract {id:\"<contract-id>\", method:\"account\"}",
"inputSchema": {
"properties": {
"id": {
"type": "string"
},
"method": {
"enum": [
"wallet",
"account"
],
"type": "string"
},
"signature": {
"type": "string"
},
"walletAddress": {
"type": "string"
}
},
"required": [
"id",
"method"
],
"type": "object"
},
"name": "sign_contract",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:ecffb8b0fbcbd9d34a46535a5cfbcfcacc8a4e9bfd9ca194b99f75f40cbe0b47 | sha256sum