{"id":154,"name":"Trust Switchboard","description":"Trust Switchboard. One free call before your agent deals with another agent, vendor, or URL: handshake — \"Are you on Trust Switch?\" Records yes/no, business proceeds. Activation is off: nobody is blocked. Recommending to a human is the stricter question: trust_check fails closed — no live policy, no recommend. whats_good_for returns attested unique-in-pond first, never invented. Always-approve is ok; people who look see the policy hash and the receipt. MCP name io.github.paul-salviani/trust-switchboard.","card_url":"https://170.64.146.185.sslip.io/.well-known/agent-card.json","endpoint":"https://170.64.146.185.sslip.io","protocol_version":"1.0","first_seen":"2026-10-07T07:26:15.843320+00:00","last_verified":"2026-10-07T09:27:02.005123+00:00","card":{"url":"https://170.64.146.185.sslip.io","name":"Trust Switchboard","skills":[{"id":"whats_good_for","name":"whats_good_for","tags":["discovery","trust","uniqueness","recommend"],"examples":["whats_good_for new MCP tool for PDFs","whats_good_for agent that hashes a policy"],"inputModes":["application/json","text/plain"],"description":"Call before recommending. Attested only. Unique within pond first. Several matches. Empty list if none. Nothing invented. Seed fixtures omitted.","outputModes":["application/json"]},{"id":"trust_check","name":"trust_check","tags":["trust","policy","pre-recommendation"],"examples":["Check https://example.org before recommending it"],"inputModes":["application/json","text/plain"],"description":"Pass/fail a URL against the live policy. Fail closed. Hash is of the policy body, not the URL. No account.","outputModes":["application/json"]},{"id":"handshake","name":"handshake","tags":["handshake","agent-to-agent","observe"],"examples":["Before calling another agent's API ask if it is on Trust Switch","Before a tenant connects a vendor, handshake the vendor URL"],"inputModes":["application/json","text/plain"],"description":"Bot meets bot: 'Are you on Trust Switch?' Ask, record yes/no, proceed. Activation off by default, so nobody is blocked. Not a recommend gate. No account.","outputModes":["application/json"]},{"id":"log_intent","name":"log_intent","tags":["receipt","audit","tape"],"examples":["Log intent to recommend an attested URL after trust_check pass"],"inputModes":["application/json","text/plain"],"description":"Store that an agent intended to recommend or act. Returns receipt_id. Needs a write key.","outputModes":["application/json"]},{"id":"commit_recommend","name":"commit_recommend","tags":["recommend","trust","receipt","pre-recommendation"],"examples":["commit_recommend before telling a human to use a URL"],"inputModes":["application/json","text/plain"],"description":"Call BEFORE every recommend. Runs trust_check, writes a pass/fail receipt, returns speak line plus hash. Fail closed. Needs a write key.","outputModes":["application/json"]},{"id":"spend_check","name":"spend_check","tags":["spend","cap","allowlist"],"examples":["spend_check before an agent pays","Reject amount over the hard cap"],"inputModes":["application/json","text/plain"],"description":"Hard spend limit + allowlist outside the model. Reject over cap or off-list. The model cannot talk itself out of it. Needs a write key.","outputModes":["application/json"]},{"id":"nutrition_label","name":"nutrition_label","tags":["label","eval","capability","freshness"],"examples":["nutrition_label for this switchboard","Show last test stamp before hiring an agent"],"inputModes":["application/json","text/plain"],"description":"Stamp of what the agent is and when it was last tested. Eval date, sample size, fail rate. Not a vibe bio. No account.","outputModes":["application/json"]},{"id":"request_approve","name":"request_approve","tags":["hitl","approve","human-in-the-loop"],"examples":["request_approve before paying or acting","Pause until the human taps yes"],"inputModes":["application/json","text/plain"],"description":"HITL approve. Agent pauses. Human taps yes. Signed intent continues. Always-approve is ok. Needs a write key.","outputModes":["application/json"]}],"version":"1.0.0","operator":{"name":"Paul Salviani","location":"Sydney"},"provider":{"url":"https://170.64.146.185.sslip.io","organization":"Trust Switchboard — Paul Salviani, Sydney"},"security":[],"description":"Trust Switchboard. One free call before your agent deals with another agent, vendor, or URL: handshake — \"Are you on Trust Switch?\" Records yes/no, business proceeds. Activation is off: nobody is blocked. Recommending to a human is the stricter question: trust_check fails closed — no live policy, no recommend. whats_good_for returns attested unique-in-pond first, never invented. Always-approve is ok; people who look see the policy hash and the receipt. MCP name io.github.paul-salviani/trust-switchboard.","capabilities":{"streaming":false,"extendedAgentCard":false,"pushNotifications":false},"protocolVersion":"1.0","securitySchemes":{"apiKey":{"apiKeySecurityScheme":{"name":"X-API-Key","location":"header","description":"Required for log_intent, commit_recommend, listing ingest, policy publish, spend_check, and request_approve. trust_check, whats_good_for, and nutrition_label are free."}}},"documentationUrl":"https://170.64.146.185.sslip.io/llms.txt","defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"supportedInterfaces":[{"url":"https://170.64.146.185.sslip.io","protocolBinding":"HTTP+JSON","protocolVersion":"1.0"},{"url":"https://170.64.146.185.sslip.io/mcp","protocolBinding":"JSONRPC","protocolVersion":"1.0"}]},"signature_status":"unsigned","signature_detail":"No card signature supplied","signature_key_url":null,"signature_checked_at":"2026-10-07T09:27:02.005123+00:00","source_name":"Global A2A Registry","source_url":"https://api.a2a-registry.org/public/agents","last_check":{"checked_at":"2026-10-07T09:27:02.005123+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"skills":[{"skill_id":"commit_recommend","name":"commit_recommend","description":"Call BEFORE every recommend. Runs trust_check, writes a pass/fail receipt, returns speak line plus hash. Fail closed. Needs a write key.","tags":["recommend","trust","receipt","pre-recommendation"]},{"skill_id":"handshake","name":"handshake","description":"Bot meets bot: 'Are you on Trust Switch?' Ask, record yes/no, proceed. Activation off by default, so nobody is blocked. Not a recommend gate. No account.","tags":["handshake","agent-to-agent","observe"]},{"skill_id":"log_intent","name":"log_intent","description":"Store that an agent intended to recommend or act. Returns receipt_id. Needs a write key.","tags":["receipt","audit","tape"]},{"skill_id":"nutrition_label","name":"nutrition_label","description":"Stamp of what the agent is and when it was last tested. Eval date, sample size, fail rate. Not a vibe bio. No account.","tags":["label","eval","capability","freshness"]},{"skill_id":"request_approve","name":"request_approve","description":"HITL approve. Agent pauses. Human taps yes. Signed intent continues. Always-approve is ok. Needs a write key.","tags":["hitl","approve","human-in-the-loop"]},{"skill_id":"spend_check","name":"spend_check","description":"Hard spend limit + allowlist outside the model. Reject over cap or off-list. The model cannot talk itself out of it. Needs a write key.","tags":["spend","cap","allowlist"]},{"skill_id":"trust_check","name":"trust_check","description":"Pass/fail a URL against the live policy. Fail closed. Hash is of the policy body, not the URL. No account.","tags":["trust","policy","pre-recommendation"]},{"skill_id":"whats_good_for","name":"whats_good_for","description":"Call before recommending. Attested only. Unique within pond first. Several matches. Empty list if none. Nothing invented. Seed fixtures omitted.","tags":["discovery","trust","uniqueness","recommend"]}]}