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

Server definition

Hash
sha256:63246c96ceb77394a97c5d21a62d7550d9cc5a8c21209217973bb26b9f187190
What it is
What a remote MCP server returned when asked what it offers: 1 tools

The blob, as servednamed by its sha256

{ "instructions": "One tool, taking no arguments. It reports how the request carrying the call looks from the outside: whether its Web Bot Auth signature verified, what the named key directory publishes, the exact fault and the sentence saying what to change, and plain facts about the address it arrived from. Call it directly, without a proxy, because the answer describes the request exactly as it arrives. Free and anonymous.", "tools": [ { "description": "Reports how the request carrying this call looks from the outside: whether its Web Bot Auth (RFC 9421) signature verified, what the key directory it named publishes, the exact fault if there is one and the sentence saying what to change, plus plain facts about the address it arrived from. Sign the call the way you sign requests to anyone else. Free, anonymous, no account. Takes no arguments: an unsigned call still gets an answer about its address.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "self_check_web_bot_auth", "outputSchema": { "properties": { "geo": { "additionalProperties": true, "description": "Country, region, city and timezone of your address.", "properties": { "city": { "description": "City the address is placed in.", "type": [ "string", "null" ] }, "country": { "description": "ISO 3166-1 alpha-2 country code of the address.", "type": [ "string", "null" ] }, "region": { "description": "First-level administrative division.", "type": [ "string", "null" ] }, "timezone": { "description": "IANA timezone name for that place.", "type": [ "string", "null" ] } }, "type": "object" }, "id": { "description": "Identifier for this verdict, safe to quote in a support request.", "type": "string" }, "identity": { "additionalProperties": true, "description": "Who you were established to be, and on what evidence. Empty of judgement: the outcome of checking a signature you sent against a directory you published.", "properties": { "bot": { "description": "The specific bot within that operator, when the evidence distinguishes one.", "type": [ "string", "null" ] }, "method": { "description": "How the name was established: `signature` when your own signature verified, `range` when your address sat in a list its operator publishes.", "type": "string" }, "operator": { "description": "The name established for you, when one could be. Null when nothing named you.", "type": [ "string", "null" ] }, "trusted": { "description": "Whether the established name is one this verifier holds a trust anchor for. A verified signature from a domain nobody knows is a verified signature from a domain nobody knows.", "type": "boolean" } }, "type": "object" }, "ip": { "additionalProperties": true, "description": "Plain facts about your own address: network, operator, reputation of the address itself.", "properties": { "asn": { "description": "Autonomous system number of the network.", "type": [ "integer", "null" ] }, "blacklisted": { "description": "Whether the address appears on the public abuse feeds this service tracks.", "type": "boolean" }, "hostname": { "description": "Reverse DNS name of the address, when it has one.", "type": [ "string", "null" ] }, "org": { "description": "The organisation that network is registered to.", "type": [ "string", "null" ] }, "origin": { "description": "What kind of network the address belongs to: residential, datacenter, mobile, and so on.", "type": "string" }, "riskLevel": { "description": "The same figure as a word: low, medium or high.", "type": "string" }, "riskScore": { "description": "Reputation of the ADDRESS, 0 to 100, higher meaning worse. A datacenter address scores in the middle by nature: it is a statement about where you are, never about who you are or what you did.", "type": "integer" } }, "type": "object" }, "meta": { "additionalProperties": true, "description": "Envelope: API version, how long the verdict took, which axes contributed.", "properties": { "apiVersion": { "description": "Version of this API. `v1` today.", "type": "string" }, "axes": { "description": "Which sources contributed to this answer. An axis absent here contributed nothing, which is why a field can be missing without anything being wrong.", "items": { "type": "string" }, "type": "array" }, "queryTimeMs": { "description": "How long the answer took to build, in milliseconds.", "type": [ "integer", "null" ] } }, "type": "object" }, "mode": { "description": "You called this endpoint yourself, so the answer describes your own request.", "enum": [ "direct" ], "type": "string" }, "signals": { "properties": { "agent": { "properties": { "card": { "additionalProperties": true, "description": "Your own published card read back to you, plus the one promise a single live request can settle: the User-Agent you said you would send.", "type": "object" }, "keyDirectoryBinding": { "description": "Whether your directory proved it published the key set that was read. binding-key-proven means the response signature verified but did not cover the body, so possession of the key is proven and the key set is not.", "enum": [ "binding-proven", "binding-key-proven", "binding-not-provided", "binding-failed", "binding-not-checked" ], "type": "string" }, "knownBot": { "description": "The second, independent check, and the one that has nothing to do with your signature: some operators publish the address ranges their crawlers use, and those lists are refreshed regularly. matched means the address this request came from is inside such a published range. none is the ordinary answer and is not a fault: it means no operator publishes a list containing this address, which is true of every address that is not a large crawler, and true of most agents.", "enum": [ "matched", "none" ], "type": "string" }, "notes": { "description": "Observations about your setup that are not faults.", "type": "array" }, "refutedSignatures": { "description": "Other signatures on the same request whose named directory does not list the key they used. You can confirm each against the published file yourself.", "type": "array" }, "signature": { "additionalProperties": true, "description": "Whether a Web Bot Auth signature was present and how it came out.", "type": "object" }, "webBotAuthDetail": { "additionalProperties": true, "description": "The specific fault, and the sentence saying what to change. Read this part first. Besides reason and fix it may carry three more members. clockDriftSec is how far the signing clock sits from this server, in seconds. directoryStatus is the HTTP status the named key directory answered with, where 403 or 429 is almost always a firewall in front of it refusing this verifier rather than anything about the keys. fromCachedDirectory appears only when true and means the answer rests on a stored copy that could not be refreshed, so a key reported as absent may simply have been published after that copy was taken.", "type": "object" } }, "type": "object" }, "automation": { "properties": { "clientHints": { "description": "State of the Client Hints headers you sent.", "type": "string" }, "uaClient": { "description": "What your User-Agent string alone says you are. A string, not a judgement.", "type": "string" } }, "type": "object" }, "transport": { "properties": { "provenance": { "description": "measured = your request arrived directly and was read first-hand. unavailable = it did not, and no finding in this answer rests on it.", "enum": [ "measured", "unavailable" ], "type": "string" } }, "type": "object" } }, "type": "object" }, "success": { "description": "Always true on a 200. Errors carry success:false and an error object.", "type": "boolean" } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:63246c96ceb77394a97c5d21a62d7550d9cc5a8c21209217973bb26b9f187190 | sha256sum