Server definition
- Hash
- sha256:5aacb5696dcbd80263add6ace2f384929804401943b515e7ab36fa2977c4d905
- What it is
- What a remote MCP server returned when asked what it offers: 21 tools
The blob, as servednamed by its sha256
{
"instructions": "Can I pay this address? Buy looks_20 pack ($0.20) or look $0.10. Stamp ticket $0.05. No inbox. Meter meter_* tools: no Authorization / Bearer empty. Human App check/checkout: Bearer API key. Conversion: meter_buy_pass (looks_20) → Base sign_exact → meter_watch({invoice_id, payment}) → token → meter_scan. Agent Meter: meter_pricing / meter_buy_pass / meter_watch / meter_scan / meter_preflight / meter_scan_batch / meter_stamp / meter_verify_stamp with no email — Buy looks_20 pack ($0.20) or look $0.10. Stamp ticket $0.05. look / looks_20 / addresses_100 / stamp_tx. Then meter_watch, then X-Agent-Pass. meter_buy_pass sku looks_20 (or omit) → invoice with pay_to, base_pay_to, accepts (Base USDC EIP-3009 exact and Solana USDC), amount_usd, amount_base_units, reference, pay_url, invoice_id, watch_url, tool_fields, sign_exact, adapter_snippet, next_steps. Sign USDC on your agent machine. Prefer Base EIP-3009 exact to base_pay_to (CDP/AgentKit; no Solana key). Use sign_exact + adapter_snippet to finish in-process (payMeterPassBase / signTypedData; copy src/adapters/meter-pay-base.ts if you need the full file). Then meter_watch with payment until token. Optional Solana: copy src/adapters/meter-pay.ts. We never take keys. Then meter_scan with pass_token. stamp_tx $0.05: Take this ticket or we do not take your USDC. meter_verify_stamp is public. Human App (separate): call check_transfer before a send (Bearer agent API key). get_pricing is public. You keep the keys.",
"tools": [
{
"description": "Same as check_action (Ask). Stop and ask before a consequential non-money action. Returns go, stop, or wait plus approval_id. Poll get_approval. Timeout is stop. Does not forward email, Slack, or CRM. Use email.send, slack.post, or crm.write to enforce.",
"inputSchema": {
"properties": {
"action_type": {
"type": "string"
},
"preview": {
"type": "string"
},
"risk": {
"type": "string"
},
"summary": {
"type": "string"
},
"target": {
"type": "string"
}
},
"required": [
"action_type",
"summary",
"preview"
],
"type": "object"
},
"name": "ask_human",
"outputSchema": null
},
{
"description": "Attach this agent to a human principal (email or existing principal_id). Does not move the agent to a different human. Agents cannot decide Approval Inbox.",
"inputSchema": {
"properties": {
"human_email": {
"description": "Email of the human customer of record",
"type": "string"
},
"principal_id": {
"description": "Existing human user id",
"type": "string"
}
},
"type": "object"
},
"name": "attach_human",
"outputSchema": null
},
{
"description": "Action Gate Ask. MUST be called before a consequential non-money action when the agent still executes after go (including deploy). Returns go, stop, or wait. If decision is wait, poll get_approval until go or stop. No decision in 10 minutes = stop. If must_abort is true, do not act. This tool does not send the email, post, or CRM write. To enforce those, call email.send, slack.post, or crm.write. Alias: ask_human.",
"inputSchema": {
"properties": {
"action_type": {
"description": "email.send, slack.post, crm.write, deploy, or another action id",
"type": "string"
},
"preview": {
"description": "Bounded text of what the agent will do after go",
"type": "string"
},
"risk": {
"description": "Optional tag such as low, medium, or high",
"type": "string"
},
"summary": {
"description": "One line a human can decide from",
"type": "string"
},
"target": {
"description": "Optional email, channel, or record id",
"type": "string"
}
},
"required": [
"action_type",
"summary",
"preview"
],
"type": "object"
},
"name": "check_action",
"outputSchema": null
},
{
"description": "MUST be called before the agent signs or sends a transfer. Returns allow, alert, hold, or block. If must_abort is true, do not sign. If decision is hold, poll get_approval until allow or block.",
"inputSchema": {
"properties": {
"to": {
"description": "Destination wallet address",
"type": "string"
},
"value_usd": {
"description": "Transfer size in USD",
"type": "number"
}
},
"required": [
"to",
"value_usd"
],
"type": "object"
},
"name": "check_transfer",
"outputSchema": null
},
{
"description": "Open a pay request on the human principal that owns this agent. Wraps POST /api/v1/billing/checkout. plan action opens Action Gate at $49 Solana USDC. starter, pro, and team open the wallet console. The human pays on-chain. Not automatic payment. Agents cannot decide Approval Inbox.",
"inputSchema": {
"properties": {
"asset": {
"description": "usdc (default), sol, or eth",
"type": "string"
},
"chain": {
"description": "solana (default), ethereum, or base",
"type": "string"
},
"plan": {
"description": "action ($49 Action Gate, Solana USDC), starter, pro, or team",
"type": "string"
}
},
"required": [
"plan"
],
"type": "object"
},
"name": "create_checkout",
"outputSchema": null
},
{
"description": "Write Gate. Validates the preview, runs Action Gate check_action for crm.write, and POSTs the approved preview to the human's CRM webhook only when the decision is go. Unpaid, missing DATABASE_URL, stop, and timeout do not post. If decision is wait, poll get_approval, then call crm.write again with approval_id. If the CRM webhook is missing, returns stop and does not post. Same $49 Action Gate seat (plan=action).",
"inputSchema": {
"properties": {
"approval_id": {
"description": "From a previous wait. Call again after get_approval returns go.",
"type": "string"
},
"payload": {
"description": "Optional JSON object included in the approved preview",
"type": "object"
},
"preview": {
"description": "Approved text posted to the CRM webhook",
"type": "string"
},
"risk": {
"description": "Optional tag such as low, medium, or high",
"type": "string"
},
"summary": {
"description": "One line a human can decide from",
"type": "string"
},
"target": {
"description": "Optional record id",
"type": "string"
}
},
"type": "object"
},
"name": "crm.write",
"outputSchema": null
},
{
"description": "Write Gate. Validates the message, runs Action Gate check_action for email.send, and sends only when the decision is go. Unpaid, missing DATABASE_URL, stop, and timeout do not send. If decision is wait, poll get_approval, then call email.send again with approval_id. Uses the human's connected Agentmail inbox. If email is not connected, returns stop and does not send. Same $49 Action Gate seat (plan=action).",
"inputSchema": {
"properties": {
"approval_id": {
"description": "From a previous wait. Call again after get_approval returns go.",
"type": "string"
},
"risk": {
"description": "Optional tag such as low, medium, or high",
"type": "string"
},
"subject": {
"description": "Subject the human approves",
"type": "string"
},
"text": {
"description": "Plain-text body the human approves",
"type": "string"
},
"to": {
"description": "One recipient email address",
"type": "string"
}
},
"type": "object"
},
"name": "email.send",
"outputSchema": null
},
{
"description": "Returns whether this agent is paused, expired, or healthy.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_agent_status",
"outputSchema": null
},
{
"description": "Poll a held check. Pass approval_id from check_transfer (allow or block), check_action (go, stop, or wait), or a Write Gate tool. Repeat until the decision is final. Action Gate timeout is stop. Write Gate forwards only when you call email.send, slack.post, or crm.write again with that approval_id after the decision is go.",
"inputSchema": {
"properties": {
"approval_id": {
"description": "ID returned when check_transfer decision is hold",
"type": "string"
}
},
"required": [
"approval_id"
],
"type": "object"
},
"name": "get_approval",
"outputSchema": null
},
{
"description": "List Agent Control plans and trial truth. Action Gate is $49/mo Solana USDC (plan=action): a person taps go, stop, or wait before Slack or a CRM write. Wallet console: Starter $29 / Pro $49 / Team $149, with a 1-day trial, no card, no KYC. Pay on-chain USDC on Solana. A human principal owns billing and Approval Inbox.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_pricing",
"outputSchema": null
},
{
"description": "Subscription or trial status for the human principal that owns this agent. Does not return Approval Inbox items and cannot approve holds.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_status",
"outputSchema": null
},
{
"description": "Can I pay this address? Buy looks_20 pack ($0.20) or look $0.10. Stamp ticket $0.05. No inbox. Call with sku looks_20 (or omit) to buy a pack that mints/extends X-Agent-Pass. look $0.10 is optional one-shot. Returns a payable invoice as tool content (ok:true / status payment_required) with pay_to, base_pay_to, accepts (Base USDC EIP-3009 exact and Solana USDC), amount_usd, amount_base_units, reference, pay_url, invoice_id, watch_url, adapter_url, base_adapter_url, preferred_rail, pay_page, next_tool, tool_fields, sign_exact, adapter_snippet, next_steps. Prefer Base EIP-3009 exact to base_pay_to (CDP/AgentKit; no Solana key) then meter_watch with payment. Use sign_exact + adapter_snippet to finish in-process (payMeterPassBase / signTypedData). Fetch base_adapter_url only if you need the full file. Optional Solana: fetch adapter_url. 402 invoice includes pay_page for Phantom laptop as a last resort. We never take keys. Packs: looks_20 / addresses_100 / stamp_tx. No human account.",
"inputSchema": {
"properties": {
"pass_token": {
"description": "Existing X-Agent-Pass to extend with a pack.",
"type": "string"
},
"payment": {
"description": "Optional Base EIP-3009 exact payload. Same JSON as PAYMENT-SIGNATURE. Never send a secret key.",
"type": "object"
},
"proof": {
"description": "Payment proof. { type: dev } only when METER_DEV_GRANT=1. Never send a secret key.",
"type": "object"
},
"signature": {
"description": "Optional on-chain tx signature after you sign locally. Not a private key.",
"type": "string"
},
"sku": {
"description": "Catalog id from meter_pricing. Omit or looks_20 is the paid pack. look $0.10 is optional one-shot. Packs: looks_20, addresses_100, stamp_tx. pass_1h stays in catalog only.",
"type": "string"
}
},
"type": "object"
},
"name": "meter_buy_pass",
"outputSchema": null
},
{
"description": "Can I pay this address? Buy looks_20 pack ($0.20) or look $0.10. Stamp ticket $0.05. No inbox. One look = one address. No free looks. Without a paid X-Agent-Pass, 402 looks_20 pack $0.20. look $0.10 is optional one-shot. Body: chain, wallet, to, value_usd, cap_usd. allow or stop vs cap_usd. Never hold.",
"inputSchema": {
"properties": {
"cap_usd": {
"type": "number"
},
"chain": {
"type": "string"
},
"pass_token": {
"type": "string"
},
"to": {
"type": "string"
},
"value_usd": {
"type": "number"
},
"wallet": {
"type": "string"
}
},
"required": [
"chain",
"wallet",
"to",
"value_usd",
"cap_usd"
],
"type": "object"
},
"name": "meter_preflight",
"outputSchema": null
},
{
"description": "Can I pay this address? Buy looks_20 pack ($0.20) or look $0.10. Stamp ticket $0.05. No inbox. No Authorization / Bearer empty. Public catalog from this tool: look, looks_20, addresses_100, stamp_tx. default_sku is look. paid_sku looks_20. Base USDC (EIP-3009 exact) and Solana USDC. No email. No API key. Human App $29 plans are separate.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "meter_pricing",
"outputSchema": null
},
{
"description": "Can I pay this address? Buy looks_20 pack ($0.20) or look $0.10. Stamp ticket $0.05. No inbox. One look = one address. No free looks. Without a paid X-Agent-Pass, 402 looks_20 pack $0.20 (look $0.10 is optional one-shot). Prefer Base USDC (EIP-3009 exact) to base_pay_to (CDP/AgentKit; no Solana key). Optional Solana USDC. 402 invoice includes next_steps and pay_page for Phantom laptop as a last resort. Risk ok|new|warn|sink. Never hold.",
"inputSchema": {
"properties": {
"address": {
"type": "string"
},
"chain": {
"description": "solana, ethereum, or base",
"type": "string"
},
"pass_token": {
"type": "string"
}
},
"required": [
"chain",
"address"
],
"type": "object"
},
"name": "meter_scan",
"outputSchema": null
},
{
"description": "Can I pay this address? Buy looks_20 pack ($0.20) or look $0.10. Stamp ticket $0.05. No inbox. Risk scores for up to 100 addresses. Sku addresses_100 ($0.15) covers scan_batch. Never hold. ok|new|warn|sink.",
"inputSchema": {
"properties": {
"addresses": {
"description": "Up to 100 addresses",
"items": {
"type": "string"
},
"type": "array"
},
"chain": {
"description": "solana, ethereum, or base",
"type": "string"
},
"pass_token": {
"type": "string"
},
"sku": {
"type": "string"
}
},
"required": [
"chain",
"addresses"
],
"type": "object"
},
"name": "meter_scan_batch",
"outputSchema": null
},
{
"description": "Can I pay this address? Buy looks_20 pack ($0.20) or look $0.10. Stamp ticket $0.05. No inbox. stamp_tx $0.05. Take this ticket or we do not take your USDC. Signed allow|stop receipt. HMAC-SHA256. Merchants verify with meter_verify_stamp before accepting agent USDC.",
"inputSchema": {
"properties": {
"cap_usd": {
"type": "number"
},
"chain": {
"type": "string"
},
"decision": {
"description": "allow or stop. Optional if value_usd and cap_usd are set.",
"type": "string"
},
"pass_token": {
"type": "string"
},
"to": {
"type": "string"
},
"value_usd": {
"type": "number"
},
"wallet": {
"type": "string"
}
},
"type": "object"
},
"name": "meter_stamp",
"outputSchema": null
},
{
"description": "Can I pay this address? Buy looks_20 pack ($0.20) or look $0.10. Stamp ticket $0.05. No inbox. Public. Take this ticket or we do not take your USDC. GET a signed allow|stop receipt by stamp_id before you accept agent USDC. If verified is true and decision is allow, take the USDC. If not, do not take it. No email. No API key.",
"inputSchema": {
"properties": {
"id": {
"type": "string"
},
"stamp_id": {
"type": "string"
}
},
"type": "object"
},
"name": "meter_verify_stamp",
"outputSchema": null
},
{
"description": "Can I pay this address? Buy looks_20 pack ($0.20) or look $0.10. Stamp ticket $0.05. No inbox. After Base EIP-3009 exact (CDP/AgentKit; no Solana key) or optional Solana USDC, call with invoice_id until token. Pass the Base payment object from payMeterPassBase / sign_exact.payment_template after you fill signature ({ x402Version, payload:{ authorization, signature }, accepted }) — not a raw signature string. Repeat until the result includes token — that is X-Agent-Pass. Then meter_scan with pass_token. Optional signature (tx sig only). We never take keys. No human account.",
"inputSchema": {
"properties": {
"invoice_id": {
"description": "From meter_buy_pass / 402 invoice.",
"type": "string"
},
"payment": {
"description": "Base x402 v2 payment object from payMeterPassBase / sign_exact.payment_template (x402Version + payload.authorization + payload.signature + accepted). Not a raw signature string. Never send a secret key.",
"type": "object"
},
"signature": {
"description": "Optional Solana tx signature after local sign. Not a private key.",
"type": "string"
},
"sku": {
"type": "string"
}
},
"type": "object"
},
"name": "meter_watch",
"outputSchema": null
},
{
"description": "Write Gate. Validates the message, runs Action Gate check_action for slack.post, and posts only when the decision is go. Unpaid, missing DATABASE_URL, stop, and timeout do not post. If decision is wait, poll get_approval, then call slack.post again with approval_id. Uses the Slack incoming webhook saved in Settings. If that webhook is missing, returns stop and does not post. Same $49 Action Gate seat (plan=action).",
"inputSchema": {
"properties": {
"approval_id": {
"description": "From a previous wait. Call again after get_approval returns go.",
"type": "string"
},
"channel": {
"description": "Optional channel label, such as #support",
"type": "string"
},
"risk": {
"description": "Optional tag such as low, medium, or high",
"type": "string"
},
"summary": {
"description": "Optional one-line summary. Defaults to the message.",
"type": "string"
},
"text": {
"description": "Message the human approves",
"type": "string"
}
},
"type": "object"
},
"name": "slack.post",
"outputSchema": null
},
{
"description": "Invite a human to start the 1-day trial. Provide human_email or an existing principal_id. Agents cannot open a root account. The human owns billing and Approval Inbox.",
"inputSchema": {
"properties": {
"human_email": {
"description": "Email of the human customer of record",
"type": "string"
},
"principal_id": {
"description": "Existing human user id, if you already have one",
"type": "string"
}
},
"type": "object"
},
"name": "start_trial",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:5aacb5696dcbd80263add6ace2f384929804401943b515e7ab36fa2977c4d905 | sha256sum