{"ok":true,"type":"ergo.dev_services_index.v1","generated_at":"2026-06-08T01:49:06.609Z","took_ms":2172,"posture":{"label":"developer_utility_belt","note":"Human-facing tools live under /build/services. Machine-facing helpers live under /api/dev/*."},"counts":{"total":26,"live":24,"guarded":2,"machine_readable":23},"categories":{"funding":{"label":"Funding","description":"Get test funds and bootstrap paid examples."},"inspect":{"label":"Inspect","description":"Decode addresses, boxes, transactions, and status."},"build":{"label":"Build","description":"Hash, compile, publish, and experiment."},"agents":{"label":"Agents","description":"MCP, Sage, receipts, and live agent status."},"trust":{"label":"Trust","description":"Receipt verification, conformance, and mainnet gates."}},"faucet":{"configured":false,"enabled":false,"endpoint":"/api/dev/faucet","fallback_url":"https://testnet.ergofaucet.org/","reason":"Set a dedicated faucet backend/wallet and anti-abuse gate before enabling payouts."},"services":[{"id":"testnet-faucet","title":"Ergo Testnet Faucet","summary":"Guarded testnet funding surface with address validation and a public faucet fallback.","href":"/build/services#faucet","apiHref":"/api/dev/faucet","category":"funding","state":"guarded","latency":"network","machineReadable":true,"notes":["Address validation is live.","Payouts stay disabled until a dedicated faucet wallet and anti-abuse gate are configured.","The public faucet link stays visible while internal payouts are guarded."]},{"id":"address-inspector","title":"Address Inspector","summary":"Validate Ergo addresses and extract network, address type, and ErgoTree.","href":"/build/services#tools","apiHref":"/api/dev/tools","category":"inspect","state":"live","latency":"instant","machineReadable":true,"notes":["Works without explorer access.","Useful before sending faucet funds or examples."]},{"id":"box-inspector","title":"Box / Register Inspector","summary":"Fetch a box from mainnet or testnet and normalize value, registers, tokens, and status.","href":"/build/services#tools","apiHref":"/api/dev/tools","category":"inspect","state":"live","latency":"network","machineReadable":true,"notes":["Understands 64-char box ids.","Shows raw explorer payload for debugging."]},{"id":"tx-inspector","title":"Transaction Inspector","summary":"Resolve transaction state, inputs, outputs, and explorer links from one tx id.","href":"/build/services#tools","apiHref":"/api/dev/tools","category":"inspect","state":"live","latency":"network","machineReadable":true,"notes":["Mainnet and testnet explorer lookup.","Good for support, docs, and receipt debugging."]},{"id":"receipt-verifier","title":"Sage Receipt Verifier","summary":"Verify whether a Sage id resolves to chain proof or a full Accord receipt bundle.","href":"/build/services#tools","apiHref":"/api/dev/tools","category":"trust","state":"live","latency":"network","machineReadable":true,"notes":["Reads /api/sage/receipt/<id>.","Surfaces Agreement, Verification, and Settlement JSON presence."]},{"id":"blake2b256","title":"Blake2b-256 Hasher","summary":"Hash exact UTF-8 or hex bytes the same way ErgoScript and agent-payment predicates expect.","href":"/build/services#tools","apiHref":"/api/dev/tools","category":"build","state":"live","latency":"instant","machineReadable":true,"notes":["Returns digest and byte length.","Good for task hashes and acceptance predicate examples."]},{"id":"ergoscript-playground","title":"ErgoScript Playground","summary":"Monaco-powered browser workbench for ErgoScript examples and sigma-rust WASM.","href":"/build/playground","category":"build","state":"live","latency":"instant","machineReadable":false,"notes":["Route-level lazy loaded.","Developer-facing surface, not a backend API."]},{"id":"mcp-endpoint","title":"Public MCP Endpoint","summary":"Machine-facing entry point for MCP clients and future Ergo agent tools.","href":"https://mcp.ergoblockchain.org/mcp","apiHref":"https://mcp.ergoblockchain.org/health","category":"agents","state":"live","latency":"network","machineReadable":true,"notes":["Use /health for checks.","Use /mcp for Streamable HTTP clients."]},{"id":"economic-mcp-tools","title":"Economic MCP Tool Contracts","summary":"Safe MCP contracts for service discovery, jobs, quotes, wallet policy, payment intents, receipt verification, and reputation.","href":"/agents/mcp","apiHref":"/api/agents/mcp-tools","category":"agents","state":"live","latency":"instant","machineReadable":true,"notes":["Manifest is published before runtime MCP advertisement.","MCP tools prepare intents and proof checks; they never sign transactions or custody value.","Mainnet-ready and production-custody claims remain false."]},{"id":"agent-live-status","title":"Agent Economy Live Status","summary":"Single JSON view of Sage, receipt storage, MCP, signer health, and mainnet gate state.","href":"/agent-economy/live","apiHref":"/api/agent-economy/live","category":"agents","state":"live","latency":"network","machineReadable":true,"notes":["Feeds Agent Hub.","Useful for dashboards, bots, and smoke checks."]},{"id":"agent-developer-launch-kit","title":"Agent Economy Launch Kit","summary":"Five-minute developer path across live status, policy checks, receipts, MCP, services, and widget embedding.","href":"/agent-economy/launch-kit","apiHref":"/api/agent-economy/launch-kit","category":"agents","state":"live","latency":"instant","machineReadable":true,"notes":["Human page and JSON manifest share one source.","Keeps testnet proof and mainnet gate language explicit."]},{"id":"agent-proof-explorer","title":"Agent Economy Proof Explorer","summary":"Evidence board for Sage receipts, Accord conformance, MCP health, widget state, and mainnet gate status.","href":"/agent-economy/proofs","apiHref":"/api/agent-economy/proofs","category":"agents","state":"live","latency":"network","machineReadable":true,"notes":["Human page renders the machine-readable proof API.","Keeps receipt data centralized and links to the canonical Sage receipt API."]},{"id":"agent-discovery","title":"Agent Economy Discovery","summary":"Well-known JSON map for Agent Hub, Proof API, Sage receipts, MCP, schemas, packages, and verification commands.","href":"/.well-known/agent-economy.json","apiHref":"/api/agent-economy/discovery","category":"agents","state":"live","latency":"network","machineReadable":true,"notes":["Canonical machine entrypoint for tools that need to discover the live proof surface.","Schema: /agent-economy/discovery.schema.v0.json."]},{"id":"agent-service-publish-validator","title":"Agent Service Publish Validator","summary":"Validate a provider manifest for capabilities, pricing, payment rails, predicates, receipts, evidence, and forbidden claims before operator review.","href":"/agents/publish","apiHref":"/api/agents/publish","category":"agents","state":"live","latency":"instant","machineReadable":true,"notes":["POST validates only; it never publishes automatically.","Requires ergo_testnet posture, mainnet_ready=false, production_custody=false, and receipt expectations.","Designed for provider agents that want to enter the bootstrap registry safely."]},{"id":"agent-reputation-graph","title":"Agent Reputation Graph","summary":"Receipt-derived trust surface for providers, tools, verifier templates, settlement evidence, disputes, and mainnet boundaries.","href":"/agents/reputation","apiHref":"/api/agents/reputation","category":"agents","state":"live","latency":"instant","machineReadable":true,"notes":["Not a centralized score or identity claim.","Uses receipts, settlements, verifier coverage, and visible failure modes as reputation inputs.","Keeps mainnet_ready=false until external review and audit-bound script identity exist."]},{"id":"agent-job-acceptance-validator","title":"Agent Job Acceptance Validator","summary":"Validate a worker intent for an open bootstrap job: job id, capabilities, output terms, receipt expectations, evidence, and testnet posture.","href":"/jobs/accept","apiHref":"/api/jobs/accept","category":"agents","state":"live","latency":"instant","machineReadable":true,"notes":["POST validates only; it never assigns work automatically.","Requires receipt_expectation.requires_receipt=true and ergo_testnet posture.","Designed for worker agents that want to accept receipt-backed bootstrap jobs safely."]},{"id":"agent-job-quote-scaffold","title":"Agent Job Quote Scaffold","summary":"Validate a job quote request and return the Agreement draft, receipt expectation, and settlement handoff before any wallet signs.","href":"/jobs/quote","apiHref":"/api/jobs/quote","category":"agents","state":"live","latency":"instant","machineReadable":true,"notes":["POST validates only; it never assigns work, signs transactions, escrows value, or creates mainnet payouts.","Requires ergo_testnet Note rail, auto_settle=false, mainnet_value=false, and operator approval.","Designed as the handoff between accepted work and a future Agreement/receipt flow."]},{"id":"agent-openapi","title":"Agent Economy OpenAPI","summary":"OpenAPI contract for discovery, live status, proofs, launch kit, review pack, wallet-agent policy, and Sage receipts.","href":"/agent-economy/openapi.v0.json","apiHref":"/agent-economy/openapi.v0.json","category":"agents","state":"live","latency":"network","machineReadable":true,"notes":["Designed for API clients, SDK scaffolding, and documentation tooling.","Keeps x-ergo-posture.mainnet_ready=false in the contract."]},{"id":"wallet-agent-policy-check","title":"Wallet-Agent Policy Check","summary":"Deterministic allow/deny verdicts for proposed wallet-agent actions before signing.","href":"/api/agent-economy/wallet-agent/policy-check","apiHref":"/api/agent-economy/wallet-agent/policy-check","category":"agents","state":"live","latency":"network","machineReadable":true,"notes":["Checks recipient, reserve, amount, fee, expiry, task hash, and receipt expectations.","Request and verdict schema: /agent-economy/wallet-agent-policy-check.schema.v0.json.","Returns reasons and warnings only; it never signs or broadcasts."]},{"id":"ergo-connect-wallet-boundary","title":"ErgoConnect Wallet Boundary","summary":"CAIP-native spec surface for ErgoAuth proof, ErgoPay handoff, wallet policy, reduced transactions, and receipt expectations.","href":"/build/ergo-connect","apiHref":"/.well-known/ergo-connect.json","category":"agents","state":"live","latency":"network","machineReadable":true,"notes":["Spec/bootstrap surface only; it is not production wallet software.","Explicitly forbids claiming upstream Trust Wallet or TrustConnect production support until upstream support exists.","Keeps agents outside private keys and silent signing authority."]},{"id":"wallet-agent-policy-playground","title":"Wallet-Agent Policy Playground","summary":"Interactive allow/deny lab for mutating a proposed wallet action and inspecting verdict JSON.","href":"/build/agent-payments/policy-playground","apiHref":"/api/agent-economy/wallet-agent/policy-check","category":"agents","state":"live","latency":"instant","machineReadable":false,"notes":["Uses the same policy-check endpoint as the reference runner.","Good first stop before wiring wallet UI."]},{"id":"wallet-agent-reference-runner","title":"Wallet-Agent Reference Runner","summary":"Developer sequence for local policy, exact transaction simulation, host-owned signing, and receipt retention.","href":"/build/agent-payments/wallet-agent-runner","apiHref":"/api/agent-economy/wallet-agent/reference-flow","category":"agents","state":"live","latency":"human","machineReadable":true,"notes":["Keeps signing inside the host-owned wallet layer.","Stops the flow before wallet UI when policy denies the action."]},{"id":"sage-widget","title":"Embeddable Sage Widget","summary":"React and vanilla embed surface for paid Sage chat, quote, Note verification, receipt links, and tenant config.","href":"/agent-economy/sage-widget","apiHref":"https://github.com/bez111/sage-widget","category":"agents","state":"live","latency":"human","machineReadable":false,"notes":["v0.3.0 is published on npm.","React, vanilla, typed API clients, and receipt callbacks are in the public tarball.","Canonical Sage host is testnet live proof, not mainnet readiness."]},{"id":"accord-conformance","title":"Accord Conformance Evidence","summary":"Receipt-driven conformance artifacts for Sage/Accord provider checks.","href":"/api/sage/accord","apiHref":"/api/sage/accord","category":"trust","state":"live","latency":"network","machineReadable":true,"notes":["POST without headers returns the 402 challenge.","Valid receipt headers return provider proof."]},{"id":"blog-cms","title":"Blob Blog CMS","summary":"Drop Markdown plus image, publish as a site-styled blog entry without redeploying static content.","href":"/admin/blog","apiHref":"/api/admin/blog","category":"build","state":"guarded","latency":"human","machineReadable":true,"notes":["Admin-only workflow.","Uses Vercel Blob as durable storage."]},{"id":"json-service-index","title":"Developer Service Index","summary":"Machine-readable catalog of every public developer helper on the site.","href":"/api/dev/services","apiHref":"/api/dev/services","category":"inspect","state":"live","latency":"network","machineReadable":true,"notes":["Designed for agents and docs automation.","Includes health probes where available."]}],"probes":{"site_health":{"ok":true,"status":200,"ms":171,"error":null},"agent_live":{"ok":true,"status":200,"ms":2158,"error":null},"receipt_storage":{"ok":true,"status":200,"ms":1597,"error":null},"sage_accord":{"ok":true,"status":200,"ms":290,"error":null},"mcp_health":{"ok":true,"status":200,"ms":202,"error":null},"agent_launch_kit":{"ok":true,"status":200,"ms":141,"error":null},"wallet_agent_policy":{"ok":true,"status":200,"ms":195,"error":null},"wallet_agent_reference_flow":{"ok":true,"status":200,"ms":1467,"error":null},"wallet_agent_policy_playground":{"ok":true,"status":200,"ms":89,"error":null},"ergo_connect":{"ok":true,"status":200,"ms":72,"error":null},"economic_mcp_tools":{"ok":true,"status":200,"ms":67,"error":null},"agent_service_publish":{"ok":true,"status":200,"ms":158,"error":null},"agent_reputation":{"ok":true,"status":200,"ms":80,"error":null},"agent_job_acceptance":{"ok":true,"status":200,"ms":176,"error":null},"agent_job_quote":{"ok":true,"status":200,"ms":215,"error":null}}}