arc-market-mcp
# Arc Market MCP
An [MCP](https://modelcontextprotocol.io) server that reads **live market state on Arc** — Circle's L1
(chainId `5042`) — through the BABA Capital Arc Data API.
Circle publishes an Arc MCP, but it serves **documentation**. This one reads **chain state**:
- **`arc_launchpads`** — launchpad concentration (HHI), pools created, v3 vs v4 launch counts, distinct
deployer callers, and per-launchpad share / graduations / dead-on-arrival.
- **`arc_lp_apr`** — realised range-APR for LP pools from the latest scan (filter by pair / venue / range).
- **`arc_rpc_consensus`** — how many of Arc's four public RPCs agree this block, before you trust a figure.
- **`arc_token_screen`** — cheap gate on a launched token: its USDC pool, fee, swap count, decoy verdict.
- **`arc_token_sellsim`** — a **live honeypot test**: buy-then-sell simulated against current chain state,
reporting the round-trip fraction recovered. Not a heuristic — an actual simulation.
- **`arc_pool_decoy`** — is this v4 poolId the real venue for its token, or a high-fee decoy?
- **`arc_rpc_consensus`**, **`arc_health`**, **`arc_agent_card`** — trust, liveness, and identity.
### Agent Directory — who is actually on Arc
~137 agents are registered in the ERC-8004 registry on Arc and nothing else lets you see who they
are. Circle builds the rails; this is the phone book.
- **`arc_agents_list`** — every registered agent: agentId, owner, agentURI, host, name, skills,
validation status, and how concentrated its host and owner are.
- **`arc_agent_get`** — one agent in full, including the **raw card as served** and a validation
report giving the evidence for every flag, so you can check the directory rather than trust it.
- **`arc_agents_search`** — *"find me an Arc agent that does X and that I can pay."*
- **`arc_agents_stats`** — the registry's shape in one call.
Two things worth knowing, both measured rather than assumed:
- **`x402=true` is much narrower than `payment=true`.** Most of this registry prices in USDC via
ERC-8183 settlement, which is *not* x402. Each match carries the exact key and value that prove it.
- **The registry is extremely concentrated.** One host holds **115 of 137 ids (83.9%)** and one owner
holds 100 (73%). The directory publishes those counts and lets you draw the conclusion — it attaches
no label or rating to any agent, because a directory that editorialises is worth nothing.
A card that will not resolve is listed as `UNRESOLVED`, never quietly dropped; a partial crawl comes
back `NO_DATA` with `coverage` naming the ids it could not reach. **BABA Capital operates agentIds 135
and 136**; they are listed on the same terms as everyone else and get no ranking advantage.
## Honesty model (read this)
Every data route returns one envelope:
```json
{ "chain": "arc", "chainId": 5042, "asof": "…", "head": 123, "status": "OK|NO_DATA|REFUSED",
"coverage": {…}, "rpc_consensus": true, "data": {…}, "warnings": [], "source": "…", "version": "…" }
```
- **`NO_DATA` is never a zero.** A missing or partial reading returns `status: "NO_DATA"`, not an
empty success. Absence of a signal is stated, never disguised as a value of the signal.
- **`REFUSED`** means the API declined (e.g. fewer than 2 of 4 RPCs agreed). The reading was not cross-checked; weigh it accordingly.
- This server passes the envelope through **unchanged**. It never unwraps `data` and hides the status.
This is a **read-only** client. It holds no private key, signs nothing, and moves no funds.
This is a software tool that reports chain reads. A passing sell-simulation is a snapshot at one block, not a guarantee.
## Install
Runs over stdio via `npx` — no global install needed.
```bash
npx arc-market-mcp
```
### Claude Desktop
Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"arc-market": {
"command": "npx",
"args": ["-y", "arc-market-mcp"]
}
}
}
```
### Configuration
| Env var | Default | Meaning |
|---|---|---|
| `ARC_API_BASE` | `https://api.babacapital.app` | Base for the `/arc/*` routes. |
| `ARC_AGENT_CARD_BASE` | `https://babacapital.app` | Base for `/.well-known/agents/<name>.json`. |
| `ARC_API_TIMEOUT_MS` | `20000` | Per-request timeout (the sellsim route runs a live simulation). |
## Pricing
The Arc Data API's **free tier is 20 calls/day/IP**. Paid calls settle in **USDC over Circle Gateway
x402** on Arc (`eip155:5042`). This package is the reader; payment, when required, is negotiated by the
API's `402` response. The reader never holds funds or keys.
## Identity (ERC-8004)
BABA Capital's Arc agents publish [ERC-8004](https://eips.ethereum.org/) agent-cards at
`https://babacapital.app/.well-known/agents/` — `baba-arc-data` and `baba-arc-yield`. Fetch one with
`arc_agent_card`. `agentId` is `null` until on-chain registration completes.
## Build from source
```bash
npm install
npm run build
npm test
node dist/index.js
```
## Provenance
This repository is standalone. Its git history begins on **2026-09-17**; it shares no history with any
other BABA Capital repository.
## License
MIT © 2026 BABA Capital
TDQS
Scored across 12 tools
Most tools are clearly distinct: health, launchpads, LP APR, RPC consensus, token screening/simulation, pool decoy, and agent directory operations each target a different resource. The only mild overlap is arc_agents_list vs arc_agents_search vs arc_agent_get, but their descriptions make the distinction clear (list all, search, get one).
All tools use the arc_ prefix with a noun or noun_verb pattern: arc_health, arc_launchpads, arc_lp_apr, arc_rpc_consensus, arc_token_screen, arc_token_sellsim, arc_pool_decoy, arc_agent_card, arc_agents_list, arc_agent_get, arc_agents_search, arc_agents_stats. The pattern is consistent, though arc_token_sellsim is slightly less readable than arc_token_sell_sim would be.
12 tools is well within the ideal 3-15 range. The set covers two coherent domains (Arc DEX data and ERC-8004 agent registry) without feeling bloated; each tool has a specific purpose and the count feels appropriate for the server's scope.
The DEX side covers health, launchpads, LP APR, RPC consensus, token screening, sell-simulation, and decoy-pool detection — a solid analytical surface. The agent side covers list, get, search, and stats, which is complete for a read-only directory. Minor gaps: no tool for historical LP APR or token price/quote, and no agent registration/update (though that may be out of scope for a read-only MCP).