Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,536Letters: 14Defects: 1,322counted 3 min ago
teppi

Server definition

Hash
sha256:79643f8b40d4440ba0133da6551de7027481e4bcf9e5ea22c15fb857eda2aadb
What it is
What a remote MCP server returned when asked what it offers: 5 tools

The blob, as servednamed by its sha256

{ "instructions": "Truth Bear serves official-source screening records; every paid record ships record_hash + signed citation so you can verify it offline. verify_citation and find_signal are free. Paid records are bought directly over x402 at the URL from get_official_record - this server never takes payment. Descriptive only: no advice, no forecasts, no adjudication.", "tools": [ { "description": "FREE coverage + freshness manifest: which signal_id lines exist, how many entities each covers, and fresh/recent/stale counts - so you can check \"is my entity covered and how fresh\" BEFORE paying. Optional filters: industry, signal_id, entity.", "inputSchema": { "properties": { "entity": { "description": "object id, e.g. a USGS site id", "type": "string" }, "full": { "description": "true = per-entity detail (larger); default compact summary", "type": "boolean" }, "industry": { "description": "restrict to one domain, e.g. hydrology, agriculture, energy", "type": "string" }, "signal_id": { "description": "e.g. hydrology.river-level", "type": "string" } }, "type": "object" }, "name": "find_signal", "outputSchema": { "additionalProperties": true, "description": "Coverage + freshness manifest. On failure this object is an error report instead (see error/detail).", "properties": { "cache_note": { "description": "What the cache does and does not affect.", "type": "string" }, "cache_policy": { "description": "Cache policy in force.", "type": "string" }, "cache_ttl_s": { "description": "Cache lifetime of this manifest in seconds.", "type": "number" }, "detail": { "description": "Present on some failures: the upstream endpoint's own error text.", "type": "string" }, "error": { "description": "Present only when the call failed; human-readable reason.", "type": "string" }, "freshness_rule": { "description": "How fresh/recent/stale are decided.", "type": "string" }, "freshness_thresholds": { "description": "The numeric thresholds behind freshness_rule.", "type": "object" }, "nature": { "description": "What this manifest is.", "type": "string" }, "note": { "description": "Screening-level disclaimer.", "type": "string" }, "signals": { "description": "One entry per signal line. Compact by default; pass full=true for per-entity detail.", "items": { "additionalProperties": true, "properties": { "checkup": { "description": "Latest patrol result for the line (full mode).", "type": "object" }, "description": { "description": "What the line measures (full mode).", "type": "string" }, "entities": { "description": "Per-entity detail; present only when full=true.", "items": { "additionalProperties": true, "properties": { "data_age_hours": { "description": "Age of the observation in hours.", "type": "number" }, "entity": { "description": "Object id.", "type": "string" }, "entity_name": { "description": "Human-readable object name.", "type": "string" }, "freshness": { "description": "fresh | recent | stale.", "type": "string" }, "observed_at": { "description": "ISO timestamp of the observation.", "type": "string" }, "overdue_days": { "description": "How many days past the declared cycle this object is.", "type": "number" }, "update_status": { "description": "on_schedule | overdue | not_published | unknown, for this object.", "type": "string" }, "vintage_days": { "description": "Age of the underlying source vintage in days.", "type": "number" } }, "type": "object" }, "type": "array" }, "entities_count": { "description": "How many objects the line covers.", "type": "integer" }, "factory": { "description": "Internal collector name (full mode).", "type": "string" }, "freshness_counts": { "description": "fresh / recent / stale counts for the line.", "type": "object" }, "industry": { "description": "Domain the line belongs to; null when the line is not classified.", "type": [ "string", "null" ] }, "latest_observed_at": { "description": "ISO timestamp of the newest observation; null when the line has never published.", "type": [ "string", "null" ] }, "max_overdue_days": { "description": "Largest overdue gap in the line, in days.", "type": "number" }, "record_type": { "description": "Kind of record the line emits (full mode).", "type": "string" }, "signal_id": { "description": "e.g. hydrology.river-level", "type": "string" }, "signal_id_label": { "description": "Human-readable line name (full mode).", "type": "string" }, "temporal_cycle": { "description": "Publication cycle declared by the upstream source (full mode).", "type": "string" }, "update_status": { "description": "on_schedule | overdue | not_published | unknown.", "type": "string" }, "update_status_counts": { "description": "Per-status entity counts.", "type": "object" } }, "type": "object" }, "type": "array" }, "totals": { "description": "signal_ids / industries / distinct_entities / freshness counts across the whole catalogue.", "type": "object" }, "update_status_rule": { "description": "How on_schedule / overdue / not_published / unknown are decided.", "type": "object" } }, "required": [], "type": "object" } }, { "description": "Returns the REAL x402 payment challenge (accepts[]: network / asset / payTo / amount) for the paid endpoint that serves a given signal_id+entity, or any listed endpoint addressed directly by `path`. This tool does NOT deliver paid data and does NOT take payment - MCP has no payment layer. Pay at the returned url with your own x402 client (USDC on Base or Solana, gasless EIP-3009; pay from a plain EOA) and you receive the record directly, with record_hash you can verify offline. This tool only fetches the 402 challenge; it delivers no paid data and collects no payment.", "inputSchema": { "anyOf": [ { "required": [ "path" ] }, { "required": [ "signal_id", "entity" ] } ], "properties": { "dim": { "description": "which product: full read (gauge) or a single add-on; the price of each is in the 402 challenge this tool returns, never here", "enum": [ "gauge", "ruler", "calibrated", "strata", "history" ], "type": "string" }, "entity": { "description": "which object within that line, e.g. the USGS site id 07010000", "type": "string" }, "path": { "description": "Alternative addressing: any listed endpoint path, optionally with its query string (e.g. \"/gauge/chokepoint-region?loc=hormuz\"). The full list of legal paths is the free /manifest?all=1. Use this for the bundles and census lines that are not addressed by signal_id+entity.", "type": "string" }, "signal_id": { "description": "which signal line, e.g. hydrology.river-level - use find_signal to list them", "type": "string" } }, "type": "object" }, "name": "get_official_record", "outputSchema": { "additionalProperties": false, "description": "The real x402 payment challenge and how to pay it. No paid data is ever returned here. On failure this object is an error report instead.", "properties": { "after_payment": { "description": "What the paid response carries and how to verify it offline.", "type": "string" }, "detail": { "description": "Present on some failures: the upstream endpoint's own error text.", "type": "string" }, "error": { "description": "Present only when the call failed; human-readable reason.", "type": "string" }, "expected": { "description": "Present on failure: what was expected (an HTTP 402 challenge).", "type": "string" }, "got": { "description": "Present on failure: the HTTP status actually returned.", "type": "integer" }, "hint": { "description": "Present on failure: the next thing to try, e.g. find_signal.", "type": "string" }, "how_to_pay": { "description": "How to sign and send the X-PAYMENT header; pay from a plain EOA.", "type": "string" }, "method": { "description": "HTTP method to use at pay_at (always GET).", "type": "string" }, "note": { "description": "Standing statement that this server never takes payment.", "type": "string" }, "pay_at": { "description": "URL to send the paid GET to.", "type": "string" }, "x402_challenge": { "description": "The upstream 402 body verbatim: x402Version + accepts[] (scheme / network / asset / payTo / amount).", "type": "object" } }, "required": [], "type": "object" } }, { "description": "FREE. Ask how to pay for a listed endpoint and get every channel with its REAL status - including the ones that are wired but not open yet. Three channels exist: x402 micropayment (for an agent with a funded USDC wallet on Base), a stateless subscription Bearer token (for a person or team - no wallet, no private key, no account), and a card rail. This tool takes no payment and holds no key; it only tells you which doors exist and which are open today.", "inputSchema": { "properties": { "path": { "description": "A listed endpoint path (e.g. \"/gauge/grid-reliability-region\") to get its price alongside the channels. Omit it to get the channel list on its own. The full list of legal paths is the free /manifest?all=1.", "type": "string" } }, "type": "object" }, "name": "purchase_options", "outputSchema": { "properties": { "asked_about": { "description": "the path you asked about, or null if you asked for the channel list on its own", "type": [ "string", "null" ] }, "detail": { "description": "the upstream error text, when there is one", "type": "string" }, "endpoint": { "description": "always \"/buy\" - which endpoint answered", "type": "string" }, "error": { "description": "present only when the buy endpoint could not be reached", "type": "string" }, "free_first": { "description": "what stays free and how to avoid paying for a lookup with no data", "type": "string" }, "note_unknown_path": { "description": "present only when asked_about matched no listed endpoint", "type": "string" }, "price": { "description": "the listed price, present only when asked_about matches a listed endpoint", "type": "string" }, "title": { "description": "the listing title of that endpoint, when it has one", "type": [ "string", "null" ] }, "ways_to_buy": { "description": "every payment channel with its REAL status - including channels that are wired but not open yet", "items": { "properties": { "caveat": { "description": "x402 only: the reference client default per-call cap that silently blocks higher-priced calls", "type": "string" }, "channel": { "description": "which rail", "enum": [ "x402", "subscription-token", "fiat-card" ], "type": "string" }, "for": { "description": "who this channel is for - agent with a wallet, or a person/team", "type": "string" }, "honest_note": { "description": "plain statement of what is not available yet, when that is the case", "type": "string" }, "how": { "description": "what you actually do to pay through this channel", "type": "string" }, "opens": { "description": "YYYY-MM-DD - present only while a channel is configured but not open", "type": [ "string", "null" ] }, "status": { "description": "open | not-self-serve | configured-not-open-yet | unavailable", "type": "string" }, "unlocks": { "description": "which endpoints this channel unlocks, when it is not per-call", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": "array" } }, "required": [], "type": "object" } }, { "description": "FREE. Given a record_hash from any Truth Bear record, look it up and recompute the canonical hash server-side, returning whether it is a genuine Truth Bear official record plus a plain-language reverse lookup of what exactly that hash attests. Use this to check a citation you were handed by another agent or document BEFORE relying on it. No payment, no API key.", "inputSchema": { "properties": { "record_hash": { "description": "sha256:<64 hex>, or a >=8-hex prefix as posted publicly", "type": "string" } }, "required": [ "record_hash" ], "type": "object" }, "name": "verify_citation", "outputSchema": { "additionalProperties": true, "description": "Verdict for one record_hash. On failure this object is an error report instead (see error/detail).", "properties": { "endpoint": { "description": "Always \"gauge/verify\".", "type": "string" }, "entity": { "description": "Object id the reading is about.", "type": [ "string", "null" ] }, "error": { "description": "Present only when the call failed; human-readable reason.", "type": "string" }, "found": { "description": "Whether a published Truth Bear reading matches this hash.", "type": "boolean" }, "hash_core_version": { "description": "Version of the canonical hash core used.", "type": [ "integer", "null" ] }, "how_to_check_a_claimed_value": { "description": "Present when found: how to check a value someone claims.", "type": "string" }, "is_truth_bear_record": { "description": "true / false, or null when the check could not be run (see undetermined).", "type": [ "boolean", "null" ] }, "note": { "description": "Screening-level disclaimer.", "type": "string" }, "ots_status": { "description": "Per-record field, unused: individual records are not stamped one by one. Anchoring happens per write-batch - see GET /gauge/anchor?hash= for the Merkle inclusion proof and, once the calendar confirms, the Bitcoin block number.", "type": [ "string", "null" ] }, "recomputed_hash": { "description": "sha256:<64 hex> recomputed from the stored record.", "type": [ "string", "null" ] }, "record_status": { "description": "Three-state disclosure. state=\"active\" for a normal record; a non-active state (e.g. \"quarantined\") means the record is genuine and its hash still verifies, but we have since flagged it as not fit for delivery - do NOT rely on the reading itself. Carries since (UTC ISO) and reason when non-active.", "properties": { "note": { "description": "Why the record is kept queryable on purpose.", "type": "string" }, "reason": { "description": "Short machine-readable reason code.", "type": [ "string", "null" ] }, "since": { "description": "UTC ISO second-precision timestamp of when we flagged it.", "type": [ "string", "null" ] }, "state": { "description": "\"active\" or a withdrawal state such as \"quarantined\".", "type": "string" } }, "type": [ "object", "null" ] }, "reverse_lookup": { "description": "Plain-language statement of exactly what this hash attests.", "type": "string" }, "scope": { "description": "What this hash does and does not attest.", "type": "string" }, "signal_id": { "description": "e.g. hydrology.river-level", "type": [ "string", "null" ] }, "snapshot_date": { "description": "YYYY-MM-DD of the reading.", "type": [ "string", "null" ] }, "source_ref": { "description": "URL of the official source record.", "type": [ "string", "null" ] }, "undetermined": { "description": "true when the lookup itself failed (e.g. DB unavailable) - NOT a verdict of \"fake\".", "type": "boolean" }, "verified": { "description": "Whether the canonical hash recomputed server-side matches the one supplied.", "type": "boolean" } }, "required": [], "type": "object" } }, { "description": "FREE. Cross-verify one GAUGE interweave line: it returns each official series (\"leg\") in the line with its own record_hash, current/previous values, expected direction and per-leg minMove deadband, plus a count-style state (directions_matched / direction_mismatch / inverse_consistent / not_comparable / insufficient) and N-of-M. Everything needed to recompute the verdict OFFLINE is in the response - verify each leg hash with verify_citation, then recompute dir=sign(current-previous) with the minMove deadband. Descriptive only: no forecast, no causation, no advice. No payment, no API key.", "inputSchema": { "properties": { "entity": { "description": "the object within the line, as US-<ST>, e.g. \"US-TX\" (case-insensitive). Required.", "type": "string" }, "line": { "description": "which interweave line, e.g. \"E\" (state vs national unemployment) or \"F\" (drought vs crop). Public demo lines are E and F.", "type": "string" } }, "required": [ "line", "entity" ], "type": "object" }, "name": "verify_triangular", "outputSchema": { "additionalProperties": true, "description": "Count-style read of one interweave line: how many official series moved in their pre-registered direction. Descriptive only - no verdict of \"true/false\", no forecast, no causation. On failure this object is an error report instead (see error/detail).", "properties": { "detail": { "description": "Present on some failures: the upstream endpoint's own error text.", "type": "string" }, "entity": { "description": "the external contract code, e.g. US-TX.", "type": "string" }, "error": { "description": "Present only when the call failed; human-readable reason.", "type": "string" }, "legs": { "description": "one entry per official series in the line.", "items": { "additionalProperties": true, "description": "One official series (\"leg\") in the line, with the fields needed to recompute its direction offline.", "properties": { "as_of": { "description": "ISO timestamp of the current reading; null when unavailable.", "type": [ "string", "null" ] }, "contradicts_registered_direction": { "description": "present on an optional leg that moved against its registered direction.", "type": "boolean" }, "current_value": { "description": "newest official reading; null when unavailable.", "type": [ "number", "null" ] }, "dependent": { "description": "present when this leg is a super-population of another (e.g. national vs state) - agreement is weak, only mismatch is informative.", "type": "boolean" }, "dir": { "description": "measured direction THIS window: +1 / -1 / 0 (|Δ|<minMove) / null when a value is missing. NOT the expectation.", "type": [ "integer", "null" ] }, "entity": { "description": "object id this leg reads, e.g. US-TX or us.", "type": "string" }, "expect": { "description": "pre-registered expected direction (+1 or -1) - the arrow, fixed in advance, not this window.", "type": [ "integer", "null" ] }, "metric": { "description": "which scalar in the reading, e.g. rate_pct.", "type": "string" }, "minMove": { "description": "per-leg deadband: if |current_value-previous_value| < minMove then dir is recorded as 0. Delivered so you can recompute dir yourself.", "type": [ "number", "null" ] }, "optional": { "description": "present when this leg is a non-required confirmation leg (does not change the line state).", "type": "boolean" }, "previous_value": { "description": "prior official reading; null when unavailable.", "type": [ "number", "null" ] }, "record_hash": { "description": "per-leg official record hash - POST /gauge/verify (or verify_citation) to check it independently.", "type": [ "string", "null" ] }, "signal_id": { "description": "e.g. macro.unemployment", "type": "string" }, "source_ref": { "description": "URL of the official source record; null when unavailable.", "type": [ "string", "null" ] }, "source_tier": { "description": "provenance tier of the leg; null when unavailable.", "type": [ "string", "null" ] } }, "required": [], "type": "object" }, "type": "array" }, "line": { "description": "the line code you asked for, e.g. E or F.", "type": "string" }, "matched": { "description": "N: how many REQUIRED legs had measured dir === expect this window.", "type": "integer" }, "nature": { "description": "neutral English disclosure; may be null.", "type": [ "string", "null" ] }, "note": { "description": "standing disclaimer: direction is observed, not a trend/forecast/causation claim.", "type": "string" }, "pair_state": { "description": "inverse-pair lines (F/FW) only: holds_stress | holds_relief | broken | insufficient | not_comparable; absent/null on other lines.", "type": [ "string", "null" ] }, "reason": { "description": "stale | missing_current_or_previous | below_min_move | period_misaligned | no_active_drought | parallel_display | null.", "type": [ "string", "null" ] }, "required": { "description": "M: number of required legs. The public claim is exactly \"N of M moved in the registered direction\".", "type": "integer" }, "snapshot_window": { "additionalProperties": true, "description": "the {from,to} window the legs were read over, or null.", "properties": { "from": { "description": "window start.", "type": "string" }, "to": { "description": "window end.", "type": "string" } }, "type": [ "object", "null" ] }, "state": { "description": "directions_matched | direction_mismatch | inverse_consistent | not_comparable | insufficient. A count/observation, NOT an adjudication.", "type": "string" }, "statement": { "description": "the locked, neutral disclosure sentence with N/M substituted.", "type": "string" }, "title": { "description": "letter-only title (e.g. \"線E\"); never a phenomenon name.", "type": "string" }, "verify_hint": { "description": "exactly how to recompute the state offline from each leg (record_hash + dir=sign(Δ) with minMove deadband).", "type": "string" } }, "required": [], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:79643f8b40d4440ba0133da6551de7027481e4bcf9e5ea22c15fb857eda2aadb | sha256sum