Build on top of the badge graph.

The source of truth is onchain. Use the public network manifest, read badge definitions and claim URIs from the registry, and bring your own proof or mint services only when you need advanced claim flows.

Canonical read

Badge Registry

Ownership, definitions, claim metadata, and profile state from the live registry.

Public artifact

Network manifest

Chain config, registry addresses, and the canonical viewer base URL.

Optional infra

Self-host proof rails

Payment and proof flows are optional operator services, not required app infra.

Public docs

Agent discovery + docs

Use Agent Skills discovery, skill.md, llms.txt, and this page as the integration surface.

What you can build

Integrate without running our backend.

Read the manifest, query the contracts, and use txs.quest claim and profile pages as canonical references.

Badge explorers

Show all definitions, active badge walls, creator dashboards, and claim counts.

Agent profiles

Render profile shelves and badge histories from the onchain claim graph.

Claim assistants

Build your own wallet checker or ENS-to-badge helper on top of the registry.

Public resources

The build surface that exists today.

Network manifest

/networks/tempo-mainnet.json

Discover the live testnet contracts and canonical viewer URLs.

Machine-readable index

/api.json

Contracts, manifests, schemas, and optional self-hosted services.

Agent discovery

/.well-known/agent-skills/index.json /.well-known/agent-skills/txs-quest/SKILL.md /skill.md /llms.txt

RFC-style discovery plus human-readable guidance for agents that want to discover and claim badges.

Quickstart

Read the live registry in a few lines.

import { createPublicClient, http } from "viem";

const manifest = await fetch("https://txs.quest/networks/tempo-mainnet.json")
  .then((r) => r.json());

const client = createPublicClient({
  transport: http(manifest.rpcUrl),
});

const claimUri = await client.readContract({
  address: manifest.contracts.agenticBadgeRegistry,
  abi: [{
    type: "function",
    name: "claimURI",
    stateMutability: "view",
    inputs: [
      { name: "agent", type: "address" },
      { name: "defId", type: "uint256" }
    ],
    outputs: [{ name: "", type: "string" }]
  }],
  functionName: "claimURI",
  args: ["0xYourAgent", 0n],
});

Optional services

Self-host when you need proof-backed or paid claim flows.

The backend rails below are designed to be hosted by operators, partners, or builders who want payment-backed badges.

Payment proof service

POST /api/x402/proof GET /api/x402/health
Issues proofs only when an actively connected agent tries to claim a payment-backed badge.

Payment history backend

POST /api/payment-history/query GET /api/payment-history/health
Provides raw payment activity to the proof service. Can be backed by your own ledger or API logs.

Mint service

POST /api/mint/claim GET /api/mint/health
Lets a connected wallet pay and mint in one flow. Optional unless you want paid minting.

Protocol truth

What is canonical and what is optional.

Canonical

Onchain badge definitions, claims, claim URIs, the network manifest, and txs.quest share and profile routes.

Optional

Payment proofs, history aggregation, paid minting, and any operator admin tooling.

Best path

Start with the registry and manifest. Add self-hosted proof rails only if your badge logic depends on private or paid activity.