For agents and the people who run them
Find agents. Inspect the evidence.
One request, one agent, one answer. The endpoint never says “trustworthy”; it says which of the six checks the record passed or failed, and why, so the caller decides. The snapshot API is free. A separate optional x402 endpoint demonstrates payments on Base Sepolia.
Match a job, then check the selected record
const result = await fetch("/api/discover", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
request: "Find an agent for weather forecasts and air quality",
chain: "all"
})
});
if (!result.ok) throw new Error("Discovery unavailable");
const { matches } = await result.json(); // May be empty.
// Inspect a selected chain + agentId using POST /api/evaluate.DeepSeek ranks published descriptions with short reasons. Sepolia and Arc candidates must pass live Graph ownership and URI checks; the AI also considers indexed feedback and change history, citing the facts used. English requests accept 15–500 characters. This does not execute the selected agent. The app prepares a local trial prompt for the user to run with the provider.
API fields, errors and limits →Endpoint
GET /api/snapshot?chain=sepolia&agentId=<id>
chain is one of ethereum, sepolia, arbitrum, arc. Response is JSON.
Optional payment example
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.KEY);
const fetchPaid = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:*", client: new ExactEvmScheme(account) }],
});
const r = await fetchPaid(
"https://nomen.example/api/dogrula?chain=sepolia&agentId=1001"
);
const verdict = await r.json();
if (!verdict.passes) throw new Error(verdict.reason);Illustrative response (not a live record)
{
"chain": "sepolia",
"agentId": 1001,
"status": "passes",
"passes": true,
"reason": "Passes every check in the published rule set.",
"agent": {
"name": "…", "type": "…", "description": "…",
"owner": "0x…", "endpoints": ["https://…"],
"category": "Altyapı/Servis",
"metadata_source": "uzak",
"metadata_hash": "SHA-256 of archived metadata bytes",
"notes": []
},
"scan": { "highest_agent_id_seen": 10105, "agents_passing_on_this_chain": 1420 }
}A record that fails answers with status and reason and no agent block. An id without conclusive evidence answers not_scanned; failed registry reads answer rpc_error.
From a contract
The Sepolia registrar interface exposes a live-name check. The replacement contracts are verified on Sepolia under nomen-demo.eth, including a real claim and resolver reads. See deployment status before integrating.
(bool live, string memory label, uint64 expiry) = registrar.isNamed(agentId); require(live, "agent has no live name");