erc8004-agent-liveness
ERC-8004 Agent Liveness
Prüft, ob ein Agent, der in der echten ERC-8004-„Trustless Agents“-Identity-Registry (Base-Sepolia-Testnetz) registriert ist, gerade jetzt tatsächlich live ist – nicht nur, dass er einmal registriert wurde. NEXUS-Kandidat #10 – manuelle Erstellung, nicht FORGE-generiert, dasselbe manuelle Cloud-Run-Asset-Muster wie bei den Kandidaten #3/#4/#6/#8/#9/#13/#16.
POST /verify-registered-agent {"agent_id": 3}– 0,10 $ pro Aufruf.MCP-Tool
verify_registered_agentunter/mcp, gleiche Parameter – derzeit kostenlos, siehe „Bekannte Einschränkungen“.GET /health,GET /.well-known/agent-card.json,GET /openapi.json(enthältx-payment-info),GET /.well-known/402index-verify.txt(Verifizierungsdatei für 402index-Claims).
Was das ist (und warum eine Registrierung allein nicht ausreicht)
ERC-8004 ist ein echter, laufender Ethereum-Standard für On-Chain-Agentenidentität: Ein Agent mint ein ERC-721-Token in einem IdentityRegistry, dessen tokenURI auf eine Off-Chain-Registrierungsdatei zeigt (JSON: Name, Beschreibung, deklarierte Endpunkte, active-Flag, unterstützte Trust-Methoden). Der Standard wurde am 29.01.2026 auf dem Ethereum-Mainnet live geschaltet, mit Referenz-Deployments auf Base-Mainnet und den Base-/Ethereum-/Linea-Sepolia-Testnetzen. Die Registrierung ist eine einmalige On-Chain-Aktion – ein echter registrierter Agent kann vollkommen ausfallen (Prozess beendet, Domain abgelaufen, Endpunkt geändert), während sein On-Chain-Datensatz unbegrenzt unverändert bleibt. Dieses Asset schließt diese Lücke: Es löst die echte On-Chain-Registrierung auf und führt zu genau diesem Zeitpunkt des Aufrufs einen echten MCP-initialize-Handshake gegen den deklarierten Endpunkt der Registrierungsdatei aus – dieselbe Unterscheidung zwischen Liveness und Registrierung, die agent-verification-api (Kandidat #3) bereits für über Domain-Claims beanspruhte Identitäten zieht, hier angewendet auf On-Chain-registrierte Identitäten.
Absicherung (live in dieser Sitzung verifiziiert, nicht aus einer einzelnen Quelle übernommen)
Vertragsadressen – zunächst aus einem Drittanbieter-Summary – wurden unabhängig voneinander per
eth_getCodegegenhttps://sepolia.base.orgüberprüft, bevor ihnen vertraut wurde:IdentityRegistry(0x8004A818BFB912233c491871b3d84c89A494BD9e) undReputationRegistry(0x8004B663056A597Dffe9eCcC1965A193B7388713) verfügen beide über echten, nicht-leeren deployed Bytecode.ABI – aus der Referenzimplementierung (
github.com/erc-8004/erc-8004-contracts/abis) bezogen – wurde gegen 3 echte registrierte Agenten (agentId1-3) live getestet, bevor sie fiel für dieses Asset vertrauen wurden:Agent 1's
tokenURIlöst zu einerdata:application/json;base64,...-URI auf.Agent 2's
tokenURIlöst zu eineripfs://bafkreiff...-URI auf.Agent 3's
tokenURIlöst zu einer echtenhttps://api.snack.money/agent/.../registration.json-URL auf. Alle 3 realen URI-Schemata von ERC-8004 wurden live bestätigt – nicht nur das eine, das die eigenen Beispiele des Specs zeigen.
getSummaryverlangt ein nicht-leeresclientAddresses-Array – live bestätigt (revertiert andernfalls mit"clientAddresses required"). Dieses Asset rauft zuerstgetClients(agentId)an und ruft nur dann auf, wenn mindestens eine Adresse zurückgegeben wird; Agenten ohne Feedback korrektfeedback_count: 0, ohne RPC-Fehler.agentId=999999(ein real nicht existentedes Token) revertiert korrekt mit einem benutzerdefinierten Fehler, live bestätigt – aufAGENT_NOT_FOUNDgemappt, keinen Crash.
MCP-Handshake-Engine: wiederverwendet, nicht neu implementiert
Gemäß der expliziten Anweisung im Task-Brief wurden _nexus_validate_public_url, _nexus_no_redirect_mcp_http_client und _mcp_handshake_check wörtlich aus manual_assets/agent-verification-api/main.py (Kandidat #3) übernommen – dieselbe SSRF-Vorprüfung, dieselbe No-Redirect-Haltung (genau der Fix, der dort nach dem Security-Review vom 22.08.2026 angewendet wurde, das einen Redirect-basierten SSRF-Bypass gefunden hatte), dasselbe begrenzte Timeout. Nicht über die Asset-Namenskonstante hinaus verändert. Der eigentliche Beitrag dieses Assets liegt eine Ebene davor: Sie löst eine ERC-8004-Registrierungsdatei (3 URI-Schemata) auf und wähltend einen realen Endpunkt aus deren endpoints-Array aus, das er der Engine übergibt.
Chain-Umfang, bewusst gewählt
Nur Base-Sepolia-Testnetz – dasselbe Netz, in dem bereits jede andere x402-Zahlung dieser Codebasis läuft. ERC-8004 ist auch auf Base-Mainnet und EthereumMainnet live (diese Sitzung live verifiziert), aber dieses Asset legt kein wählbare Chain seitens des Aufrufers aus: Es gibt keinen Beleg, dass ein Käufer für einen 7-Tage-Probationskandidaten (CLAUDE.md SS3) das Mainnet braucht.
Deploy-Ziel: Cloud Run
Gleiche Pipeline wie Kandidaten #4/#3/#6/#8/#9/#13/#16 – siehe skills/infra-deploy-ops.
# 1. First deploy -- PUBLIC_DOMAIN not known yet, every real request 421s until step 2.
./scripts/deploy_cloud_run.sh erc8004-agent-liveness manual_assets/erc8004-agent-liveness
# 2. Grab the printed *.run.app URL, then (only if it differs from env-vars.deploy.yaml's guess):
gcloud run services update erc8004-agent-liveness --region us-central1 --project nexus-505016 \
--update-env-vars PUBLIC_DOMAIN=<the-real-domain>Bekannte Einschränkungen (bewusst unbehoben – CLAUDE.md SS3, kein Gate ohne Beleg, dass es nötig ist)
MCP-Toolaufrufe werden nicht abgerechnet. Gleiche In-Process-Call-Muster wie bei jedem anderen manuellen Asset dieser Codebase.
active: falseführt kurzeit zurREGISTERED_INACTIVE, auch wenn der Endpunkt tatsächlich live ist. In diesem einen Fall wird der Selbstangabe des Registranten stärker vertraut als eine unabhängige Liveness-Prüfung. Ein Agent, der fälschlich als inaktiv vorgibt, (ungewöhnlicher Anreiz) würde falsch gemeldet. Akzeptiert: Nach Spezifikation istactivedas eigene Signal des Registranten; es zu denkpüren.REGISTERED_UNREACHABLE(der gegenteilige Fehlermodus – deklared aktiv, tatsächlich nicht erreichbar) ist der eigentliche Mehrwert dieses Assets und wird nicht herbeibe kürzgeschlossen.Die Endpoint-Wahl ist eine Heuristik, kein Spec-Erfordernis. Das
endpoints-Array von ERC-8004 ist frei formbar (beliebigername); dieses Asset bevorzugtmcp/x402/a2a/web(in dieser Reihenfolge) und fällt sonst auf den ersten Eintrag zurück. Eine Registrierung, die für den einzigen echten MCP-fähigen Endpoint einen nicht gelistendennameverwendet, würde trotzdem aufgegriffen (Namens-Matching ist nicht der einzige Pfad – der Fallback-ohne-Namenspräferenz deckt diese ab), aber eine Registrierung mit GLEICHMEHREREN Endpontes, bei der keiner der bevorzugten Namen den Life-Endpoint zeigt, könnte aus dem falschen EndpunktREGISTERED_UNREACHABLEmelden.
IPFS-Auflösung verwendet ein einziges öffentliches Gateway (
ipfs.io). Kein Fallback-Gateway – eine Registrierung, deren CDIP nicht über genau dieses Gateway gepyet/erreichbar ist einmal, meldetREGISTRATION_FETACH_FAILED, selbst wenn der Inhalt auf IPFS generell existiert.Kein Rate-Limiting pro Aufkörper. Klar in Ordnung für ein 7-Tage-Wegwerf-Messfenster.
reputationist ein selbst gemeldetes, uneingeschränktes, ungestaketes Signal. Jede EVM-Adresse kann für jedeagentIdReputationRegistry.giveFeedbackanrufen –feedback_count/average_valuesind echte On-Chain-Zahlen, aber nichts hindert den Betreiber des Agenten daran, sich selbst Sybil-Feedback zu geben. Als unverifiziertes Signal behandeln, nicht als Trust-Score (dieser Hinweis gilt nicht nur hier, sondern auch in der eigenen Schema-Beschreibung desreputation-Feld).
Qualitätsgate (2026-08-23, aus Design, nicht nachträglich)
Gleicher 2-Agenten-Prozess wie bei den Kandidaten #3/#4/#6/#8/#9/#13/#16 (Security-Linse; Funktionale- Qualitäts- und Buyer-Experience-Linse), vor dem ersten Deploy ausgeführt. Wir bekannten Befunde, alle vor der Live-Schaltung behoben:
Sicherheit (0 ausnutzbare Befunde): bestätigt, dass die drei – unverändert aus
agent-verification-api/main.pyübernommenen – Funktionen (_nexus_validate_public_url,_nexus_no_redirect_mcp_http_client,_mcp_handshake_check) den tatsächlichen SSRF-Redirect-Fix byte-für-byte enthalten, und dass der neuehttps:///IPFS-Registration-Fetch-Pfad dieselbe Abwehr eine Ebene früher anwendet, bevor eine Endpunkt extrahiert wird – damit wurde die Fehlklasse keinen Fall wiedereingeführt. Zwei niedrigeedu-/informative Punkte, beide als Defense-in-Depth behandelt, auch wenn weder ein bestätigter Exploit war: IPFS-CID-Konkatenation (live fir richtete, dass man den Hostipfs.internnicht mitipfs.ioverlassen konnte, wird es nun trotzdem miturllib.parse.quoteauf ein einziges Pfadsegment begrenzt) sowiedata:-URI-Base64-Decodierung (live als linear/nicht-amplifizierend bestätigt, kein Fix nötig).Funktional/Buyer-Experience (ein Must-Fix, ein Medium, angewendet): Eine Registrierungsdatei, deren Top-Level-JSON ein Nicht-Objekt ist (Array/string/Zahl – registrierungskontrollierter Inhalt) wurde mit
"ok": Trueund einemregistration, das kein dict ist, durchgereicht, obwohl jede downstream-Konsumer (_pick_liveness_endpoint,_classify_verdict, der Antwort-Body) von dict ausgegangen – so ein vorkommenderAttributeErrorwurde zu einem berechtigten 500er nachdem die x402-Zahlung bereits abgerechnet hatte. Behoben: Beide JSON-Parse-Stellen in_resolve_registration_fileverwenden nun Nicht-dict-Ergebnisse alsregistration_not_an_object, bevor"ok": Truezurückgegeben wird. Zusätzlich wurde der Reputation-Spielbarkeits-Caveat (siehe oben und die Schema-Beschreibung desreputation-Feld) ergänzt. Zwei niedrige/nice-to-have-Punkte (Endpoint-Schatten bei duplicateemname, unverifizierte Feldcase bei 2 optional-Registrierungsschlüsseln) bleibeneröffnet – noch kein Beleg, dass sie für echte Registrierungen wichtig sind, im Einklang mit CLAUDE.md SS3.End-to-end gegen echte Produktionsdaten vor und nach den Fixes verifiziert: 4 echte ERC-8004-Agenten-IDs auf Base-Sepolia (1, 2, 3 und eine echte, nicht existierende 99999) lieferten jeweils das korrekte Verdikt:
REGISTERED_UNREACHABLE(echte Registrierung, Endpunkt antwortet nicht auf MCP),REGISTERED_FETACH_FAILEDx2 (ein echtes IPFS-Gateway-Timeout und eine echte totehttps://-Registrierungs-URL – beides legitimeitle, keine Bugs) sowieAGENT_NOT_FOUND(echter On-Chain-Revert) – plus echte Reputations-7233 (1 Agent, 12?): 74 Feedback-Einträge von 12 verschiedenen Clients bei Agent 1.
Messung (Kandidat #10, 7-Tage-Fenster)
7-Tage-Fenster vom 23.08.2026 (echtes Deploy-Datum) -> Entscheidungspunkt 30.08.2026. Quelle der Wahrheit: traffic_events/revenue_events/mcp_call_events (asset_name = 'erc8004-agent-liveness'), nicht Cloud-Run-Logs. Tag 7: Bei null echten Traffic (Crawler herausgefiltert) den Cloud-Run-Dienst pausieren/löschen (gcloud run services delete erc8004-agent-liveness --region us-central1 --project nexus-505016).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The MCP-native bridge to ERC-8004 (on-chain agent identity/reputation/validation): resolve registrat
Confirms an AI agent/service is who it claims to be (domain + agent-card + MCP handshake).
Scan any website or MCP server for agent-trust-readiness; returns a signed, verifiable scorecard.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nexus-mcp-infra/erc8004-agent-liveness'
If you have feedback or need assistance with the MCP directory API, please join our Discord server