Skip to main content
Glama

Per-merchant stats and identity

get_merchant
Read-only

The same shape as /agents/{wallet}, for a wallet in its receiving role.

Wraps GET /v0/merchants/{wallet}. Access: requires an API key (Authorization: Bearer rh_live_… or x-api-key).

Returns:

  • wallet: The wallet queried, lowercased.

  • role: The role it was queried in: agent or merchant.

  • coverage: Read this first. known false means the index has never observed this address, so every figure below is a zero meaning "not observed" — not "observed to be nothing". Also first_seen, last_seen, settlements_scanned, scan_truncated and scan_cap.

  • entities: Resolved identity rows: display name, ENS, ERC-8004 card, role, first and last seen.

  • erc8004_agents: ERC-8004 registrations whose on-chain agentWallet is this address.

  • aggregates: That wallet's own totals: inbound/outbound USD and counts, distinct counterparties, chain split. basis says what they were computed over — index_rollup is the whole history, scanned_settlements is the capped scan and is a floor when coverage.scan_truncated is set. distinct_counterparties excludes the wallet itself on both bases. chain_split is the exception and carries its own chain_split_basis: the rollup is keyed by wallet and holds no chain dimension, so that split is ALWAYS the scan and is capped with it, whatever the object-level basis says.

  • data_quality: The risk annotation. Route on verdict, not on note. verdict is one of unobserved (never seen — nothing assessed), patterns_detected, no_patterns_detected, or insufficient_evidence — the last meaning the address WAS observed, nothing fired, and not enough of its history was examined for that to rule anything out. checks carries every check with its threshold, what was observed, its own basis, and conclusive: a check that FIRED is always conclusive (a pattern seen in a sample happened), a check that did not fire on a truncated scan is not. note says the same thing in a sentence and is derived from the two.

  • recent: A slice of its activity, recent_limit rows (default 5). Each row also carries is_self_payment (payer = payee, annotated rather than only excluded — a third of the feed can be self-payment) and evidence: { verified, method, probability, tier }. verified is THREE-VALUED — true a named facilitator relayed it, false examined with no EIP-3009 marker, and null gasless and authorized but NOT ESTABLISHED as x402, which is not the same as disproven. tier is proven | probable | unproven | not_x402 | ungraded.

Input Schema

NameRequiredDescriptionDefault
walletYesAn EVM address (`0x` + 40 hex digits; case-insensitive, lowercased before lookup) or a Solana address (base58; case-sensitive, used exactly as given). An address the index has not observed answers `coverage.known: false`, not zeros.
recent_limitNoSettlement rows to embed in the profile. 0 omits them. Default 5 — this was an unbounded 25, which is most of the payload on a surface where a response is billed as context tokens.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/open-world/no-destructive profile, and the description layers on far more: auth scheme, the upstream route, the meaning of `coverage.known: false`, truncation semantics with `scan_truncated`/`scan_cap`, and the basis mismatch where `chain_split` is always scan-derived regardless of object-level `basis`. It also flags the three-valued `verified` field and the self-payment annotation, which are exactly the traps that cause misreading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long (well over 300 words) but organized into labeled sections that front-load the sibling distinction ahead of the return-value walkthrough. Nearly every clause carries non-obvious semantics; a few asides ('a third of the feed can be self-payment', 'note says the same thing in a sentence') are editorial padding that could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of describing the return shape, and it does so field by field — coverage, entities, erc8004_agents, aggregates with basis caveats, data_quality verdict enumeration, and recent-row evidence tiers. Nothing an agent needs to interpret the payload correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are already fully documented, including the EVM-vs-Solana address format and the recent_limit default/bounds rationale. The description only restates `recent_limit` rows (default 5) when describing the `recent` block, adding no syntax or format detail beyond the schema — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete resource (per-merchant stats and identity) and immediately differentiates it from the sibling get_agent by framing it as the same shape as `/agents/{wallet}` but in the wallet's receiving role, plus names the upstream endpoint. An agent can pick between get_agent and get_merchant without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The `agent` vs `merchant` role framing implies the alternative (get_agent) and when to prefer this one, and access requirements (API key, Bearer rh_live_… / x-api-key) are stated. It also gives consumption-level routing guidance ('Read coverage first', 'Route on verdict, not on note'), but never states an explicit 'use this tool when… / not when…' exclusion clause.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources