# TWZRD Agent Intel

> Check whether an AI agent should pay a pay-per-request (x402) seller, using TWZRD Agent Intel's free checks. Get an allow, warn or block verdict before paying, read a seller's track record, spot wash trading (sellers paying themselves to look busy), browse paid services and marketplace listings, keep a block list of flagged wallets up to date, and score the wallets agents pay from. Mostly Solana, with some Base.

App · 12 actions. Web page: https://docs.lodol.com/docs/integrations/twzrd-agent-intel

## Actions

### Browse marketplace listings

List sellers from the x402 marketplaces (PayAI, Coinbase x402 Bazaar and Agentic Market), grouped by the wallet they're paid into, each marked clean, flagged or unknown for wash trading. TWZRD's copy of the marketplaces is partial.

**Inputs**

- Marketplace (`marketplace`, text): Only listings from this marketplace. Leave empty for all. One of: `payai_bazaar` (PayAI), `cdp_bazaar` (Coinbase x402 Bazaar), `agentic_market` (Agentic Market).
- Network (`network`, text): Only sellers paid on this network. Wash trading is only measured on Solana, so Base sellers show as Unknown. One of: `solana`, `base`.
- Only flagged sellers (`flagged_only`, true/false): Turn on to list only sellers flagged for wash trading. Default: `false`.
- Number of listings (`limit`, number): How many listings to return, from 1 to 500. Defaults to 25. From 1 to 500.

**Outputs**

- `as_of` (text)
- `flagged_sellers_overall` (number): Flagged sellers across everything TWZRD copied.
- `listing_count` (number)
- `listings` (list)

**Example output**

```json
{
  "as_of": "2026-10-15T18:01:36Z",
  "flagged_sellers_overall": 1740,
  "listing_count": 1,
  "listings": [
    {
      "description": "ElevenLabs text-to-speech: convert text to speech (MP3).",
      "endpoint_count": 16,
      "endpoints": [
        "https://api.xona-agent.com/audio/x-text-to-speech"
      ],
      "flagged_for_wash_trading": true,
      "marketplaces": [
        "PayAI"
      ],
      "name": "api.xona-agent.com",
      "network": "Solana",
      "payers": 114,
      "payments": 28355,
      "repeat_payer_pct": 76.7,
      "reputation_tier": "Wash or demo traffic",
      "seller_wallet": "9VaDVp1Wb78G4Wm6VuTiMrpESjrUymXefQTHcJGRSTEA",
      "wash_status": "Flagged"
    }
  ]
}
```

### Check a seller before paying

Ask whether to pay a pay-per-request (x402) seller: allow, warn or block, with a trust score out of 100 and a suggested cap per payment. Give the seller's wallet, or just the link to the paid service and TWZRD finds the wallet. The verdict only ever warns about risky sellers; it doesn't vouch for good ones.

**Inputs**

- Seller wallet (`seller_wallet`, text): The wallet the seller is paid into (the 'payTo' address on its payment request). Pick a seller with a live paid service, or paste any Solana or Base (0x) address. Leave empty if you give the service link instead.
- Service link (`service_url`, text): The link to the paid service you're about to pay for. Enough on its own: TWZRD looks up the wallet behind it.
- Price (USDC) (`price_usdc`, number): What you're about to pay, in USDC (US dollar coins), so the verdict can weigh the amount. Leave empty if unsure. From 0 to 1000000.0.
- Your wallet (`buyer_wallet`, text): The wallet that would pay, if you want it on the record of the check. Leave empty otherwise.

**Outputs**

- `can_pay` (true/false)
- `check_id` (number)
- `checked_at` (text)
- `clean_payment_history` (true/false)
- `decision` (text): allow, warn or block.
- `known_seller` (true/false): False when TWZRD has no history for it.
- `notes` (list)
- `price_usdc` (number)
- `seller_wallet` (text)
- `spending_cap_usdc` (number): Most to pay per request, in USDC.
- `summary` (text)
- `trust_score` (number): 0 to 100.
- `valid_until` (text)

**Example output**

```json
{
  "can_pay": true,
  "check_id": 681374,
  "checked_at": "2026-10-15T18:04:06Z",
  "clean_payment_history": true,
  "decision": "warn",
  "known_seller": true,
  "notes": [
    "Price: $0.01 per request.",
    "TWZRD found the seller's wallet from the service link."
  ],
  "price_usdc": 0.01,
  "seller_wallet": "ASt6xvRyQ7ntERsmcYVMdLqZvz1GEN8Fzexzq62tXrNQ",
  "spending_cap_usdc": 0.01,
  "summary": "Pay with care and keep each payment small.",
  "trust_score": 57.1,
  "valid_until": "2026-10-22T18:04:06Z"
}
```

### Check service status

Check whether TWZRD Agent Intel is answering, and how quickly. This one reports a problem as a value instead of failing the step, so a workflow can decide what to do about it.

**Inputs**: None.

**Outputs**

- `message` (text)
- `network` (text)
- `online` (true/false)
- `quick_score_price_usdc` (number): TWZRD's own price for its paid quick score.
- `reachable` (true/false)
- `response_time_ms` (number)
- `status_code` (number)
- `trust_report_price_usdc` (number): TWZRD's own price for its paid signed report.
- `version` (text)

**Example output**

```json
{
  "message": "TWZRD Agent Intel is up and answering.",
  "network": "Solana",
  "online": true,
  "quick_score_price_usdc": 0.001,
  "reachable": true,
  "response_time_ms": 412.5,
  "status_code": 200,
  "trust_report_price_usdc": 0.05,
  "version": "0.5.13"
}
```

### Get a seller's track record

Read TWZRD's risk card for a seller: whether the money paid to its wallet looks like real customers or like wash trading (a wallet paying itself to look busy), how established it is, when it was last paid, and which paid services it lists.

**Inputs**

- Seller wallet (`wallet`, text, required): The wallet the seller is paid into (the 'payTo' address on its payment request). Pick a seller with a live paid service, or paste any Solana or Base (0x) address.

**Outputs**

- `data_as_of` (text)
- `data_is_stale` (true/false)
- `days_since_last_payment` (number)
- `decision` (text): TWZRD's verdict, such as refuse or insufficient_evidence.
- `endpoints` (list)
- `evidence_level` (text)
- `flagged_for_wash_trading` (true/false)
- `in_dataset` (true/false): False when TWZRD has never seen it paid.
- `listed_services` (number)
- `live_services` (number)
- `marketplaces` (list)
- `network` (text)
- `reason` (text)
- `reputation_tier` (text)
- `service_description` (text)
- `service_name` (text)
- `summary` (text)
- `wallet` (text)
- `wash_status` (text)

**Example output**

```json
{
  "data_as_of": "2026-08-16T03:25:25Z",
  "data_is_stale": true,
  "days_since_last_payment": 60.61,
  "decision": "refuse",
  "endpoints": [],
  "evidence_level": "Full",
  "flagged_for_wash_trading": true,
  "in_dataset": true,
  "listed_services": 0,
  "live_services": 0,
  "marketplaces": [],
  "network": "Solana",
  "reason": "Concentrated inbound flow. Inbound volume here is not evidence of independent demand.",
  "reputation_tier": "Established provider",
  "service_description": null,
  "service_name": null,
  "summary": "Don't pay this seller.",
  "wallet": "DeXXoNdyKk7fEJkoTDkfVwCe8j8hjXxsPGLdk31gJsMk",
  "wash_status": "Flagged"
}
```

### Get a wallet's payment processors

Find which payment processors (x402 facilitators, such as Coinbase's) a Solana wallet has paid through, and how many payments it made. A wallet with no payments comes back with 'found' false rather than failing.

**Inputs**

- Wallet (`wallet`, text, required): The paying wallet: a Solana address.

**Outputs**

- `facilitator_count` (number): Can be higher than the names listed: TWZRD doesn't name every processor.
- `facilitators` (list)
- `first_seen` (text)
- `found` (true/false)
- `last_seen` (text)
- `payments` (number)
- `sellers_paid` (number)
- `wallet` (text)

**Example output**

```json
{
  "facilitator_count": 4,
  "facilitators": [
    "Coinbase"
  ],
  "first_seen": "2026-10-02T17:54:49Z",
  "found": true,
  "last_seen": "2026-10-14T04:55:14Z",
  "payments": 71,
  "sellers_paid": 5,
  "wallet": "7isHvrqZ1TzC1joAEk6otVpU4ZaEzrRpbBQ7C4exsQHj"
}
```

### List flagged wallets

List the Solana seller wallets TWZRD flags for wash trading, to keep a block list. Every change has a position number: leave 'Changes since' empty for the whole list, or give the 'latest_position' from your last run to get only what changed.

**Inputs**

- Changes since (`since_position`, number): The 'latest_position' from an earlier run, to get only wallets flagged or cleared after it. Leave empty for the whole list. At least 0.
- Include cleared wallets (`include_cleared`, true/false): Turn on to also list wallets that are no longer flagged, so you can take them off your block list. Default: `false`.
- Number of wallets (`limit`, number): How many wallets to return, from 1 to 500. Defaults to 100. From 1 to 500.
- Next page (`page_cursor`, number): For the whole list only: the 'next_page_cursor' from the previous page. Leave empty for the first page. At least 0.

**Outputs**

- `as_of` (text)
- `has_more` (true/false)
- `latest_position` (number): Save this and pass it next time for changes only.
- `next_page_cursor` (number)
- `wallet_count` (number)
- `wallets` (list)

**Example output**

```json
{
  "as_of": "2026-10-15T18:10:55Z",
  "has_more": true,
  "latest_position": 1740,
  "next_page_cursor": 2,
  "wallet_count": 1,
  "wallets": [
    {
      "changed_at": "2026-09-08T02:45:21Z",
      "flagged": true,
      "position": 2,
      "reasons": [
        "The wallet pays itself",
        "Wallets pay each other back and forth"
      ],
      "recommendation": "Don't pay",
      "wallet": "13V1h2aktJE85Z25KE5ugsL11XLfE5cnDNJs7dz8hGSA"
    }
  ]
}
```

### List paid services

List pay-per-request (x402) services TWZRD knows: what each costs, which network it's paid on, whether it was answering in the last 48 hours, whether TWZRD's own test purchase got delivered, and the payment record of the wallet it pays.

**Inputs**

- Only live services (`live_only`, true/false): Turn on to list only services that asked for payment when TWZRD checked them in the last 48 hours. Default: `false`.
- Only services that delivered (`delivered_only`, true/false): Turn on to list only services that delivered the last time TWZRD paid for them. Services never tested are left out. Default: `false`.
- At least this many payers (`min_payers`, number): Only services whose wallet was paid by at least this many different wallets in 90 days. Leave empty for all. From 0 to 1000000.
- Number of services (`limit`, number): How many services to return, from 1 to 200. Defaults to 25. From 1 to 200.
- Start from (`offset`, number): How many services to skip, for the next page. Use 'next_offset' from the previous run. Leave empty to start at the top. From 0 to 1000000.

**Outputs**

- `has_more` (true/false)
- `next_offset` (number)
- `service_count` (number)
- `services` (list)
- `total_services` (number)

**Example output**

```json
{
  "has_more": true,
  "next_offset": 1,
  "service_count": 1,
  "services": [
    {
      "description": "Audit a URL's HTTP security headers over a single request.",
      "flagged_for_wash_trading": null,
      "has_payment_history": true,
      "last_checked_at": "2026-10-15T13:47:04Z",
      "live": true,
      "marketplace": "Coinbase x402 Bazaar",
      "max_price_usdc": null,
      "name": "HTTP Security Headers Check",
      "network": "Solana",
      "payers_90d": 19,
      "payments_90d": 1002,
      "price_usdc": 0.01,
      "repeat_payer_pct": 68.4,
      "reputation_tier": "Small provider",
      "seller_wallet": "ASt6xvRyQ7ntERsmcYVMdLqZvz1GEN8Fzexzq62tXrNQ",
      "test_purchase": "Delivered",
      "test_purchase_at": "2026-09-26T02:10:00Z",
      "url": "https://headers.use.x402atlas.com/",
      "wash_status": "Unknown"
    }
  ],
  "total_services": 28925
}
```

### List sellers

List the Solana sellers TWZRD has seen paid by AI agents, busiest first by how many different wallets paid each in the last 90 days. Wash trading flags show on every row, so a busy seller can still be a flagged one.

**Inputs**

- At least this many payers (`min_payers`, number): Only sellers paid by at least this many different wallets in 90 days. Defaults to 1. From 1 to 1000000.
- Only flagged sellers (`flagged_only`, true/false): Turn on to list only sellers flagged for wash trading. Default: `false`.
- Number of sellers (`limit`, number): How many sellers to return, from 1 to 200. Defaults to 25. From 1 to 200.
- Start from (`offset`, number): How many sellers to skip, for the next page. Use 'next_offset' from the previous run. Leave empty to start at the top. From 0 to 1000000.

**Outputs**

- `has_more` (true/false)
- `next_offset` (number)
- `seller_count` (number)
- `sellers` (list)
- `total_sellers` (number): Empty when listing only flagged sellers.

**Example output**

```json
{
  "has_more": true,
  "next_offset": 1,
  "seller_count": 1,
  "sellers": [
    {
      "captive_payer_pct": 82.6,
      "days_since_last_payment": 0.01,
      "demand_pattern": "Elevated captive share",
      "evidence_level": "Partial",
      "flagged_for_wash_trading": null,
      "gone_quiet": false,
      "payers_90d": 476,
      "payments_90d": 8668,
      "repeat_payer_pct": 36.3,
      "reputation_tier": "Established provider",
      "revenue_usd_90d": 42.5,
      "wallet": "9MkM5Ra48KFcSv9HDQ8sb3C3r5HjouEwGQ6sp1cx1vde",
      "wash_status": "Unknown"
    }
  ],
  "total_sellers": 3660
}
```

### List top paying agents

List the AI agent wallets that pay for x402 services the most, ranked by the same 0 to 100 score as Score a wallet. Filter out one-off wallets and ones that have gone quiet.

**Inputs**

- Number of agents (`limit`, number): How many agents to return, from 1 to 100. Defaults to 10. From 1 to 100.
- At least this many payments (`min_payments`, number): Leave out wallets with fewer payments than this. Leave empty to include everyone. From 0 to 1000000.
- Active in the last (days) (`active_within_days`, number): Leave out wallets that haven't paid in this many days. Leave empty to include everyone. From 0 to 3650.

**Outputs**

- `agent_count` (number)
- `agents` (list)
- `payers_using_several_sellers` (number)
- `total_payers_seen` (number)

**Example output**

```json
{
  "agent_count": 1,
  "agents": [
    {
      "adjusted_score": 98,
      "last_seen": "2026-10-13T06:26:46Z",
      "payments_made": 82,
      "rank": 1,
      "score": 98,
      "sellers_paid": 15,
      "usdc_spent": 215.47,
      "wallet": "3NWeBKnPPxAZZYqytNVgb29gqNDmaRdGMQuD5LrQR9Ke",
      "wash_status": "Clean"
    }
  ],
  "payers_using_several_sellers": 5728,
  "total_payers_seen": 107519
}
```

### List who a wallet pays

List the sellers a Solana wallet pays most often, up to 25, with how many payments and how much USDC went to each and when.

**Inputs**

- Wallet (`wallet`, text, required): The paying wallet: a Solana address.
- Number of sellers (`limit`, number): How many sellers to return, from 1 to 25. Defaults to 10. From 1 to 25.

**Outputs**

- `more_not_shown` (true/false)
- `seller_count` (number)
- `sellers` (list)
- `total_payments` (number)
- `total_sellers` (number)
- `wallet` (text)

**Example output**

```json
{
  "more_not_shown": true,
  "seller_count": 1,
  "sellers": [
    {
      "first_paid_at": "2026-10-02T17:54:49Z",
      "last_paid_at": "2026-10-14T04:55:14Z",
      "payments": 67,
      "seller_wallet": "4WvcrHiCTLEqWod3PeW3iFfjmJFsCbprQfkeNb2Rq59b",
      "usdc_paid": 6.61
    }
  ],
  "total_payments": 71,
  "total_sellers": 5,
  "wallet": "7isHvrqZ1TzC1joAEk6otVpU4ZaEzrRpbBQ7C4exsQHj"
}
```

### Score a wallet

Score a wallet from 0 to 100 on its record of paying for x402 services: how much, how widely and how recently. Works for Solana and Base wallets. A wallet that only receives payments scores 0 by design; use Check a seller before paying for those.

**Inputs**

- Wallet (`wallet`, text, required): The wallet to score: a Solana address or a Base (0x) address.

**Outputs**

- `adjusted_score` (number): The score after any cut for wash trading.
- `breadth_points` (number): Out of 25.
- `counterparties` (number)
- `first_seen` (text)
- `last_seen` (text)
- `network` (text)
- `note` (text): Set when the wallet reads as a seller.
- `payments_made` (number)
- `payments_received` (number)
- `recency_factor` (number): 0 to 1.
- `role` (text): Buyer, Seller or Buyer and seller.
- `score` (number): 0 to 100.
- `spend_points` (number): Out of 25.
- `summary` (text)
- `usdc_received` (number)
- `usdc_spent` (number)
- `volume_points` (number): Out of 50.
- `wallet` (text)
- `wash_status` (text)

**Example output**

```json
{
  "adjusted_score": 96,
  "breadth_points": 25.0,
  "counterparties": 5,
  "first_seen": "2026-10-02T17:54:49Z",
  "last_seen": "2026-10-14T04:55:14Z",
  "network": "Solana",
  "note": null,
  "payments_made": 71,
  "payments_received": 0,
  "recency_factor": 1.0,
  "role": "Buyer",
  "score": 96,
  "spend_points": 25.0,
  "summary": "71 paid calls across 5 counterparties",
  "usdc_received": 0.0,
  "usdc_spent": 2262.6984,
  "volume_points": 46.43,
  "wallet": "7isHvrqZ1TzC1joAEk6otVpU4ZaEzrRpbBQ7C4exsQHj",
  "wash_status": "Clean"
}
```

### Score several wallets

Score up to 25 Solana wallets at once, in the order given, with the same 0 to 100 score as Score a wallet. Handy for ranking the wallets another step found.

**Inputs**

- Wallets (`wallets`, list, required): Up to 25 Solana wallet addresses: a list, or text with one per line or separated by commas.

**Outputs**

- `highest_scoring_wallet` (text)
- `wallet_count` (number)
- `wallets` (list)

**Example output**

```json
{
  "highest_scoring_wallet": "7isHvrqZ1TzC1joAEk6otVpU4ZaEzrRpbBQ7C4exsQHj",
  "wallet_count": 2,
  "wallets": [
    {
      "adjusted_score": 96,
      "breadth_points": 25.0,
      "counterparties": 5,
      "first_seen": "2026-10-02T17:54:49Z",
      "last_seen": "2026-10-14T04:55:14Z",
      "network": "Solana",
      "payments_made": 71,
      "payments_received": 0,
      "recency_factor": 1.0,
      "role": "Buyer",
      "score": 96,
      "spend_points": 25.0,
      "summary": "71 paid calls across 5 counterparties",
      "usdc_received": 0.0,
      "usdc_spent": 2262.6984,
      "volume_points": 46.43,
      "wallet": "7isHvrqZ1TzC1joAEk6otVpU4ZaEzrRpbBQ7C4exsQHj",
      "wash_status": "Clean"
    },
    {
      "adjusted_score": 50,
      "breadth_points": 25.0,
      "counterparties": 1549,
      "first_seen": "2026-04-11T00:41:09Z",
      "last_seen": "2026-08-25T03:19:13Z",
      "network": "Solana",
      "payments_made": 12158,
      "payments_received": 18127,
      "recency_factor": 0.5,
      "role": "Buyer and seller",
      "score": 50,
      "spend_points": 25.0,
      "summary": "12158 paid calls across 1549 counterparties",
      "usdc_received": 28314.63,
      "usdc_spent": 28635.69,
      "volume_points": 50.0,
      "wallet": "DeXXoNdyKk7fEJkoTDkfVwCe8j8hjXxsPGLdk31gJsMk",
      "wash_status": "Clean"
    }
  ]
}
```
