assay
A2A & MCP Pre-Flight Security: SHA-256 tool schema rug-pull detection and liveness grades.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (5)
- HIGH
- MEDIUMen assay_preflight
- MEDIUMen assay_probe
- MEDIUMen assay_verify_delivery
- MEDIUMen assay_get_ledger_policy
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"assay": {
"url": "https://assay-207908449630.us-central1.run.app/mcp"
}
}
}Puntos de conexión remotos
https://assay-207908449630.us-central1.run.app/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (4)
🟢assay_preflight(target, expected_tools_hash)
Gate a remote MCP, A2A, or x402 endpoint before calling or paying it by probing live JSON-RPC reachability, hashing tools/list (SHA-256), and scanning for prompt-injection poisoning. When expected_tools_hash is provided, any mismatch against the live tools/list digest forces verdict='deny' to block silent schema rug-pulls; when omitted, verdict reflects liveness and injection safety alone. Read-only gate; first 5 calls/IP are free and quota-exceeded calls return a 402 top-up prompt. Use before tool execution or payment; to register or refresh public leaderboard telemetry use assay_probe; to read or pin stored policy hashes use assay_get_ledger_policy; after payment use assay_verify_delivery. Example: target='https://agentdiet-72343955726.us-central1.run.app/mcp'.
Esquema de entrada
{
"type": "object",
"properties": {
"target": {
"type": "string",
"minLength": 8,
"maxLength": 512,
"examples": [
"https://agentdiet-72343955726.us-central1.run.app/mcp"
],
"description": "Public HTTPS URL of the remote MCP server, A2A agent, or x402 endpoint to inspect (e.g. 'https://tandem.ac/mcp'). Private and loopback IPs are blocked."
},
"expected_tools_hash": {
"type": "string",
"minLength": 0,
"maxLength": 128,
"description": "Optional 64-char SHA-256 hex digest of the canonical MCP tools/list schema from mcp-lock.json. Omit to read or auto-pin the current live digest; pass a 64-hex digest to enforce zero-drift gating."
}
},
"required": [
"target"
],
"additionalProperties": false,
"examples": [
{
"target": "https://agentdiet-72343955726.us-central1.run.app/mcp"
}
]
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"error": {
"type": [
"string",
"null"
]
},
"verdict": {
"type": "string"
},
"reason": {
"type": "string"
},
"receipt": {
"type": "string"
},
"dossier": {
"type": "object"
}
},
"required": [
"verdict",
"receipt"
]
}🟡assay_probe(target)
Register a new remote MCP, A2A, or x402 endpoint or refresh its public Assay Observatory dossier by running a live HTTP, agent-card, and JSON-RPC tools/list inspection without policy gating. Target must be a public HTTPS origin (private IPs are rejected with a 400 error); each call appends a timestamped observation and increments rug_pulls if tools_hash drifted since the prior stored observation. Writes to the public ledger; first 5 calls/IP are free and retries are idempotent on steady schemas. Use to onboard or re-index a server; for pre-call allow/deny gating use assay_preflight; for historical observations or hash pinning use assay_get_ledger_policy; for post-payment disputes use assay_verify_delivery. Example: target='https://agentdiet-72343955726.us-central1.run.app/mcp'.
Esquema de entrada
{
"type": "object",
"properties": {
"target": {
"type": "string",
"minLength": 8,
"maxLength": 512,
"examples": [
"https://agentdiet-72343955726.us-central1.run.app/mcp"
],
"description": "Public HTTPS URL of the remote MCP server, A2A agent, or x402 endpoint to inspect (e.g. 'https://tandem.ac/mcp'). Private and loopback IPs are blocked."
}
},
"required": [
"target"
],
"additionalProperties": false,
"examples": [
{
"target": "https://agentdiet-72343955726.us-central1.run.app/mcp"
}
]
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"error": {
"type": [
"string",
"null"
]
},
"verdict": {
"type": "string"
},
"reason": {
"type": "string"
},
"receipt": {
"type": "string"
},
"dossier": {
"type": "object"
}
},
"required": [
"verdict",
"receipt"
]
}🟢assay_verify_delivery(target, tx_hash, status_code)
Audit a paid x402 or A2A provider after payment to confirm delivery or prove an SLA breach with an HMAC-SHA256 signed receipt. Passing status_code >= 500 forces verdict='sla_breach_confirmed' even if the live re-probe succeeds, while passing tx_hash cryptographically binds your Base or Solana payment signature into the receipt (omitting tx_hash still verifies liveness and issues a probe-bound receipt). Non-destructive; first 5 calls/IP are free and failed target connections do not throw tool errors. Use only after paying a provider; before payment use assay_preflight; for public indexing use assay_probe; for policy history use assay_get_ledger_policy. Example: target='https://agentdiet-72343955726.us-central1.run.app/mcp'.
Esquema de entrada
{
"type": "object",
"properties": {
"target": {
"type": "string",
"minLength": 8,
"maxLength": 512,
"examples": [
"https://agentdiet-72343955726.us-central1.run.app/mcp"
],
"description": "Public HTTPS URL of the remote MCP server, A2A agent, or x402 endpoint to inspect (e.g. 'https://tandem.ac/mcp'). Private and loopback IPs are blocked."
},
"tx_hash": {
"type": "string",
"minLength": 0,
"maxLength": 128,
"description": "Optional on-chain payment transaction hash (0x Base USDC hash or base58 Solana signature) to bind into the signed SLA receipt. Omit to run an unsigned post-call SLA check."
},
"status_code": {
"type": "string",
"minLength": 0,
"maxLength": 8,
"description": "Optional HTTP status code returned by the paid endpoint (e.g. '200', '502', '504'). Codes >= 500 force verdict='sla_breach_confirmed' even if a retry probe succeeds."
}
},
"required": [
"target"
],
"additionalProperties": false,
"examples": [
{
"target": "https://agentdiet-72343955726.us-central1.run.app/mcp"
}
]
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"error": {
"type": [
"string",
"null"
]
},
"verdict": {
"type": "string"
},
"reason": {
"type": "string"
},
"receipt": {
"type": "string"
},
"dossier": {
"type": "object"
}
},
"required": [
"verdict",
"receipt"
]
}🟡assay_get_ledger_policy(target, expected_tools_hash)
Retrieve historical conformance observations and manage pinned SHA-256 tools/list policy hashes in the Assay ledger for a target endpoint. When expected_tools_hash is provided, it pins that 64-hex digest as the target's baseline policy and compares it against the latest stored observation; when omitted, it returns the stored dossier and last 20 drift observations without network probing unless the target is unindexed. Idempotent; first 5 calls/IP are free. Use to audit historical drift or pin mcp-lock.json hashes; for live pre-execution gating use assay_preflight; for live re-indexing use assay_probe; for post-payment SLA receipts use assay_verify_delivery. Example: target='https://agentdiet-72343955726.us-central1.run.app/mcp'.
Esquema de entrada
{
"type": "object",
"properties": {
"target": {
"type": "string",
"minLength": 8,
"maxLength": 512,
"examples": [
"https://agentdiet-72343955726.us-central1.run.app/mcp"
],
"description": "Public HTTPS URL of the remote MCP server, A2A agent, or x402 endpoint to inspect (e.g. 'https://tandem.ac/mcp'). Private and loopback IPs are blocked."
},
"expected_tools_hash": {
"type": "string",
"minLength": 0,
"maxLength": 128,
"description": "Optional 64-char SHA-256 hex digest of the canonical MCP tools/list schema from mcp-lock.json. Omit to read or auto-pin the current live digest; pass a 64-hex digest to enforce zero-drift gating."
}
},
"required": [
"target"
],
"additionalProperties": false,
"examples": [
{
"target": "https://agentdiet-72343955726.us-central1.run.app/mcp"
}
]
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"error": {
"type": [
"string",
"null"
]
},
"verdict": {
"type": "string"
},
"reason": {
"type": "string"
},
"receipt": {
"type": "string"
},
"dossier": {
"type": "object"
}
},
"required": [
"verdict",
"receipt"
]
}Comunidad
Evidencia