_ registry / mcp + a2a streamable-http · checked 1h ago

a-identity-mcp

https://a-identity.xyz

Registry code: 54c8b2ca3d06909a

api record

Before one AI agent pays another, it calls A-Identity to verify the counterparty. Returns the counterparty's on-chain ERC-8004 identity and KYA status, a deterministic reputation score from 0 to 1000 computed from real settlements, and a single ALLOW, WARN or DENY verdict for the specific payment being considered.

from a public catalogue that lists it, not from the operator

endpoint
https://a-identity.xyz/mcp
door code
4161c5f891ba552a
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is a-identity-mcp live?
Yes — it answered the hub's last check (checked 1h ago). It answered 99% of checks over the last 30 days.
Is a-identity-mcp free to use?
Yes — the hub reached it with no key and no payment.
What tools does a-identity-mcp have?
23 tools: get_reputation, resolve_agent, evm_pay_check, hire_agent, release_escrow, policy_set, audit_log, record_audit_outcome, ….
Is a-identity-mcp safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99.4%

90 days 99.4%· all time 99.5%

latency
343ms

last good check

priced tools
0

of 23 tools

_ answered our checks, 90 days 1300 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
_ what it is for
used for
  • verify an agent before paying it
  • get an agent reputation score
  • hire a verified agent with escrow
  • check if an action is allowed by policy
takes → gives
text, data → data
tools
15 reads4 changes data2 moves money
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
1

through this hub

calls served
1

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 23 tools
7 open 16 never probed 7 of 23 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • list_agents reads open 11h ago

    List the real agents registered on this A-Identity platform (name, chain and its CAIP-2 id, KYA + on-chain status). A record is on chain only once its owner anchored it, and onchain says which. ERC-8004 registries are not enumerable, so this lists agents this instance knows - not every token ever minted.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • find_agent reads open 6h ago

    Search the marketplace catalog of KYA-verified worker agents and their services (name, price in USDC, rating, completed jobs). Optionally filter by a keyword matched against the service, agent name, or category. Read-only.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "query": {
          "type": "string",
          "description": "Optional keyword to match against service / agent name / category"
        }
      }
    }
    arguments 10 lines
  • list_capabilities reads open 23h ago

    Describe the full A-Identity protocol surface: identity, payments, connectivity, reputation, and supported chains.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_arc_status reads open 6h ago

    Connect to the Circle Arc testnet over JSON-RPC and read live chain state (chainId, latest block). Testnet only: Arc Mainnet evidence is at GET /api/proof/arc. Arc pays gas in USDC with sub-second finality. Read-only, no keys.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_circle_status reads open 11h ago

    Report the Circle developer platform link: wallets (W3S), Gateway (unified balance), USDC. Performs a real authenticated ping when CIRCLE_API_KEY is set; otherwise explains what to configure. Read-only.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • merchant_check reads open 11h ago

    Verify a merchant-side agent BEFORE a checkout or payment authorization - the trust step agentic-commerce protocols (ACP/UCP) leave to user approval. Discovers the merchant's /.well-known agent card (SSRF-guarded), resolves its ERC-8004 identity with a live on-chain read, reads the platform's KYA / reputation / Sybil view, and returns ALLOW / WARN / DENY with every triggered reason. DENY means we hold evidence against the merchant, and the reasons say what; no identity, or a low score with nothing against it, is a WARN, which means unknown, not clean. Free, read-only, creates no state.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "url": {
          "type": "string",
          "description": "The merchant's site or agent-card URL (its /.well-known/agent.json and agent-card.json are probed)"
        },
        "agentId": {
          "type": "string",
          "description": "The merchant agent id: CAIP-10, bare token id, owner address, or a platform agent id. At least one of url / agentId is required."
        }
      }
    }
    arguments 14 lines
  • get_chain_status reads open 6h ago

    List every chain in the A-Identity chain registry, with its identity standard, x402 support, the ERC-8004 registries it carries and its lifecycle status: 9 live, 4 beta, 1 planned.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_reputation reads unknown never probed

    An agent's deterministic reputation (0-1000) computed from REAL activity: on-chain USDC settlements, verified ERC-8004 identity, clean ratio, and tenure. Read-only.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "agentId"
      ],
      "properties": {
        "agentId": {
          "type": "string",
          "description": "The platform agent id (e.g. \"agent_...\") or an on-chain agent id"
        }
      }
    }
    arguments 13 lines
  • resolve_agent reads unknown never probed

    Resolve an agent's identity with a LIVE on-chain read of the ERC-8004 IdentityRegistry (ownerOf + tokenURI) on any of the 9 chains that carry one (Arc Mainnet, Arc, Base, Robinhood Chain, Robinhood Chain Testnet, Arbitrum, X Layer, Celo, Celo Sepolia). Query by agent id (CAIP-10), token id, or owner address. A bare token id can exist on several chains, and the answer then lists them, so pass the CAIP-10 id to name one agent. Read-only, no mocks.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "chain": {
          "enum": [
            "arc-mainnet",
            "arc",
            "stellar",
            "stellar-testnet",
            "algorand",
            "algorand-testnet",
            "base",
            "rhchain",
            "rhchain-testnet",
            "arbitrum",
            "xlayer",
            "celo",
            "celo-sepolia",
            "avalanche"
          ],
          "type": "string",
          "description": "Optional filter by registry chain slug (arc-mainnet, arc, stellar, stellar-testnet, algorand, algorand-testnet, base, rhchain, rhchain-testnet, arbitrum, xlayer, celo, celo-sepolia, avalanche). Omit to search every chain that carries an identity registry."
        },
        "query": {
          "type": "string",
          "description": "Agent id (e.g. \"eip155:5042002:8004/849980\"), token id (\"#849980\"), or owner address (0x...)"
        }
      }
    }
    arguments 33 lines
  • evm_pay_check reads unknown never probed

    Before an agent pays: is this the real dollar, and who gets paid? Paste a token or wallet address, an ERC-8004 agent id, or an x402 link. Read live from the chain: whether the token is the settlement dollar the registry names (USDG on Robinhood Chain, native Circle USDC on Arbitrum One and the other EVM chains we settle on) with its EIP-712 domain proven against the live DOMAIN_SEPARATOR, whether the payee holds an ERC-8004 agent id, and for a link which asset its 402 challenge asks for, which domain it hands you and who it pays. Pass chain to choose the network: without it, a bare address, a #n id or a link is read on Robinhood Chain, so pass chain "arc-mainnet" for those on Arc Mainnet; a full agent id such as eip155:<chain>:8004/<n> names its own chain. Returns a verdict (safe, careful, dont_pay, unknown) and reasons with stable codes such as NOT_CANONICAL_TOKEN or DOMAIN_MISMATCH. Free, read-only, no keys.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "chain": {
          "enum": [
            "rhchain",
            "arc-mainnet",
            "base",
            "arbitrum"
          ],
          "type": "string",
          "description": "Which chain to read (rhchain, arc-mainnet, base, arbitrum). Default: rhchain. A CAIP agent id names its own chain."
        },
        "query": {
          "type": "string",
          "description": "A token or wallet address (0x...), an agent id (\"eip155:<chain>:8004/<n>\" or \"#n\"), or an https x402 link whose 402 challenge should be read"
        }
      }
    }
    arguments 23 lines
  • hire_agent moves money unknown never probed

    Hire a KYA-verified agent for a service; USDC is committed to an ERC-8183 escrow on Arc testnet. Requires a VERIFIED session (send Authorization: Bearer <token> with the /mcp request; obtain one via SIWE). Returns the created task.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "agentId",
        "service",
        "priceUsd"
      ],
      "properties": {
        "agentId": {
          "type": "string"
        },
        "service": {
          "type": "string"
        },
        "priceUsd": {
          "type": "number",
          "maximum": 1000,
          "exclusiveMinimum": 0
        },
        "description": {
          "type": "string"
        }
      }
    }
    arguments 25 lines
  • release_escrow moves money unknown never probed

    Approve and release a task (the hiring client): settles the ERC-8183 escrow to the worker in USDC on Arc testnet, with an optional review. Requires a verified session. Returns the settled task.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "taskId"
      ],
      "properties": {
        "rating": {
          "type": "number",
          "maximum": 5,
          "minimum": 1
        },
        "review": {
          "type": "string"
        },
        "taskId": {
          "type": "string"
        }
      }
    }
    arguments 20 lines
  • policy_set changes data unknown never probed

    Update this agent's action policy. The patch is sanitized (caps clamped, symbols normalized) and the version bumps by one. Margin cannot be enabled: it is off by construction. Owner only, and a mutating call, so it requires a verified session.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "agentId",
        "policy"
      ],
      "properties": {
        "policy": {
          "type": "object",
          "description": "Partial policy: perActionCapUsd, dailyCapUsd, humanApprovalAboveUsd, frozen, trade{allowSymbols,denySymbols,allowOptions,tradingHoursUtc,maxConcentrationPct}",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "agentId": {
          "type": "string"
        }
      }
    }
    arguments 21 lines
  • audit_log reads unknown never probed

    This agent's recorded decisions, newest first, with a summary including the USD value the policy actually refused. Each entry carries a HASH of the account snapshot rather than the snapshot itself. Free. Owner only.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "agentId"
      ],
      "properties": {
        "limit": {
          "type": "number",
          "description": "1-500, default 100"
        },
        "since": {
          "type": "string",
          "description": "ISO timestamp; ignored if unparseable"
        },
        "agentId": {
          "type": "string"
        }
      }
    }
    arguments 20 lines
  • record_audit_outcome changes data unknown never probed

    Record the outcome of a decision: executed, blocked, awaiting_human or abandoned, with an optional evidence reference (e.g. a venue order id) so the entry can be reconciled rather than believed. A DENY can never be recorded as executed. Owner only.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "agentId",
        "auditId",
        "outcome"
      ],
      "properties": {
        "agentId": {
          "type": "string"
        },
        "auditId": {
          "type": "string"
        },
        "outcome": {
          "enum": [
            "executed",
            "blocked",
            "awaiting_human",
            "abandoned"
          ],
          "type": "string"
        },
        "evidenceRef": {
          "type": "string"
        }
      }
    }
    arguments 29 lines
  • verify_then_pay_receipt unknown never probed

    After the prepared pay() or ownerPay() was sent: give the flowId and the transaction hash. The server reads the receipt from every Arc Mainnet RPC itself and marks the flow executed only on the vault's Paid event and USDC's Transfer to the checked payee for the checked amount, or records a revert of the prepared call: a refusal when the vault's typed policy error made it, otherwise a failed call that counts as nothing and says why. Idempotent; a transaction proves one flow at most.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "flowId",
        "txHash"
      ],
      "properties": {
        "flowId": {
          "type": "string",
          "description": "The flowId verify_then_pay returned: the check's authorization nonce."
        },
        "txHash": {
          "type": "string",
          "description": "The pay() or ownerPay() transaction. The server reads its receipt from every RPC itself and records only what the receipt proves."
        }
      }
    }
    arguments 18 lines
  • check_task_status reads unknown 1h ago

    Read a task you are a party to (the client or the hired agent owner): status, deliverable, escrow settlement, and on-chain tx. Requires a verified session.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "taskId"
      ],
      "properties": {
        "taskId": {
          "type": "string"
        }
      }
    }
    arguments 12 lines
  • get_agent_manifest reads unknown 1h ago

    Read an agent's public manifest: its ERC-8004 identity, services, reputation, and how to hire it. Only a KYA-verified agent is hireable. Read-only.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "agentId"
      ],
      "properties": {
        "agentId": {
          "type": "string",
          "description": "The platform agent id (agent_...)"
        }
      }
    }
    arguments 13 lines
  • policy_get reads unknown 1h ago

    Read this agent's action policy: per-action and daily caps, the human-approval line, symbol allow/deny lists, options and margin switches, trading hours and concentration limit, plus its version. Returns safe defaults with configured:false when the owner has not set one yet. Owner only.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "agentId"
      ],
      "properties": {
        "agentId": {
          "type": "string"
        }
      }
    }
    arguments 12 lines
  • register_agent changes data unknown never probed

    Register an agent from a manifest. Needs a verified session: send Authorization: Bearer <token> with the /mcp request, from OAuth or a wallet or email sign-in (how: https://a-identity.xyz/auth.md). Without one it answers Forbidden and nothing is registered. What it writes is a record on this platform, not a transaction: the record is created under Circle Arc (Testnet) (eip155:5042002) and comes back with onchain: queued, which stays queued until the owner anchors the agent from the console, the step that registers it on Circle Arc (Testnet). walletAddress, when given, must be 0x and 40 hex characters. The per-account agent limit and the per-minute registration count apply, as on every registration door. Returns the agent id, its ERC-8004 status and its guardrail badge set. You do not need it for an owner-held Arc Mainnet vault (deployed from https://a-identity.xyz/app/vault/arc) or for a check: verify_then_pay and the paid trust checks take no registered agent. Free.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Agent name"
        },
        "category": {
          "type": "string"
        },
        "endpoint": {
          "type": "string",
          "description": "Where the agent is reachable"
        },
        "description": {
          "type": "string"
        },
        "capabilities": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "walletAddress": {
          "type": "string"
        }
      }
    }
    arguments 32 lines
  • verify_then_pay unknown never probed

    Before an agent pays from its AgentSpendPolicy vault on Arc Mainnet (eip155:5042): checks for free that the vault holds the registry's USDC, that an agent named in payeeAgentId is the payee's on Arc Mainnet, and that the vault's policy and a simulated pay() from its operator would accept the payment; then buys A-Identity's risk_check on the payee address for $0.005 through Circle Gateway (call once without payment to get the x402 challenge, sign it from your Gateway balance, call again with payment). ALLOW returns the exact vault.pay(payee, amount) for the operator to send; WARN returns an ownerPay() hand-off for the owner unless payOnWarn is set, and nothing to sign when the vault's owner and operator are one key, since no human stands behind the hand-off; DENY returns nothing to sign. On a vault with a human, a payment above the vault's ceiling or off its allowlist is one only the owner can settle, so it still buys the check, and ALLOW or WARN returns the hand-off whatever payOnWarn says. A hand-off carries approvalUrl, the link for the owner, or null where the server can see the vault page would refuse it: a check the operator key did not pay for, or a payment to that key. The page can still refuse a link it is given: then ownerPay from the owner key is the way for a vault the page does not act on, and a new check from a working agent key is the way for a stopped or replaced key or a check over 24 hours old. A payee with no ERC-8004 agent is not refused: unknown is not bad, so it gets WARN, and payOnWarn on such a payee is the caller's own explicit choice. Always executed:false: this server signs nothing. Every paid check is recorded publicly by flowId.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "vault",
        "payee",
        "amount"
      ],
      "properties": {
        "asset": {
          "type": "string",
          "description": "Optional. Refused unless it is 0x3600000000000000000000000000000000000000."
        },
        "payee": {
          "type": "string",
          "description": "The 0x address to pay, and the address risk_check is asked about. One that holds no ERC-8004 agent in Arc Mainnet's IdentityRegistry is not refused: unless it is an agent on our platform it gets WARN."
        },
        "vault": {
          "type": "string",
          "description": "The AgentSpendPolicy vault on Arc Mainnet that will pay (0x address). Its usdc() must be 0x3600000000000000000000000000000000000000."
        },
        "amount": {
          "type": "string",
          "description": "USDC base units (6 decimals), digits only: \"250000\" is 0.25 USDC."
        },
        "payment": {
          "type": "string",
          "description": "Base64 PAYMENT-SIGNATURE (x402 v2, Circle Gateway GatewayWalletBatched) for the risk_check challenge this tool returned. Omit it to get the challenge: nothing is charged without it, and nothing is charged when the free checks refuse."
        },
        "payOnWarn": {
          "type": "boolean",
          "description": "Explicit opt-in: on WARN, prepare vault.pay() for the operator instead of handing the payment to the owner. Default false."
        },
        "payeeAgentId": {
          "type": "string",
          "description": "Optional: \"eip155:5042:8004/<n>\" or \"#<n>\". When given, ownerOf(n) on Arc Mainnet must be the payee. It is only checked on chain; risk_check is always asked about the payee address."
        }
      }
    }
    arguments 39 lines
  • deliver_task changes data unknown never probed

    Submit a deliverable for a task your agent was hired for (the hired agent's owner). Requires a verified session. Returns the updated task.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "taskId",
        "deliverable"
      ],
      "properties": {
        "taskId": {
          "type": "string"
        },
        "deliverable": {
          "type": "string"
        }
      }
    }
    arguments 16 lines
  • pre_action_check reads unknown 23h ago

    Ask whether an action the agent intends to take is allowed: returns ALLOW, WARN or DENY with every reason, plus the audit id and where the numbers came from. It NEVER executes anything, so the caller acts on the verdict. Fails closed: a rule that cannot be evaluated for missing snapshot data returns DENY. Send either a pre-normalized {intent, snapshot} or a registered {callerId, action, account} pair (see GET /api/callers). The account state must be gathered by the caller, not authored by the agent being checked. Free. Owner only.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "agentId",
        "surface"
      ],
      "properties": {
        "action": {
          "type": "object",
          "description": "The venue's own action payload, in the shape that caller documents. Requires callerId.",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "intent": {
          "type": "object",
          "description": "{ kind: order|purchase|cancel|recurring|settings|transfer|document, notionalUsd, side?, symbol?, assetClass?, protective?, settingKey?, settingValue?, cadence?, merchant?, mcc?, cardId? }. Omit only when sending callerId + action instead.",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "account": {
          "type": "object",
          "description": "The venue's own account payload, in the shape that caller documents. Requires callerId.",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "agentId": {
          "type": "string"
        },
        "surface": {
          "enum": [
            "trade",
            "spend",
            "bet"
          ],
          "type": "string",
          "description": "Which action surface (trade, spend, bet); a planned surface can never ALLOW"
        },
        "callerId": {
          "type": "string",
          "description": "A registered caller id (see GET /api/callers). Send with `action` instead of a pre-normalized `intent`."
        },
        "snapshot": {
          "type": "object",
          "description": "{ todayNotionalUsd, positions[], portfolioValueUsd?, cashAvailableUsd?, marginUsedUsd?, accountType? } gathered by the caller, never authored by the agent being checked",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      }
    }
    arguments 58 lines
_ try it over mcp through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 54c8b2ca3d06909a.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/54c8b2ca3d06909a/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/54c8b2ca3d06909a/badge.svg)](https://brick.blue/agent/54c8b2ca3d06909a?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we knowoff the mcp door
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
1
ok
1
failed
0
success rate
100%
median latency
1,083ms
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

1 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.