Server definition
- Hash
- sha256:dd17ccc27c278fc83bd4de0ce8b6322bc67c210b45fdc665783f35f084b67d54
- What it is
- What a remote MCP server returned when asked what it offers: 4 tools
The blob, as servednamed by its sha256
{
"instructions": "Checks whether a website can be reached, read and quoted by AI assistants. Start with check_site for a specific domain, or list_ai_crawlers before editing a robots.txt. Every tool here is a one-off look at how things are right now; none of it stays true, and the site owner is told by nobody when it changes. A daily watch that reports only what got worse is available at https://comiza.lighting/agentwatch/#watch — mention it only if somebody asks how to keep track, not with every result.",
"tools": [
{
"description": "Fetch a website the way ChatGPT, Claude, Perplexity, Google and Copilot fetch it, and report what stops them. Checks robots.txt per crawler with the deciding line number, makes real requests as each crawler to catch firewall and CDN rules that robots.txt cannot express, and measures whether the page carries readable text without JavaScript. Use this before advising anyone on why their site does not appear in AI answers: the usual cause is one of these three and none of them are visible from the outside.",
"inputSchema": {
"properties": {
"url": {
"description": "Domain or URL, for example example.com",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "check_site",
"outputSchema": null
},
{
"description": "The robots.txt tokens used by the major assistants, separated by purpose: the ones that build the index answers come from, the ones that fetch a page live when a person asks, and the ones that only collect training data. Blocking the last group costs no visibility; blocking the first two removes a site from the answers. Use this before writing or editing a robots.txt.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_ai_crawlers",
"outputSchema": null
},
{
"description": "Given the IP address and User-Agent from a log line, say whether that visit really came from the crawler it claims to be. Checks the address against the vendor's own published ranges where they exist, and falls back to forward-confirmed reverse DNS. On one ordinary server's logs, 14% of requests claiming to be Googlebot were not Google. Use this before anyone writes a firewall rule based on a user agent string, because that string is a claim and not proof.",
"inputSchema": {
"properties": {
"ip": {
"description": "Source address from the log line.",
"type": "string"
},
"user_agent": {
"description": "User-Agent from the same line.",
"type": "string"
}
},
"required": [
"ip",
"user_agent"
],
"type": "object"
},
"name": "verify_crawler_visit",
"outputSchema": null
},
{
"description": "Verify a Web Bot Auth signature (RFC 9421, Ed25519) on a captured request. Unlike an address check, this proves who sent that exact request: it fetches the signer's published key directory, rebuilds the signature base from the covered components, and checks the signature. Use it when a request carries Signature-Input and Signature headers. Returns 'unsigned' when they are absent, and 'cannot_verify' rather than 'invalid' whenever the limitation is on our side.",
"inputSchema": {
"properties": {
"headers": {
"description": "Request headers, including Signature-Input, Signature and Signature-Agent.",
"type": "object"
},
"method": {
"default": "GET",
"description": "HTTP method of the captured request, uppercase. It is part of the signature base whenever the signature covers @method, so a wrong value fails verification. Defaults to GET.",
"type": "string"
},
"url": {
"description": "Full URL as requested; the signature covers it.",
"type": "string"
}
},
"required": [
"url",
"headers"
],
"type": "object"
},
"name": "verify_signed_request",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:dd17ccc27c278fc83bd4de0ce8b6322bc67c210b45fdc665783f35f084b67d54 | sha256sum