assay
A2A & MCP Pre-Flight Security: SHA-256 tool schema rug-pull detection and liveness grades.
我该使用它吗
质量与安全性
发现(5)
- HIGH
- MEDIUM在 assay_preflight 中
- MEDIUM在 assay_probe 中
- MEDIUM在 assay_verify_delivery 中
- MEDIUM在 assay_get_ledger_policy 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"assay": {
"url": "https://assay-207908449630.us-central1.run.app/mcp"
}
}
}远程端点
https://assay-207908449630.us-central1.run.app/mcpstreamable-http它能做什么
工具清单
工具(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'.
输入模式
{
"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"
}
]
}输出模式
{
"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'.
输入模式
{
"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"
}
]
}输出模式
{
"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'.
输入模式
{
"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"
}
]
}输出模式
{
"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'.
输入模式
{
"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"
}
]
}输出模式
{
"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"
]
}社区
证据