BoundID
API liveRobinhood Chain#

Know Your Agent.

Identity and permissions for AI agents. Prove who controls an agent, cap what it can spend, and revoke it with one signature.

Built onERC-8004EIP-712ERC-1271W3C VC 2.0
Acme Operations / Acme Invoice Agent
#
  • RegisteredBoundID registry
  • Control checkedowner + agent keys
  • Operator attestedBoundID Verify · 30d
  • Policy eligibledelegation v3
Delegation v3
ACTIVE
Asset
USDG0x5fc5…d168
Per payment
100.00
Window
--:--:-- left
Daily budget0.00 / 500.00
Approved recipients
Northwind SupplyContoso FreightFabrikam Parts
signed by 0xb915…28d7 · EIP-712
binding v3 · agent key 0xC273…584C
Guard decisions
    Try itto
    Product

    A key proves control.
    Not authority.

    An agent's wallet can sign anything. BoundID separates who controls the agent, what its owner allows, and what actually executes.

    RegisteredBoundID registry
    Control checked2 keys · 6d ago
    Operator attestedBoundID Verify · 18d left
    Policy eligibledelegation v3 · 24h
    Who is this agent?

    BoundID Passport

    Dated claims from named issuers. Each one states what it proves and what it doesn't.

    • Registered → control → operator → policy
    • Pending, active, suspended, revoked, expired
    • Zero identity evidence on-chain
    Operator reviewISSUED
    • Owner key signed challenge
    • Agent key signed challenge
    • Endpoint answered probe
    • Operator KYB matched
    sig 0x9f3c…e41b · key epoch 3 · exp 30d
    Who vouches for it?

    BoundID Verify

    Approved issuers check key control and the operator, then sign scoped credentials that expire.

    • Wallet challenge and endpoint probe
    • Operator KYB through named providers
    • Issuer keys with epochs and suspension
    POST /v1/evaluations
    {
      "decision": "ALLOW",
      "reasonCodes": ["POLICY_MATCH"],
      "policyVersion": 3,
      "validUntil": "+60s",
      "signature": "0x5b1d…c07a"
    }
    Is this call allowed, right now?

    BoundID API

    ALLOW, DENY or INDETERMINATE, with reason codes and a receipt signed for 60 seconds.

    • EIP-712 receipts your contracts can verify
    • Bound to chain, recipient, asset and amount
    • Missing evidence never becomes ALLOW
    ExecutionGuard

    Enforced where the money moves.

    A credential alone can't stop a transfer. The guard re-checks the exact call at execution, consumes its nonce and updates the budget atomically. Revocation beats every cached decision.

    guard.execute(transfer(Northwind Supply, 84.00 USDG))
    ✓ executed · spent 84.00 / 500.00 · nonce consumed
    guard.execute(transfer(0x6496…E0DA, 60.00 USDG))
    ✕ reverted · RECIPIENT_NOT_ALLOWED
    owner.revoke(delegation v3)
    ✕ every later call · DELEGATION_REVOKED
    How it works

    Register. Attest. Delegate. Enforce.

    Four steps from an anonymous key to an agent your counterparties can check, and a kill switch that actually works.

    1. 01

      Register

      The owner key and the agent's own key both sign a binding challenge. The agent gets a passport at binding v1.

      agentRefbnd:4663:1042
      control checked · 2 signatures
    2. 02

      Attest

      An approved issuer checks the operator and signs a 30-day credential. The evidence stays off-chain.

      credentialcrd_7m3k9q2x8v1p
      BoundID Verify · key epoch 3
    3. 03

      Delegate

      The owner signs exactly what the agent may do: asset, recipients, per-payment and daily caps, expiry.

      policyHash0x9b1e…c44a
      EIP-712 · v1 · 24 hours
    4. 04

      Enforce

      Every call is evaluated and guarded. Revoke once, and every later call fails, even with a live session key.

      decisionDENY
      DELEGATION_REVOKED
    Developers

    One request. A signed answer.

    Ask BoundID API whether an agent may make a specific call. The answer comes with reason codes and a receipt your contracts can check.

    curl https://useboundid.com/api/v1/evaluations \
      -H "content-type: application/json" \
      -d '{
        "agentRef": "bnd:4663:1",
        "request": {
          "to": "0xCcb26681DcF04FDF9Ab1F828781d77D85ECdB7e3",
          "amount": "84000000"
        }
      }'
    to
    Response

    Run the request against the live API.

    Try an unlisted recipient or more than 100 USDG.

    Receipts are EIP-712 signed and valid for 60 seconds.
    60 s

    Receipt lifetime. Bound to the request hash, chain block and audience.

    EIP-712

    Typed signatures for owners, agents, issuers and receipts. Replays fail.

    Fail-closed

    Missing, stale or unreachable evidence returns INDETERMINATE, never ALLOW.

    Security

    Fail-closed by default.

    Assume agents get compromised, issuers make mistakes and infrastructure goes down. Each failure mode has a hard rule and a reason code.

    BINDING_STALE

    Key changes void old permissions

    Every owner or execution-key change bumps the binding version. Nothing signed for the old binding carries over.

    NONCE_REUSED

    Replays and edits are rejected

    Signatures bind chain, recipient, asset, amount and nonce. A reused nonce or altered call fails.

    DAILY_BUDGET_EXCEEDED

    Budgets can't be raced

    Spend counters update atomically in base units, so two concurrent calls can't both spend the last dollar.

    DELEGATION_REVOKED

    Revocation always wins

    A revoked delegation fails every later call, including ones holding a receipt issued a second earlier.

    STATUS_UNAVAILABLE

    Unknown is not yes

    If chain or registry status can't be read, the answer is INDETERMINATE. Nothing defaults to ALLOW.

    PRIVACY

    No personal data on-chain

    Documents, biometrics and prompts stay in encrypted, access-logged storage. Chain state holds random IDs and status.

    Network

    Anchored to Robinhood Chain.

    Every receipt names the block it was evaluated against. Revocations and status are shared state that independent apps can read without trusting a BoundID server.

    Chain ID
    4663
    Block time
    Gas price
    Gas token
    ETH
    Soft confirmation
    < 1 s
    Ethereum finality
    ~13 min after posting
    Robinhood Chain · mainnetBlockscout
    Latest block
    $KYA

    Bonded verification.

    $KYA is the collateral behind BoundID Verify's issuer network. A false attestation costs the issuer that signed it.

    • Provider bonds

      Issuers lock KYA against the exposure of each verification job. Collateral releases only after its challenge window closes.

    • Disputes

      Evidence-backed challenges freeze only the affected collateral: 7-day challenge, 7-day response, 14-day appeal, three independent reviewers.

    • Fees stay stable

      Customers pay for verification in stable assets. KYA is collateral, not a toll, and reading a passport never needs it.

    Max supply
    1,000,000,000
    Decimals
    18
    Minting
    None after genesis
    Network
    Robinhood Chain
    Allocation100% · 1B KYA
    Ecosystem & providers35%
    Protocol treasury20%
    Core contributors20%
    Strategic contributors10%
    Community reserve10%
    Liquidity reserve5%
    Release schedulemonths from launch
    0%50%100%012243648
    EcosystemTreasuryContributors12-month cliff

    Token parameters are proposed and subject to legal review. No KYA has been issued, and nothing on this site is an offer to sell or a solicitation to buy any asset. Holding or staking KYA carries no right to fees, dividends or yield.

    Know your agent
    before it spends.

    Pilot access is open for agent-wallet teams, payment apps and verification providers.

    No spam. One email when your pilot slot opens.

    Follow @UseBoundID