Skip to main content

For agents and their builders

Call Trooth before you trust a vendor

When an AI agent is about to rely on a vendor, recommend one, integrate with one, or move money toward one, it should check that vendor the way a careful buyer would. Trooth gives your agent one place to do it: a public trust layer it can read in a single call, with honest labels on where every answer came from.

The pattern

Four read-only steps. The first is almost always enough; the rest are there when a decision is worth more scrutiny.

  1. 1

    Read the witnessed standing

    trooth_public_trust_profile

    Look up the vendor by domain. You get its published Trust Profile if it has one (signed evidence, re-checked on a schedule) or its Network standing from a signed scan. If Trooth has nothing, you get an honest not-found, not a guess.

  2. 2

    Take a live outside-in read

    trooth_outside_in_read

    A neutral read of the vendor's public surface right now: HTTPS and TLS reachability, common security headers, and security.txt. These are observations, not witnessed evidence and not a grade, and they are labelled that way.

  3. 3

    Verify any signed token you were handed

    trooth_verify

    If the vendor gave you a Trust Ledger Token, verify it. Trooth re-runs both signatures and tells you whether the token is valid, expired, revoked, or tampered. Trooth's signature attests the signing event and the payload at issuance, never the truthfulness of the claims inside.

  4. 4

    Report with provenance, act on the gap

    Summarize what is witnessed versus what is only observed, and keep each provenance label attached. Treat an honest absence as missing data to gather, not as a pass or a fail.

Connect your agent

Trooth speaks the Model Context Protocol. Point any MCP-capable client at the endpoint below and the four tools appear automatically. No key, no account, read-only, public data only. In ChatGPT there is nothing to configure: Trooth Network is a listed app, reviewed and approved by OpenAI, so open the listing and press Try in chat.

Endpoint
POST https://api.trooth.co/public/mcp
Transport
Streamable HTTP, JSON-RPC 2.0, single JSON response per POST (no SSE stream, no session id, no batches)
Protocol
2025-06-18 (also answers 2025-03-26 and 2024-11-05 when a client asks for one)
Server
trooth-mcp 1.1.0
Descriptor
/.well-known/mcp.json - Trooth’s own, not a convention. MCP has no .well-known discovery path: the specification’s answer is the in-band server/discover RPC, and a Server Card document is still a working-group proposal. Use the endpoint above.
Tools
trooth_public_trust_profile (company), trooth_outside_in_read (domain), trooth_verify (token), trooth_ask (question). One required string argument each.
Resources
trooth://methodology, trooth://provenance-labels, trooth://verify-a-vendor (markdown)
Prompts
vendor_trust_check (company), verify_trust_token (token), before_you_trust (company)

Add Trooth to your assistant

Every assistant below takes a pasted URL. No directory listing, no approval, no account with Trooth, and nothing to pay. The endpoint is read-only and needs no key, so there is nothing to configure after it.

Claude
Customize → Connectors → Add custom connector → paste the URL. On a Team or Enterprise plan it is Organization settings → Connectors → Add → Custom.Works on Free, Pro and Max. Claude pre-fills the transport and authentication it detects, and there is nothing to authenticate here. (claude.com/docs/connectors/custom/remote-mcp)
ChatGPT
Settings → Security and login → turn on Developer mode, then Plugins → + → give it a name and paste the URL, including the /mcp path.Trooth also has a directory listing, so most people will not need this. (developers.openai.com/plugins/deploy/connect-chatgpt)
Grok
grok.com/connectors → New Connector → Custom → paste the URL.Grok discovers the tools itself. xAI publishes no directory; a pasted URL is the only route. (docs.x.ai/grok/connectors)
Gemini
gemini.google.com → Connected Apps → add a custom app by MCP server URL.Currently US only, 18+, on a Google AI Pro or Ultra plan with Gemini Spark. Google publishes no directory either. (support.google.com/gemini/answer/17209137)
Cursor, VS Code, Claude Code and other developer clients
Use the install links below, or drop the JSON config into the client's MCP settings file.

The URL, every time: https://api.trooth.co/public/mcp

Add it in one click

Cursor and VS Code are the only two clients that publish an install URL scheme. Claude, ChatGPT, Grok and Gemini all take the endpoint pasted into their own connector dialog - none of them documents a deep link, so there is not one here.

Client configuration

{
  "mcpServers": {
    "trooth": {
      "type": "http",
      "url": "https://api.trooth.co/public/mcp"
    }
  }
}

A call

POST https://api.trooth.co/public/mcp
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trooth_public_trust_profile",
    "arguments": { "company": "example.com" }
  }
}

What comes back

Every tool returns the same two things: prose for a person in content, and the same answer as a typed record in structuredContent so your agent can branch on fields instead of parsing sentences. The record always carries status, provenance, subject and summary, and adds claim_url only when the subject has no published record.

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{ "type": "text", "text": "No published Trust Profile for \"example.com\" on Trooth. Nothing about it is witnessed here - an honest absence, not a judgment. ..." }],
    "structuredContent": {
      "status": "unclaimed",
      "provenance": "honest_absence",
      "subject": "example.com",
      "summary": "No published Trust Profile for \"example.com\" on Trooth. ...",
      "claim_url": "https://trooth.co/claim?slug=example.com&src=mcp&via=claude"
    },
    "isError": false
  }
}
status
published, listed, unclaimed, private, observed, valid, invalid, expired, revoked, answered, out_of_scope, bad_input, unavailable
provenance
witnessed_signed, signed_scan, live_observation, honest_absence, withheld_by_owner, knowledge_base, input_error, self_declared, read_failed

Two states stay deliberately apart. unclaimed with honest_absence means Trooth holds no record: an absence of evidence, not a finding about the company. private with withheld_by_owner means a record exists and its owner chose not to publish it: a decision, not missing data. unavailable with read_failed means Trooth could not read its own record at that moment: it asserts nothing either way, carries no claim link, and the right response is to retry, never to conclude. published with self_declared is a published profile with no witnessed standing yet: the company's own words, labelled as such. A missing required argument comes back as bad_input / input_error with isError: false; an unknown tool name is a JSON-RPC error (-32602); a tool that fails mid-call answers isError: true and says nothing about the subject.

The three prompts (vendor_trust_check, verify_trust_token, before_you_trust) each drive the pattern above with the provenance rules built in, and the three resources explain the methodology, the provenance labels, and the verify-before-you-trust sequence in your agent's own context.

Subscribe to changes

Trust is not a one-time read. Your agent can register a webhook and be told when a vendor's witnessed posture changes, so it never acts on a stale check. No email, no account: post a public https webhook URL and get back a signing secret.

POST https://api.trooth.co/public/trust/example.com/agent-subscribe
Content-Type: application/json

{ "webhookUrl": "https://your-service.example/hooks/trooth" }

Changes arrive as a signed trust.posture.changed event. Every delivery carries two headers. x-trooth-signature is the HMAC-SHA256 of the raw request body, keyed with your secret, as 64 lowercase hex characters with no prefix. x-trooth-event repeats the event type. There is no timestamp header; the signed bytes are the body and nothing else. Verify it over the raw bytes, in constant time, before you act on the payload, and refuse any delivery that arrives without the header. Deduplicate on the event id. Deliveries carry witnessed changes only.

Read the labels

Every answer carries a provenance label so your agent never mistakes an observation for a proof. A witnessed Trust Profile is signed evidence. A signed scan is a point-in-time Network standing. An outside-in read is a live neutral observation. A Trust Ledger Token is a portable, signed receipt you can re-verify. An honest absence is missing data, not a judgment. Trooth automates the reading and signs the event; Trooth never signs on a company's behalf.