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
Read the witnessed standing
trooth_public_trust_profileLook 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
Take a live outside-in read
trooth_outside_in_readA 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
Verify any signed token you were handed
trooth_verifyIf 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
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-knowndiscovery path: the specification’s answer is the in-bandserver/discoverRPC, 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.