Packet Guru Agent Verifier MCP
This MCP server provides a read-only tool for verifying Web Bot Auth (RFC 9421) signatures. It allows AI agents to test if a signature is valid and receive guidance on how to fix issues, supporting privacy-first network forensics and agent authentication debugging.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://fp.packet.guru/api/v1/mcpWhat its tools do
1 tool, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (1)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to packet.guru ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Verify Web Bot Auth signature validity
- Debug AI agent authentication errors
- Check signature fixes for RFC 9421 compliance
Source and maintenance
Protocol and capabilities
- Server
- guru.packet/agent-verifier 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 1 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
1 advertised
self_check_web_bot_auth — Check my own Web Bot Auth setup
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.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifier for this verdict, safe to quote in a support request."
},
"ip": {
"type": "object",
"properties": {
"asn": {
"type": [
"integer",
"null"
],
"description": "Autonomous system number of the network."
},
"org": {
"type": [
"string",
"null"
],
"description": "The organisation that network is registered to."
},
"origin": {
"type": "string",
"description": "What kind of network the address belongs to: residential, datacenter, mobile, and so on."
},
"hostname": {
"type": [
"string",
"null"
],
"description": "Reverse DNS name of the address, when it has one."
},
"riskLevel": {
"type": "string",
"description": "The same figure as a word: low, medium or high."
},
"riskScore": {
"type": "integer",
"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."
},
"blacklisted": {
"type": "boolean",
"description": "Whether the address appears on the public abuse feeds this service tracks."
}
},
"description": "Plain facts about your own address: network, operator, reputation of the address itself.",
"additionalProperties": true
},
"geo": {
"type": "object",
"properties": {
"city": {
"type": [
"string",
"null"
],
"description": "City the address is placed in."
},
"region": {
"type": [
"string",
"null"
],
"description": "First-level administrative division."
},
"country": {
"type": [
"string",
"null"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"timezone": {
"type": [
"string",
"null"
],
"description": "IANA timezone name for that place."
}
},
"description": "Country, region, city and timezone of your address.",
"additionalProperties": true
},
"meta": {
"type": "object",
"properties": {
"axes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sources that contributed to this answer, such as ip, knownBot and webBotAuth. A field can be missing without anything being wrong: its source did not contribute."
},
"apiVersion": {
"type": "string",
"description": "Version of this API, such as v1."
},
"queryTimeMs": {
"type": [
"integer",
"null"
],
"description": "How long the answer took to build, in milliseconds."
}
},
"description": "Envelope: API version, how long the answer took, and the sources that contributed.",
"additionalProperties": true
},
"mode": {
"enum": [
"direct"
],
"type": "string",
"description": "You called this endpoint yourself, so the answer describes your own request."
},
"signals": {
"type": "object",
"properties": {
"agent": {
"type": "object",
"properties": {
"card": {
"type": "object",
"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.",
"additionalProperties": true
},
"notes": {
"type": "array",
"description": "Observations about your setup that are not faults."
},
"knownBot": {
"enum": [
"matched",
"none"
],
"type": "string",
"description": "A second check, independent of the 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 range. none is the usual answer and not a fault: no operator publishes a list containing this address, which holds for most agents and for every address that is not a large crawler."
},
"signature": {
"type": "object",
"description": "Whether a Web Bot Auth signature was present and how it came out.",
"additionalProperties": true
},
"webBotAuthDetail": {
"type": "object",
"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.",
"additionalProperties": true
},
"refutedSignatures": {
"type": "array",
"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."
},
"keyDirectoryBinding": {
"enum": [
"binding-proven",
"binding-key-proven",
"binding-not-provided",
"binding-failed",
"binding-not-checked"
],
"type": "string",
"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."
}
}
},
"transport": {
"type": "object",
"properties": {
"provenance": {
"enum": [
"measured",
"unavailable"
],
"type": "string",
"description": "measured = your request arrived directly and was read first-hand. unavailable = it did not, and no finding in this answer rests on it."
}
}
},
"automation": {
"type": "object",
"properties": {
"uaClient": {
"type": "string",
"description": "What your User-Agent string alone says you are. A string, not a judgement."
},
"clientHints": {
"type": "string",
"description": "State of the Client Hints headers you sent."
}
}
}
}
},
"success": {
"type": "boolean",
"description": "Always true on a 200. Errors carry success:false and an error object."
},
"identity": {
"type": "object",
"properties": {
"bot": {
"type": [
"string",
"null"
],
"description": "The specific bot within that operator, when the evidence distinguishes one."
},
"method": {
"type": "string",
"description": "How the name was established: signature when your own signature verified, ip-range when your address sat in a list its operator publishes."
},
"trusted": {
"type": "boolean",
"description": "Whether the established name is one this verifier holds a trust anchor for. A verified signature from an unknown domain still says who sent the request, and false here says that nothing more is known about that domain."
},
"operator": {
"type": [
"string",
"null"
],
"description": "The name established for you, when one could be. Null when nothing named you."
}
},
"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.",
"additionalProperties": true
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1079 ms
- 95th percentile latency
- 1079 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1079 ms · metadata changed · 1 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http packet-guru-agent-verifier-mcp https://fp.packet.guru/api/v1/mcpCodex
codex mcp add packet-guru-agent-verifier-mcp --url https://fp.packet.guru/api/v1/mcpCursor
{
"mcpServers": {
"packet-guru-agent-verifier-mcp": {
"url": "https://fp.packet.guru/api/v1/mcp"
}
}
}Cline
{
"mcpServers": {
"packet-guru-agent-verifier-mcp": {
"type": "streamableHttp",
"url": "https://fp.packet.guru/api/v1/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"packet-guru-agent-verifier-mcp": {
"type": "http",
"url": "https://fp.packet.guru/api/v1/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http packet-guru-agent-verifier-mcp https://fp.packet.guru/api/v1/mcpClaude Desktop
https://fp.packet.guru/api/v1/mcpWindsurf
{
"mcpServers": {
"packet-guru-agent-verifier-mcp": {
"serverUrl": "https://fp.packet.guru/api/v1/mcp"
}
}
}Let your agent find its tools
Find servers like Packet Guru Agent Verifier MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other developer tools servers
Do you run Packet Guru Agent Verifier MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.