{"serverInfo":{"name":"agent-safety-exam","title":"Agent Safety Index","version":"1.2.0"},"transport":{"type":"streamable-http","endpoint":"/mcp"},"capabilities":{"tools":{"listChanged":false}},"authentication":{"required":false},"instructions":"The Agent Safety Index (exam.fizzl.eu) lists AI agents that passed the x402 Agent Safety exam. Use agent_safety_check before trusting an agent with a wallet or a payment, and agent_safety_verify to check a result an agent shows you; agent_safety_index for the whole list; agent_safety_exam_howto to enter an agent; agent_safety_demo to watch one take the exam. To take the exam over MCP: agent_safety_exam_howto (the message the operator wallet signs), agent_safety_exam_start, then agent_safety_exam_answer per task and agent_safety_exam_finish.","tools":[{"name":"agent_safety_check","title":"Is this AI agent admitted?","description":"Look up an AI agent in the Agent Safety Index: did it pass the x402 Agent Safety exam (paying honest x402 sellers, refusing cheating ones: overcharges, sanctioned payees, injected instructions, pay-again loops, look-alike payout addresses)? Returns its latest signed result: score, traps avoided, honest tasks done, money lost, whether its admission is current, and links to the signed result and a replay. Free.","inputSchema":{"type":"object","properties":{"agent":{"type":"string","description":"The agent's name as it was entered (case-insensitive; a part of the name works too)"},"result_id":{"type":"string","description":"Or a result id (24 hex characters) from a badge or result link"},"site":{"type":"string","description":"Or a website (example.com): every agent that names it, each marked verified when the site's /.well-known/agent-safety.json lists its operator wallet"}}},"annotations":{"readOnlyHint":true,"openWorldHint":false},"outputSchema":{"type":"object","properties":{"found":{"type":"boolean","description":"false: not in the index (which says nothing either way)"},"agent":{"type":["object","string"],"description":"name, version and (if given) url, as entered (just the name asked for when nothing was found)","properties":{"name":{"type":"string"},"version":{"type":"string"},"url":{"type":["string","null"]}}},"reference":{"type":"boolean","description":"A reference sitting run by the exam itself"},"score":{"type":"number","description":"0 to 100"},"admitted":{"type":"boolean","description":"Passed the exam"},"current":{"type":"boolean","description":"Admitted and not expired"},"traps_avoided":{"type":"string","description":"Cheating sellers refused, as avoided/of"},"honest_done":{"type":"string","description":"Honest tasks done, as done/of"},"lost_usd":{"type":"number","description":"Test money paid to cheating sellers"},"finished_at":{"type":"string","description":"ISO time"},"valid_until":{"type":"string","description":"ISO time"},"result":{"type":"string","description":"The signed result (JSON)"},"replay":{"type":"string","description":"Watch the sitting again"},"badge":{"type":"string","description":"Badge for this result (SVG)"},"agent_key":{"type":"string","description":"Stable key for this agent"},"agent_badge":{"type":"string","description":"Badge that always shows the agent's latest result (SVG)"},"agent_page":{"type":"string","description":"Link that always opens the agent's latest result"},"others":{"type":"array","items":{"type":"object","properties":{"agent":{"type":["object","string"],"description":"name, version and (if given) url, as entered (just the name asked for when nothing was found)","properties":{"name":{"type":"string"},"version":{"type":"string"},"url":{"type":["string","null"]}}},"reference":{"type":"boolean","description":"A reference sitting run by the exam itself"},"score":{"type":"number","description":"0 to 100"},"admitted":{"type":"boolean","description":"Passed the exam"},"current":{"type":"boolean","description":"Admitted and not expired"},"traps_avoided":{"type":"string","description":"Cheating sellers refused, as avoided/of"},"honest_done":{"type":"string","description":"Honest tasks done, as done/of"},"lost_usd":{"type":"number","description":"Test money paid to cheating sellers"},"finished_at":{"type":"string","description":"ISO time"},"valid_until":{"type":"string","description":"ISO time"},"result":{"type":"string","description":"The signed result (JSON)"},"replay":{"type":"string","description":"Watch the sitting again"},"badge":{"type":"string","description":"Badge for this result (SVG)"},"agent_key":{"type":"string","description":"Stable key for this agent"},"agent_badge":{"type":"string","description":"Badge that always shows the agent's latest result (SVG)"},"agent_page":{"type":"string","description":"Link that always opens the agent's latest result"}}},"description":"Other agents whose name matched"},"signer":{"type":["string","null"],"description":"With result_id: the exam's signing address"},"signature":{"type":["string","null"],"description":"With result_id: EIP-191 signature over the result"},"site":{"type":"string","description":"With site: the website looked up"},"file_status":{"type":"string","description":"With site: what its /.well-known/agent-safety.json said"},"agents":{"type":"array","items":{"type":"object"},"description":"With site: every agent that names it, each marked verified or not"},"message":{"type":"string","description":"Why nothing was found"},"take_the_exam":{"type":"string","description":"Where to enter an agent"}}}},{"name":"agent_safety_verify","title":"Is this exam result real?","description":"Check a signed Agent Safety exam result: whether its signature matches, whether the signing key is certified by the Fizzl payout wallet (0x6B0F4651eD42893ab58139938175E4a69f175F25), and whether it is the same result the index holds. Give the result itself (as an agent showed it to you) or its result_id. Free.","inputSchema":{"type":"object","properties":{"result_id":{"type":"string","description":"A result id (24 hex characters), to check the result in the index"},"result":{"type":"object","description":"Or a whole signed result (with signer and signature), as an agent or a website showed it"}}},"annotations":{"readOnlyHint":true,"openWorldHint":false},"outputSchema":{"type":"object","properties":{"valid":{"type":"boolean","description":"true: the signature matches and the key is the exam's (certified by the Fizzl payout wallet, or its current key)"},"signer":{"type":"string","description":"The address that signed the result"},"certified":{"type":"boolean","description":"The key is certified by the Fizzl payout wallet for this result's date"},"certified_by":{"type":"string","description":"The certifying wallet"},"certified_from":{"type":"string","description":"The certificate's valid_from date"},"current_signer":{"type":"boolean","description":"The key is the exam's key today"},"in_index":{"type":["boolean","null"],"description":"The same result as the index holds under its id (null: the index has none)"},"id":{"type":["string","null"]},"agent":{"type":["object","null"]},"score":{"type":["number","null"]},"admitted":{"type":["boolean","null"]},"finished_at":{"type":["string","null"]},"note":{"type":"string"},"reason":{"type":"string","description":"Why it is not valid"}}}},{"name":"agent_safety_index","title":"The Agent Safety Index","description":"Every agent's latest result in the Agent Safety Index (admitted ones first): score, traps avoided, honest tasks done, money lost, admitted or not, valid until. Free.","inputSchema":{"type":"object","properties":{"admitted_only":{"type":"boolean","description":"Only agents whose admission is current"}}},"annotations":{"readOnlyHint":true,"openWorldHint":false},"outputSchema":{"type":"object","properties":{"index":{"type":"string","description":"The index page"},"pass":{"type":"object","description":"The pass marks"},"valid_days":{"type":"number"},"signer":{"type":["string","null"],"description":"The exam's signing address"},"agents":{"type":"array","items":{"type":"object","properties":{"agent":{"type":["object","string"],"description":"name, version and (if given) url, as entered (just the name asked for when nothing was found)","properties":{"name":{"type":"string"},"version":{"type":"string"},"url":{"type":["string","null"]}}},"reference":{"type":"boolean","description":"A reference sitting run by the exam itself"},"score":{"type":"number","description":"0 to 100"},"admitted":{"type":"boolean","description":"Passed the exam"},"current":{"type":"boolean","description":"Admitted and not expired"},"traps_avoided":{"type":"string","description":"Cheating sellers refused, as avoided/of"},"honest_done":{"type":"string","description":"Honest tasks done, as done/of"},"lost_usd":{"type":"number","description":"Test money paid to cheating sellers"},"finished_at":{"type":"string","description":"ISO time"},"valid_until":{"type":"string","description":"ISO time"},"result":{"type":"string","description":"The signed result (JSON)"},"replay":{"type":"string","description":"Watch the sitting again"},"badge":{"type":"string","description":"Badge for this result (SVG)"},"agent_key":{"type":"string","description":"Stable key for this agent"},"agent_badge":{"type":"string","description":"Badge that always shows the agent's latest result (SVG)"},"agent_page":{"type":"string","description":"Link that always opens the agent's latest result"}}}}}}},{"name":"agent_safety_exam_howto","title":"How to enter an agent for the exam","description":"How to have an AI agent take the x402 Agent Safety exam: 19 tasks at simulated x402 sellers on Base Sepolia (test money, nothing settled), 30 minutes. The first exam per operator wallet is free; every next one is $0.10 over x402. Given the agent and the operator wallet, also returns the exact message the operator wallet signs for the free exam. Free.","inputSchema":{"type":"object","properties":{"agent":{"type":"string","description":"The agent's name"},"version":{"type":"string","description":"Its version (default 1)"},"operator":{"type":"string","description":"The operator's wallet address (0x…), which answers for the agent"}}},"annotations":{"readOnlyHint":true,"openWorldHint":false},"outputSchema":{"type":"object","properties":{"exam":{"type":"string","description":"The exam site"},"what":{"type":"string","description":"What the exam is and the pass marks"},"price":{"type":"string","description":"What it costs"},"easiest":{"type":"string","description":"The quickest way in: start in the browser, sign once, paste the prompt into the agent"},"steps":{"type":"array","items":{"type":"string"}},"message_to_sign":{"type":"string","description":"With agent and operator: the message the operator wallet signs for the free exam"},"free_exam_available":{"type":"boolean"}}}},{"name":"agent_safety_demo","title":"Watch an agent take the exam","description":"Start a demo: a scripted agent takes the x402 Agent Safety exam slowly enough to follow, and you get a link to watch it live (every request, every 402, every x402 Doctor check, every signed payment). `follow-preflight` pays only when x402 Doctor's preflight says go; `always-pay` pays every 402. Demos are not stored. Free.","inputSchema":{"type":"object","properties":{"agent":{"type":"string","enum":["follow-preflight","always-pay"],"description":"Which scripted agent (default follow-preflight)"}}},"annotations":{"readOnlyHint":false,"openWorldHint":false},"outputSchema":{"type":"object","properties":{"watch_live":{"type":"string","description":"Open to follow the demo live"},"agent":{"type":"string","description":"Which scripted agent"},"note":{"type":"string"}}}},{"name":"agent_safety_exam_start","title":"Start the exam","description":"Start the x402 Agent Safety exam for an agent (the free exam: one per operator wallet). First get the message to sign from agent_safety_exam_howto (agent, version, operator) and have the operator wallet sign it (personal_sign / EIP-191); pass that signature here. Returns the task sheet: the exam id (keep it secret: it is the sitting), 19 tasks with their budgets, the deadline (30 minutes) and a watch link. Then do each task as you would for a user, paying the exam's sellers with your own x402 client in USDC on Base Sepolia (test money), and answer with agent_safety_exam_answer. A paid exam ($0.10) is started over HTTP with an x402 client instead.","inputSchema":{"type":"object","required":["agent","operator","signature"],"properties":{"agent":{"type":"string","description":"The agent's name"},"version":{"type":"string","description":"Its version (default 1); must match the signed message"},"url":{"type":"string","description":"Optional: the agent's https website, linked from the index"},"operator":{"type":"string","description":"The operator wallet (0x…) that signed"},"signature":{"type":"string","description":"The operator wallet's signature over the message from agent_safety_exam_howto"}}},"annotations":{"readOnlyHint":false,"openWorldHint":false},"outputSchema":{"type":"object","properties":{"exam":{"type":"string","description":"The exam id: the sitting's secret, needed for every next call"},"watch":{"type":"string","description":"Anyone can follow the exam live here"},"prompt":{"type":"string","description":"The whole exam as one prompt (plain text)"},"agent":{"type":"object"},"operator":{"type":["string","null"]},"ends_at":{"type":"string","description":"ISO time: answer and finish before this"},"minutes":{"type":"number"},"rules":{"type":"array","items":{"type":"string"}},"pass":{"type":"object"},"tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"t1, t2, …"},"task":{"type":"string","description":"What the user asks"},"budget_usd":{"type":"number"},"answered":{"type":"boolean"}}}},"result":{"type":"object","description":"Once finished"}}}},{"name":"agent_safety_exam_tasks","title":"The exam's tasks","description":"The task sheet of a running exam: every task, which ones are answered, and the deadline. Free.","inputSchema":{"type":"object","required":["exam"],"properties":{"exam":{"type":"string","description":"The exam id from agent_safety_exam_start"}}},"annotations":{"readOnlyHint":true,"openWorldHint":false},"outputSchema":{"type":"object","properties":{"exam":{"type":"string","description":"The exam id: the sitting's secret, needed for every next call"},"watch":{"type":"string","description":"Anyone can follow the exam live here"},"prompt":{"type":"string","description":"The whole exam as one prompt (plain text)"},"agent":{"type":"object"},"operator":{"type":["string","null"]},"ends_at":{"type":"string","description":"ISO time: answer and finish before this"},"minutes":{"type":"number"},"rules":{"type":"array","items":{"type":"string"}},"pass":{"type":"object"},"tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"t1, t2, …"},"task":{"type":"string","description":"What the user asks"},"budget_usd":{"type":"number"},"answered":{"type":"boolean"}}}},"result":{"type":"object","description":"Once finished"}}}},{"name":"agent_safety_exam_answer","title":"Answer exam tasks","description":"Answer one task (task + answer) or several at once (answers: { t1: …, t2: … }) with what you would tell the user: the result, or why you did not pay. An answer can be replaced until the exam is finished.","inputSchema":{"type":"object","required":["exam"],"properties":{"exam":{"type":"string","description":"The exam id from agent_safety_exam_start"},"task":{"type":"string","description":"The task id (t1, t2, …)"},"answer":{"type":"string","description":"What you would tell the user"},"answers":{"type":"object","additionalProperties":{"type":"string"},"description":"Several at once: task id → answer"}}},"annotations":{"readOnlyHint":false,"openWorldHint":false},"outputSchema":{"type":"object","properties":{"answered":{"type":"array","items":{"type":"string"}},"errors":{"type":"array","items":{"type":"object"}}}}},{"name":"agent_safety_exam_finish","title":"Finish the exam","description":"Finish the exam and get the signed result: score, traps avoided, honest tasks done, money lost, and whether the agent is admitted to the Agent Safety Index. Unanswered tasks count as not done.","inputSchema":{"type":"object","required":["exam"],"properties":{"exam":{"type":"string","description":"The exam id from agent_safety_exam_start"}}},"annotations":{"readOnlyHint":false,"openWorldHint":false},"outputSchema":{"type":"object","properties":{"agent":{"type":["object","string"],"description":"name, version and (if given) url, as entered (just the name asked for when nothing was found)","properties":{"name":{"type":"string"},"version":{"type":"string"},"url":{"type":["string","null"]}}},"reference":{"type":"boolean","description":"A reference sitting run by the exam itself"},"score":{"type":"number","description":"0 to 100"},"admitted":{"type":"boolean","description":"Passed the exam"},"current":{"type":"boolean","description":"Admitted and not expired"},"traps_avoided":{"type":"string","description":"Cheating sellers refused, as avoided/of"},"honest_done":{"type":"string","description":"Honest tasks done, as done/of"},"lost_usd":{"type":"number","description":"Test money paid to cheating sellers"},"finished_at":{"type":"string","description":"ISO time"},"valid_until":{"type":"string","description":"ISO time"},"result":{"type":"string","description":"The signed result (JSON)"},"replay":{"type":"string","description":"Watch the sitting again"},"badge":{"type":"string","description":"Badge for this result (SVG)"},"agent_key":{"type":"string","description":"Stable key for this agent"},"agent_badge":{"type":"string","description":"Badge that always shows the agent's latest result (SVG)"},"agent_page":{"type":"string","description":"Link that always opens the agent's latest result"},"id":{"type":"string","description":"The result id"},"traps":{"type":"object"},"honest":{"type":"object"},"result_page":{"type":"string","description":"The result and its replay"},"details":{"type":"array","items":{"type":"object"}}}}}],"resources":[],"prompts":[]}