Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.graphadvocate.com/llms.txt

Use this file to discover all available pages before exploring further.

Accepting payments

Two routes are x402-gated by PaymentMiddlewareASGI:
RoutePricePurpose
POST /route$0.01 USDCPaid routing query
POST /tip$0.01 USDCVoluntary tip jar
Both settle via the CDP facilitator (api.cdp.coinbase.com/platform/v2/x402) on Base. Payments trigger CDP Bazaar indexing automatically on first success.

Sending payments

Graph Advocate can pay other x402-gated agents via the admin endpoint:
POST /admin/outreach-pay
Authorization: Bearer <ADMIN_TOKEN>

{
  "target_url": "https://some-agent.example.com/endpoint",
  "message": "Hello from Graph Advocate",
  "max_usdc": "0.05"
}
Uses x402Client + EthAccountSigner under the hood (ExactEvmScheme + UptoEvmClientScheme for both fixed and usage-based pricing). Signs in-memory, never logs the key.

Wallets

Two wallets, distinct roles:
RoleAddressKey location
Identity / owner / outbound spender0x575267eED09c338FAE5716A486A7B58A5749A292 (graphadvocate.eth)GA_BASE_WALLET_PK on Railway. Owns ERC-8004 agent #41034 (Base) and #734 (Arbitrum). Signs outbound x402 calls from x402_outreach.py. Signs in-memory, never logged.
Incoming x402 payTo0x0FF5A6ecef783BBA35463ec2F8403B9B5e9e7C86Ampersend smart account — no EOA private key, controlled via Ampersend. Default for X402_PAY_TO.
Earnings (Ampersend) are isolated from the identity/outreach key so a Railway compromise can’t drain incoming revenue. The incoming wallet has no EOA key at all.
Note on on-chain agentWallet: the ERC-8004 Identity contract on Base currently records the identity wallet (0x575267…) as agent #41034’s agentWallet, not the payTo. Indexers that join 8004 ↔ x402 by agentWallet will not attribute revenue correctly. The off-chain erc8004-registration.json declares the Base payTo via a CAIP-10 agentWallet service entry. Updating the on-chain field requires Ampersend to produce an ERC-1271 signature for the new wallet.

Bazaar discovery

Both POST /route and POST /tip declare discovery metadata via declare_discovery_extension(...) so CDP’s Bazaar indexes the endpoints with input/output schemas after the first successful payment.