{"openapi":"3.1.0","info":{"title":"MERCATOR Verify","description":"MERCATOR Verify provides evidence-backed verification and decision support for autonomous agents. Use its specialized tools when an agent needs trustworthy evidence before taking a downstream action.","version":"1.0.0","contact":{"name":"MERCATOR","url":"https://github.com/Arzuo/mercator/issues"},"x-guidance":"MERCATOR Verify provides evidence-backed verification and decision support for autonomous agents. Use its specialized tools when an agent needs trustworthy evidence before taking a downstream action. Current resource — Entity Evidence: company enrichment and company verification from a domain or name, returning current company information (legal name, headquarters, industry, executives, funding) where every field carries its source URL, the verbatim sentence supporting it, a retrieval date and a confidence score. Reach for it when a WRONG company fact would cost more than no fact. Disagreeing sources are returned as explicit conflicts; fields no source states come back UNKNOWN, never guessed. You are not charged for a non-answer: UNRESOLVED (no company identified) and INSUFFICIENT_EVIDENCE (nothing beyond the identifier you supplied) are both billable:false with settlement cancelled. Company-only; no person-level data."},"paths":{"/llms.txt":{"get":{"summary":"Llms Txt","description":"Freeform guidance, at the location discovery clients look for it.","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/health":{"get":{"summary":"Health","description":"Liveness, and WHICH BUILD IS ANSWERING.\n\nThe commit is baked into the image at build time and read back here, so \"is the deployed\nservice carrying the work we described\" is a question anyone can answer from outside with\none unauthenticated GET. It was not answerable before: a run of failed deploys left an\nolder build serving, and every public response looked exactly the same as it had.\n\n\"unknown\" is honest and is what a locally built image returns; it is never a commit we\nguessed.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Health Get"}}}}}}},"/":{"get":{"summary":"Index","description":"The product page an agent or a human lands on.","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index  Get"}}}}}}},"/.well-known/x402":{"get":{"summary":"Well Known X402","description":"Machine-readable discovery for agents and index crawlers that look here first.\n\nBuilt entirely from `listing`, so price, network, asset, payTo and both route paths\ncannot drift from the endpoints they describe. Read-only and free: this is the\nshopfront, not the product.","operationId":"well_known_x402__well_known_x402_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Well Known X402  Well Known X402 Get"}}}}}}},"/v1/entity-evidence/validate":{"post":{"summary":"Entity Evidence — free preflight","description":"Free preflight for Entity Evidence: whether the request is valid, what it would cost, and the guarantees attached. Retrieves nothing and is never charged for.","operationId":"validate_v1_entity_evidence_validate_post","responses":{"200":{"description":"Valid, with the price and the guarantees this resource attaches to a paid answer."},"422":{"description":"The request body is not valid for this resource."}},"tags":["Entity Evidence"],"security":[],"requestBody":{"description":"The request you intend to pay for.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityEvidenceRequest"}}}}}},"/v1/entity-evidence":{"post":{"summary":"Entity Evidence","description":"Evidence-backed company facts and current company information for company enrichment and company verification, with field-level sources, freshness and explicit conflicts.","operationId":"entity_evidence_v1_entity_evidence_post","responses":{"200":{"description":"The evidenced answer. Check `billable`: a response this resource rules non-billable is returned in full and is not charged for.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityEvidenceResponse"}}}},"402":{"description":"Payment Required. Carries the x402 challenge: Base mainnet (eip155:8453), native USDC, $0.10. Pay and repeat the request."},"422":{"description":"The request body is not valid for this resource."}},"tags":["Entity Evidence"],"security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]},"requestBody":{"description":"The request Entity Evidence answers.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityEvidenceRequest"}}}}}},"/v1/address-evidence/validate":{"post":{"summary":"Address Evidence — free preflight","description":"Free preflight for Address Evidence: whether the request is valid, what it would cost, and the guarantees attached. Retrieves nothing and is never charged for.","operationId":"address_evidence_validate_v1_address_evidence_validate_post","responses":{"200":{"description":"Valid, with the price and the guarantees this resource attaches to a paid answer."},"422":{"description":"The request body is not valid for this resource."}},"tags":["Address Evidence"],"security":[],"requestBody":{"description":"The request you intend to pay for.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressRequest"}}}}}},"/v1/address-evidence":{"post":{"summary":"Address Evidence","description":"Provenance evidence that a specific chain and contract address is the intended interaction target for a named entity or protocol, with the exact source, verbatim excerpt and an explicit transact decision. Disagreeing sources return no address.","operationId":"address_evidence_v1_address_evidence_post","responses":{"200":{"description":"The evidenced answer. Check `billable`: a response this resource rules non-billable is returned in full and is not charged for.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressEvidenceResponse"}}}},"402":{"description":"Payment Required. Carries the x402 challenge: Base mainnet (eip155:8453), native USDC, $0.25. Pay and repeat the request."},"422":{"description":"The request body is not valid for this resource."}},"tags":["Address Evidence"],"security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.25"},"protocols":[{"x402":{}}]},"requestBody":{"description":"The request Address Evidence answers.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressRequest"}}}}}},"/v1/entity-evidence/lookup":{"get":{"summary":"Entity Evidence (GET alias)","description":"Evidence-backed company facts and current company information for company enrichment and company verification, with field-level sources, freshness and explicit conflicts. GET alias of POST /v1/entity-evidence, for clients that can only issue GET. Same engine, same price, same billing rule.","operationId":"entity_evidence_lookup_v1_entity_evidence_lookup_get","responses":{"200":{"description":"The evidenced answer. Check `billable`: a response this resource rules non-billable is returned in full and is not charged for.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityEvidenceResponse"}}}},"402":{"description":"Payment Required. Carries the x402 challenge: Base mainnet (eip155:8453), native USDC, $0.10. Pay and repeat the request."},"400":{"description":"`company` is missing or empty. Settlement is cancelled, so a caller who paid before the parameter was read is not charged."}},"tags":["Entity Evidence"],"security":[],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]},"parameters":[{"name":"company","in":"query","required":true,"description":"Company domain or name, e.g. `cloudflare.com` or `Cloudflare`.","schema":{"type":"string","minLength":1},"example":"cloudflare.com"}]}},"/mcp/tools.json":{"get":{"summary":"Mcp Tools","description":"MCP tool metadata for the SAME core.\n\nMetadata only: MCP is a discovery transport onto the one implementation, never a second\none. A duplicated execution path would drift, and the drifted copy is the one nobody\ntests.\n\nIT PUBLISHED THE REQUEST AND NOT THE RESPONSE. Measured against the deployed service:\nthis document carried `inputSchema` and no output shape at all, so an agent that\ndiscovers the tool here — the entry path that actually matters, since paying agents\nreach services through MCP routing rather than by browsing a catalogue — learned what to\nsend and nothing about what comes back. It now carries the same generated example the\nother two documents publish, so all three describe one response and none of them can\ndrift from it.","operationId":"mcp_tools_mcp_tools_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Mcp Tools Mcp Tools Json Get"}}}}}}}},"servers":[{"url":"https://mercator-entity-evidence.fly.dev"}],"components":{"schemas":{"EntityEvidenceRequest":{"additionalProperties":false,"description":"What a buyer asks for. Validated before any money changes hands.","properties":{"domain":{"default":"","title":"Domain","type":"string"},"name":{"default":"","title":"Name","type":"string"},"fields":{"items":{"type":"string"},"minItems":1,"title":"Fields","type":"array"},"max_age_days":{"default":30,"maximum":365,"minimum":1,"title":"Max Age Days","type":"integer"}},"required":["fields"],"title":"EntityEvidenceRequest","type":"object"},"FieldConflict":{"additionalProperties":false,"description":"Sources that disagree. Returned, never resolved by preference alone.","properties":{"field":{"title":"Field","type":"string"},"values":{"items":{"additionalProperties":true,"type":"object"},"minItems":2,"title":"Values","type":"array"},"note":{"default":"","title":"Note","type":"string"}},"required":["field","values"],"title":"FieldConflict","type":"object"},"FieldEvidence":{"additionalProperties":false,"description":"One answered field: the value and everything needed to check it.","properties":{"value":{"title":"Value"},"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"As Of"},"confidence":{"maximum":1.0,"minimum":0.0,"title":"Confidence","type":"number"},"agreement":{"pattern":"^\\d+_of_\\d+$","title":"Agreement","type":"string"},"variants":{"default":[],"items":{"type":"string"},"title":"Variants","type":"array"},"match_type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"exact","title":"Match Type"},"match_basis":{"default":"","title":"Match Basis","type":"string"},"relationship_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Relationship Verified"},"relationship_check":{"default":"","title":"Relationship Check","type":"string"},"relationship_check_outcome":{"default":"not_attempted","title":"Relationship Check Outcome","type":"string"},"sources":{"items":{"$ref":"#/components/schemas/SourceExcerpt"},"minItems":1,"title":"Sources","type":"array"},"oldest_retrieved_at":{"format":"date-time","title":"Oldest Retrieved At","type":"string"}},"required":["value","confidence","agreement","sources","oldest_retrieved_at"],"title":"FieldEvidence","type":"object"},"Reachability":{"additionalProperties":false,"description":"What this entity could EVER be corroborated by. The ceiling, stated.\n\nFour of seven exchanges measured on 2026-08-30 are structurally single-origin: not an\nSEC registrant, no LEI record, own site blocked or empty. No field of theirs can reach\ntwo independent origins however well the extractor works — and today that arrives as a\n`1_of_1` a buyer's independence gate cannot tell from a shortfall.\n\nA gate can branch on a stated ceiling; it cannot branch on a silent one. Same principle\nas returning conflicts instead of resolving them quietly.","properties":{"independent_origins":{"minimum":0,"title":"Independent Origins","type":"integer"},"single_origin":{"default":false,"title":"Single Origin","type":"boolean"},"origin_classes":{"default":[],"items":{"type":"string"},"title":"Origin Classes","type":"array"},"registries":{"default":[],"items":{"type":"string"},"title":"Registries","type":"array"},"registries_absent":{"default":[],"items":{"type":"string"},"title":"Registries Absent","type":"array"},"own_site_answered":{"default":false,"title":"Own Site Answered","type":"boolean"},"single_origin_fields":{"default":[],"items":{"type":"string"},"title":"Single Origin Fields","type":"array"},"single_origin_field_reason":{"default":"","title":"Single Origin Field Reason","type":"string"},"note":{"default":"","title":"Note","type":"string"}},"required":["independent_origins"],"title":"Reachability","type":"object"},"ResolutionStatus":{"enum":["SUCCESS","PARTIAL","UNRESOLVED","INSUFFICIENT_EVIDENCE"],"title":"ResolutionStatus","type":"string"},"ResolvedEntity":{"additionalProperties":false,"properties":{"canonical_domain":{"title":"Canonical Domain","type":"string"},"canonical_name":{"default":"","title":"Canonical Name","type":"string"},"resolved_from":{"minLength":1,"title":"Resolved From","type":"string"},"confidence":{"maximum":1.0,"minimum":0.0,"title":"Confidence","type":"number"},"aliases":{"default":[],"items":{"type":"string"},"title":"Aliases","type":"array"}},"required":["canonical_domain","resolved_from","confidence"],"title":"ResolvedEntity","type":"object"},"SourceExcerpt":{"additionalProperties":false,"description":"One piece of checkable evidence.\n\n`excerpt` is verbatim text that was VERIFIED to occur in the fetched document. It is not\na summary and never a paraphrase: a buyer must be able to open the URL, search for the\nstring, and find it. That is the entire product.","properties":{"url":{"minLength":1,"title":"Url","type":"string"},"excerpt":{"maxLength":1000,"minLength":1,"title":"Excerpt","type":"string"},"retrieved_at":{"format":"date-time","title":"Retrieved At","type":"string"},"source_id":{"minLength":1,"title":"Source Id","type":"string"},"primary":{"default":false,"title":"Primary","type":"boolean"},"states":{"default":null,"title":"States"},"origin_class":{"default":"","title":"Origin Class","type":"string"}},"required":["url","excerpt","retrieved_at","source_id"],"title":"SourceExcerpt","type":"object"},"SourceOutcomeReport":{"additionalProperties":false,"description":"One consulted source, and whether it answered.\n\n`outcome` is \"succeeded\", \"failed\" or \"not_attempted\". `reason` is a small closed\nvocabulary a gate can branch on without parsing prose: \"http_status\", \"transport\",\n\"empty_document\", \"budget_exhausted\", \"not_applicable\". `detail` is for a human.","properties":{"source_id":{"minLength":1,"title":"Source Id","type":"string"},"url":{"default":"","title":"Url","type":"string"},"outcome":{"minLength":1,"title":"Outcome","type":"string"},"reason":{"default":"","title":"Reason","type":"string"},"detail":{"default":"","title":"Detail","type":"string"}},"required":["source_id","outcome"],"title":"SourceOutcomeReport","type":"object"},"UnresolvedField":{"additionalProperties":false,"description":"A field nobody could evidence. Not an error — an honest answer.","properties":{"field":{"title":"Field","type":"string"},"reason":{"title":"Reason","type":"string"}},"required":["field","reason"],"title":"UnresolvedField","type":"object"},"EntityEvidenceResponse":{"additionalProperties":false,"description":"What the buyer gets. `response_hash` covers everything above it.","properties":{"status":{"$ref":"#/components/schemas/ResolutionStatus"},"entity":{"anyOf":[{"$ref":"#/components/schemas/ResolvedEntity"},{"type":"null"}],"default":null},"fields":{"additionalProperties":{"$ref":"#/components/schemas/FieldEvidence"},"title":"Fields","type":"object"},"conflicts":{"default":[],"items":{"$ref":"#/components/schemas/FieldConflict"},"title":"Conflicts","type":"array"},"unresolved":{"default":[],"items":{"$ref":"#/components/schemas/UnresolvedField"},"title":"Unresolved","type":"array"},"sources_consulted":{"default":[],"items":{"type":"string"},"title":"Sources Consulted","type":"array"},"source_outcomes":{"default":[],"items":{"$ref":"#/components/schemas/SourceOutcomeReport"},"title":"Source Outcomes","type":"array"},"response_hash":{"default":"","title":"Response Hash","type":"string"},"billable":{"default":true,"title":"Billable","type":"boolean"},"billing_note":{"default":"","title":"Billing Note","type":"string"},"reachability":{"anyOf":[{"$ref":"#/components/schemas/Reachability"},{"type":"null"}],"default":null},"informative_fields":{"default":[],"items":{"type":"string"},"title":"Informative Fields","type":"array"}},"required":["status"],"title":"EntityEvidenceResponse","type":"object"},"AddressRequest":{"additionalProperties":false,"description":"One question: is chain+address the intended target for this entity?\n\n`chain` is REQUIRED and is never derived. An address's shape says which families it\ncould belong to and never which chain it is on, so a request that omits the chain is\nnot a narrower question — it is a different, unanswerable one.","properties":{"domain":{"maxLength":253,"minLength":3,"title":"Domain","type":"string"},"chain":{"title":"Chain","type":"string"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Address"},"protocol":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Protocol"},"purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Purpose"}},"required":["domain","chain"],"title":"AddressRequest","type":"object"},"ActionDecision":{"additionalProperties":false,"description":"The one field an agent is expected to branch on.\n\nNOT A SAFETY VERDICT. `transact: true` says the provenance evidence ties this chain and\naddress to the entity that was asked about. It says nothing about whether the code at\nthat address is audited, benign, or unable to take the caller's funds. Both sentences\ntravel with the field so the distinction cannot be lost in transit.","properties":{"transact":{"title":"Transact","type":"boolean"},"reason":{"title":"Reason","type":"string"},"means":{"default":"there is sufficient provenance evidence that this chain and address is the intended contract target","title":"Means","type":"string"},"does_not_mean":{"default":"this is not a safety, audit or malice assessment; the contract may still be unaudited, upgradeable to hostile code, or able to take your funds","title":"Does Not Mean","type":"string"}},"required":["transact","reason"],"title":"ActionDecision","type":"object"},"AddressSource":{"additionalProperties":false,"description":"One checkable reading: who said it, where, in what words, and when.","properties":{"url":{"minLength":1,"title":"Url","type":"string"},"excerpt":{"maxLength":1000,"minLength":1,"title":"Excerpt","type":"string"},"retrieved_at":{"format":"date-time","title":"Retrieved At","type":"string"},"source_id":{"minLength":1,"title":"Source Id","type":"string"},"operator":{"default":"","title":"Operator","type":"string"},"basis":{"default":"inferred","title":"Basis","type":"string"},"states_chain":{"default":"","title":"States Chain","type":"string"},"states_address":{"default":"","title":"States Address","type":"string"},"role":{"default":"","title":"Role","type":"string"},"role_excerpt":{"default":"","title":"Role Excerpt","type":"string"}},"required":["url","excerpt","retrieved_at","source_id"],"title":"AddressSource","type":"object"},"AddressStatus":{"description":"What happened. `CONFLICT` is a first-class outcome, not a kind of failure.\n\n`INSUFFICIENT_EVIDENCE` means the claim was put and the evidence did not support it.\n`UNRESOLVED` means no claim could be put at all — no candidate address, an address the\nchain cannot hold, or no entity-controlled page that answered.","enum":["PASS","CONFLICT","INSUFFICIENT_EVIDENCE","UNRESOLVED"],"title":"AddressStatus","type":"string"},"ConflictReading":{"additionalProperties":false,"description":"One side of a disagreement, kept whole.\n\nA conflict is only useful if the buyer can go and look. Every reading keeps its chain,\nits address, its operator, its URL, its verbatim excerpt and its retrieval time, so the\ndisagreement can be re-adjudicated by somebody with a stricter rule than ours.","properties":{"chain":{"title":"Chain","type":"string"},"address":{"title":"Address","type":"string"},"operator":{"title":"Operator","type":"string"},"source_id":{"title":"Source Id","type":"string"},"url":{"title":"Url","type":"string"},"excerpt":{"title":"Excerpt","type":"string"},"retrieved_at":{"format":"date-time","title":"Retrieved At","type":"string"},"basis":{"title":"Basis","type":"string"},"role":{"default":"","title":"Role","type":"string"}},"required":["chain","address","operator","source_id","url","excerpt","retrieved_at","basis"],"title":"ConflictReading","type":"object"},"ProxyContext":{"additionalProperties":false,"description":"An upgradeable contract, described without turning it into a disagreement.\n\nTHE CANONICAL INTERACTION TARGET IS THE PROXY. That is the address a caller sends a\ntransaction to, it is the address that stays the same across upgrades, and the\nimplementation behind it is expected to change. Reporting the implementation as an\nalternative reading would manufacture a conflict out of the contract working normally.","properties":{"is_proxy":{"default":false,"title":"Is Proxy","type":"boolean"},"proxy_address":{"default":"","title":"Proxy Address","type":"string"},"implementation_addresses":{"default":[],"items":{"type":"string"},"title":"Implementation Addresses","type":"array"},"proxy_type":{"default":"","title":"Proxy Type","type":"string"},"note":{"default":"","title":"Note","type":"string"}},"title":"ProxyContext","type":"object"},"AddressEvidenceResponse":{"additionalProperties":false,"description":"The payload. `action.transact` is derived here and nowhere else.","properties":{"status":{"$ref":"#/components/schemas/AddressStatus"},"entity":{"title":"Entity","type":"string"},"protocol":{"default":"","title":"Protocol","type":"string"},"chain":{"title":"Chain","type":"string"},"chain_caip2":{"default":"","title":"Chain Caip2","type":"string"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Address"},"confidence":{"default":0.0,"title":"Confidence","type":"number"},"agreement":{"default":"0_of_0","title":"Agreement","type":"string"},"independent_origins":{"default":0,"title":"Independent Origins","type":"integer"},"evidence_basis":{"default":[],"items":{"type":"string"},"title":"Evidence Basis","type":"array"},"basis_meaning":{"additionalProperties":{"type":"string"},"title":"Basis Meaning","type":"object"},"evidence":{"default":[],"items":{"$ref":"#/components/schemas/AddressSource"},"title":"Evidence","type":"array"},"context":{"default":[],"items":{"$ref":"#/components/schemas/AddressSource"},"title":"Context","type":"array"},"conflicts":{"default":[],"items":{"$ref":"#/components/schemas/ConflictReading"},"title":"Conflicts","type":"array"},"proxy":{"anyOf":[{"$ref":"#/components/schemas/ProxyContext"},{"type":"null"}],"default":null},"contract_role":{"default":"","title":"Contract Role","type":"string"},"checked_purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Checked Purpose"},"checked_purpose_supported":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Checked Purpose Supported"},"self_published_only":{"default":false,"title":"Self Published Only","type":"boolean"},"checked_address":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Checked Address"},"checked_address_supported":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Checked Address Supported"},"sources_consulted":{"default":[],"items":{"type":"string"},"title":"Sources Consulted","type":"array"},"notes":{"default":[],"items":{"type":"string"},"title":"Notes","type":"array"},"action":{"$ref":"#/components/schemas/ActionDecision"},"billable":{"default":false,"title":"Billable","type":"boolean"},"billing_note":{"default":"","title":"Billing Note","type":"string"}},"required":["status","entity","chain","action"],"title":"AddressEvidenceResponse","type":"object"}}}}