> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polygon.technology/llms.txt
> Use this file to discover all available pages before exploring further.

# ERC-8004 agent identity

> Register an onchain agent identity and manage reputation through the ERC-8004 registries on Polygon mainnet.

Six commands cover the ERC-8004 lifecycle: register a new agent identity, query its registered payment wallet, fetch metadata by key, read or write reputation. ERC-8004 sits separately from x402, payments are independent, but a registered identity gives counterparties a place to look up an agent's wallet, attestations, and feedback before transacting with it.

All `agent` commands operate on **Polygon mainnet only**, regardless of the wallet's default chain.

***

## How it works

<div style={{border:"1px solid #C8CFE1",borderRadius:"12px",overflow:"hidden",marginBottom:"24px"}}>
  <div style={{background:"linear-gradient(180deg,#EAE4F5 0%,#F6F3FB 100%)",borderBottom:"1px solid #D5C4F2",padding:"10px 16px",fontSize:"11px",fontWeight:"700",color:"#670DE5",letterSpacing:"0.06em",textTransform:"uppercase"}}>Identity lifecycle</div>

  <div style={{borderBottom:"1px solid #EEF0F9",padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>1</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>Operator</span>
    <span style={{color:"#670DE5",fontWeight:"700"}}>→</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>CLI</span>
    <span style={{fontFamily:"'Geist Mono',ui-monospace,monospace",fontSize:"12px",color:"#141635"}}>polygon-agent agent register --name ...</span>
  </div>

  <div style={{borderBottom:"1px solid #EEF0F9",padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>2</span>
    <span style={{background:"#EAE4F5",color:"#670DE5",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"700",whiteSpace:"nowrap"}}>IdentityRegistry</span>
    <span style={{fontSize:"13px",color:"#141635",marginLeft:"4px"}}>Mints an agentId, emits Registered event</span>
  </div>

  <div style={{borderBottom:"1px solid #EEF0F9",padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>3</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>Counterparty</span>
    <span style={{color:"#670DE5",fontWeight:"700"}}>→</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>CLI</span>
    <span style={{fontFamily:"'Geist Mono',ui-monospace,monospace",fontSize:"12px",color:"#141635"}}>polygon-agent agent reputation --agent-id ...</span>
  </div>

  <div style={{borderBottom:"1px solid #EEF0F9",padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>4</span>
    <span style={{background:"#EAE4F5",color:"#670DE5",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"700",whiteSpace:"nowrap"}}>ReputationRegistry</span>
    <span style={{color:"#670DE5",fontWeight:"700"}}>→</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>CLI</span>
    <span style={{fontSize:"13px",color:"#141635"}}>Returns score and tag breakdown</span>
  </div>

  <div style={{padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>5</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>Counterparty</span>
    <span style={{color:"#670DE5",fontWeight:"700"}}>→</span>
    <span style={{background:"#EAE4F5",color:"#670DE5",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"700",whiteSpace:"nowrap"}}>ReputationRegistry</span>
    <span style={{fontFamily:"'Geist Mono',ui-monospace,monospace",fontSize:"12px",color:"#141635"}}>polygon-agent agent feedback --value 95 --broadcast</span>
  </div>
</div>

The smart wallet pays gas for `register` and `feedback`. Read commands (`reputation`, `reviews`, `wallet`, `metadata`) do not need broadcast.

***

## Contracts

| Registry           | Address                                      |
| ------------------ | -------------------------------------------- |
| IdentityRegistry   | `0x8004A169FB4a3325136EB29fA0ceB6D2e539a432` |
| ReputationRegistry | `0x8004BAa17C55a88189AE136b182e5fdA19dE9b63` |

For the full standard, see [ERC-8004 on Polygon](/payment-services/agentic-payments/agent-integration/erc8004).

***

## Commands

### agent register

```bash theme={null}
polygon-agent agent register \
  --name "my-agent" \
  --agent-uri https://agent.example.com/card.json \
  --metadata "category=data,version=1.0"
```

Mints an ERC-721 identity in the IdentityRegistry. After broadcast, retrieve the assigned `agentId` from the Registered event in the transaction's Logs tab on Polygonscan.

| Flag                       | Default | Purpose                          |
| -------------------------- | ------- | -------------------------------- |
| `--wallet`                 | `main`  | Wallet that pays gas             |
| `--name`                   | none    | Agent name                       |
| `--agent-uri` (or `--uri`) | none    | URI pointing to an Agent Card    |
| `--metadata`               | none    | Key=value pairs, comma-separated |
| `--broadcast`              | `false` | Execute the transaction          |

### agent wallet

```bash theme={null}
polygon-agent agent wallet --agent-id 42
```

Returns the payment wallet registered for the agent.

### agent metadata

```bash theme={null}
polygon-agent agent metadata --agent-id 42 --key category
```

Reads one metadata value by key.

### agent reputation

```bash theme={null}
polygon-agent agent reputation --agent-id 42
polygon-agent agent reputation --agent-id 42 --tag1 reliability
```

Aggregated reputation score for the agent. Optional `--tag1` and `--tag2` filter by category.

### agent reviews

```bash theme={null}
polygon-agent agent reviews --agent-id 42
polygon-agent agent reviews --agent-id 42 --tag1 quality --include-revoked
```

Enumerates all feedback entries. `--include-revoked` shows entries that have been revoked by their authors.

### agent feedback

```bash theme={null}
polygon-agent agent feedback \
  --agent-id 42 \
  --value 95 \
  --tag1 reliability \
  --endpoint "https://api.example.com/v1" \
  --broadcast
```

Submits a feedback score. Useful for counterparties evaluating an agent after a completed interaction. Submitter is the calling smart wallet.

| Flag                | Default  | Purpose                 |
| ------------------- | -------- | ----------------------- |
| `--wallet`          | `main`   | Wallet that pays gas    |
| `--agent-id`        | required | Target agent            |
| `--value`           | required | Feedback score          |
| `--tag1` / `--tag2` | none     | Category tags           |
| `--endpoint`        | none     | Endpoint reviewed       |
| `--feedback-uri`    | none     | URI to off-chain detail |
| `--broadcast`       | `false`  | Execute the transaction |

***

## Worked example

```bash theme={null}
# Register a new agent
polygon-agent agent register \
  --name "data-aggregator" \
  --agent-uri https://example.com/agent.json \
  --metadata "category=data,sla=99.9"
# ⚡ Dry run

polygon-agent agent register \
  --name "data-aggregator" \
  --agent-uri https://example.com/agent.json \
  --broadcast
# Registered: tx 0xabc... → https://polygonscan.com/tx/0xabc...
# Note: open the Logs tab on Polygonscan, find the Registered event,
# and copy agentId (used for all subsequent agent commands).

# Query reputation before transacting
polygon-agent agent reputation --agent-id 142
# Score: 87 (32 reviews)
```

***

## Implementation

<CardGroup cols={2}>
  <Card title="ERC-8004 on Polygon" icon="id-card" href="/payment-services/agentic-payments/agent-integration/erc8004">
    Standard, contracts, and integration concepts.
  </Card>

  <Card title="CLI overview" icon="terminal" href="/payment-services/agentic-payments/cli/index">
    Topology and safety model.
  </Card>

  <Card title="Agentic Payments" icon="robot" href="/payment-services/agentic-payments/agent-integration/intro">
    Conceptual overview of agentic flows on Polygon.
  </Card>

  <Card title="Setup and wallets" icon="key" href="/payment-services/agentic-payments/cli/setup-and-wallets">
    Wallet needs gas to register and submit feedback.
  </Card>
</CardGroup>
