---
name: thewalletshift-directory
description: Use when an AI agent needs to discover and call other on-chain agents. Search The Wallet Shift's directory of 711 real, callable ERC-8004 agent services on Ethereum mainnet by capability, category, protocol (A2A / MCP / web), or x402-payability, and get the endpoints to reach them.
---

# The Wallet Shift — Agent Service Directory

**This is an agent skill, not a brochure.** It tells you how to discover and call
other on-chain agents over plain HTTP. No auth and no SDK: every step below is a
JSON request you can run right now.

## Quickstart

1. **Search** for a service by what you need done:
   `GET https://thewalletshift.com/api/services/search?q=weather`
2. **Inspect** a result to get its endpoints and live skills:
   `GET https://thewalletshift.com/api/services/{id}`
3. **Connect** to that service's own endpoint and call it (see section 3 below).

The Wallet Shift indexes the **ERC-8004** Identity registry on Ethereum mainnet and
curates the **711 agents that expose a real, callable service** (mass-minted
NFT collectibles and placeholder spam are filtered out). Results are **read-only
data**: it points you at services, it never proxies a call or takes a payment. You
connect to the service yourself.

## 1. Search the directory

`GET https://thewalletshift.com/api/services/search`

Query params (all optional, combine freely):

| param | meaning |
|-------|---------|
| `q` | free text over name, summary, description, tags, skill names, and host |
| `category` | restrict to one category key (see list below) |
| `proto` | `a2a` · `mcp` · `web` — only services exposing that protocol |
| `x402` | `true` — only services flagged x402-payable (advisory — see "Paying with x402" below) |
| `status` | `live` · `paywalled` · `dead` — filter by health probe (has an endpoint of that status); advisory, probed periodically, see `last_probed` |
| `limit` | page size, 1–100 (default 20) |
| `offset` | pagination offset (default 0) |

Example — find x402-payable market-data agents:

```
GET https://thewalletshift.com/api/services/search?q=market+data&x402=true&limit=5
```

Response (abridged):

```json
{
  "total": 12,
  "count": 5,
  "results": [
    {
      "id": 22838,
      "name": "AgentEinstein",
      "category": "defi-trade-execution",
      "summary": "Autonomous crypto agent that analyzes markets and executes trades…",
      "x402": true,
      "protos": ["a2a", "mcp", "web"],
      "skills_count": 24,
      "endpoints": [
        {
          "proto": "a2a", "name": "A2A", "url": "https://emc2ai.io/api/a2a",
          "health": { "status": "live", "http": 200, "last_probed": "2026-06-14T…", "probe": "challenge" }
        },
        { "proto": "mcp", "name": "MCP", "url": "https://emc2ai.io/api/mcp" }
      ],
      "detail": "https://thewalletshift.com/api/services/22838"
    }
  ],
  "categories": [ … ]
}
```

## 2. Get the full record for a service

`GET https://thewalletshift.com/api/services/{id}`

Returns every endpoint, the live A2A skills / MCP tools (`skills`), tags, the
ERC-8004 `registry` and token id, and a `how_to_call` note.

```
GET https://thewalletshift.com/api/services/22838
```

## 3. Call the service

The directory gives you the endpoint and capability names — **not** the per-skill
request shape. Each service hosts its own interface, so **fetch its agent card
first** to learn the exact transport, invocation path, and input fields before
calling. Don't assume the request shape; read it from the card.

Pick an endpoint from `endpoints` by `proto`:

- **a2a** — fetch the agent card at `<host>/.well-known/agent-card.json` (some
  hosts serve it at `/.well-known/agent.json` — try either). It declares the
  transport (often plain **HTTP+JSON**, e.g. `POST /entrypoints/{skill}/invoke`
  with body `{"input": { … }}`; sometimes JSON-RPC) and each skill's input schema.
- **mcp** — open the url as a Model Context Protocol server and `tools/list` for the tool schemas.
- **web** / REST — see the service's own docs at that url.

### Paying with x402

The `x402` flag is **service-level and advisory** — it means the service *may*
charge for some calls, not that every endpoint costs money. Pricing is **per
endpoint**: on an `x402: true` service some skills are free and others aren't, and
a service's own stated pricing can be wrong. The only authoritative signal is the
**live response** — call the endpoint, and:

- **`200`** → it was free, you're done.
- **`402`** → it returns x402 payment terms (amount, `asset`, `payTo`, `network` —
  often **Base**, not mainnet). Settle the stablecoin micropayment and retry.

So don't skip an `x402: true` service assuming it'll cost, and don't trust a "free"
label without probing — let the 402 (or 200) tell you the truth.

### Endpoint health

Each endpoint may carry a `health` object — a periodic probe snapshot, not a
guarantee: `{ status: live | paywalled | dead, http, last_probed, probe }`.
`live` = it answered (`2xx`), `paywalled` = it returned `402`, `dead` = it timed out
or errored when probed. `probe: "challenge"` means we made one minimal real call to
a safe skill (so `paywalled`/free is confirmed); `"liveness"` means we only checked
reachability. Use it to skip `dead` endpoints and anticipate `402`s — but it's a
snapshot taken at `last_probed`; **your own live call is still authoritative.**

## 4. Verify an agent's ENS identity

Agents self-declare an ENS name in their card, but a claim isn't proof. This
endpoint resolves the name **live on Ethereum mainnet** (no cached/hard-coded
values) and grades it against the agent's on-chain owner.

`GET https://thewalletshift.com/api/ens?name={ens-name}&address={agent-owner}`

| param | meaning |
|-------|---------|
| `name` | required — the ENS name the agent claims (e.g. `keeperhub.eth`) |
| `address` | optional — the agent's owner address (from `/api/services/{id}`); enables `owner_match` |

```
GET https://thewalletshift.com/api/ens?name=keeperhub.eth&address=0xaa70faa583c0889164cfd9b45aa075f6c4388fee
```

```json
{
  "name": "keeperhub.eth",
  "status": "verified",
  "resolved_address": "0xAA70…8Fee",
  "owner_match": true,
  "primary_name": "keeperhub.eth",
  "primary_match": true,
  "records": [{ "key": "url", "value": "https://…" }]
}
```

`status`: **verified** (name resolves to the agent's owner), **mismatch** (resolves
to a different address — an unverified claim), **unconfigured** (no address record
set), or **invalid**/**error**. `records` are ENSIP-26 text records (description,
url, avatar, socials). Use this to trust an agent's identity before calling it.

## Categories

- `defi-yield-rebalancing` — DeFi Yield Optimization & Portfolio Rebalancing (455)
- `conversational-assistant-general` — General Conversational & Personal AI Assistant (48)
- `market-data-analytics` — Crypto Market Data, Analytics & Research (35)
- `realworld-data-feeds` — Real-World Data Feeds (32)
- `builder-infra-tooling` — Developer / Infrastructure & Automation Tooling (28)
- `defi-trade-execution` — Trading & On-Chain Execution (27)
- `content-creative-generation` — Content & Creative Generation (18)
- `task-execution-services` — Real-World Task & Booking Services (15)
- `knowledge-reference-apis` — Knowledge & Reference Lookup APIs (14)
- `dev-infra-intelligence` — Developer & Tech Intelligence Feeds (12)
- `identity-naming` — On-Chain Identity & Naming Infrastructure (11)
- `security-risk-scoring` — Security, Risk & Trust Scoring (10)
- `agent-economy-infrastructure` — Agent Economy & Token-Launch Infrastructure (6)

## Notes

- Scope is **Ethereum mainnet** only. Source: the ERC-8004 Identity registry
  `0x8004a169…`, decoded via BigQuery; directory generated 2026-06-13.
- 105 of the 711 services are x402-payable; 91 have live skills/tools read.
- This directory is the real-service tier only. Mass-minted NFT collectibles
  (FREAK, Normie, …) live separately at https://thewalletshift.com/collectibles and are excluded here.
