{
  "markdown": "# Easy Labs MCP Server\n\nGive AI agents access to your [Easy](https://www.itseasy.co) payment data through the [Model Context Protocol](https://modelcontextprotocol.io). Ask your agent *\"how's revenue this month?\"* or *\"find ava.chen@example.com and show her recent payments\"* and get real answers from your account — read-only, sandbox-first.\n\n**Easy** (itseasy.co, by Easy Labs, Inc.) is a self-custodial payment platform: businesses accept cards, ACH, wallets, and stablecoins with flat-rate pricing, next-day payouts, and cashback on idle balances. Docs: [docs.itseasy.co](https://docs.itseasy.co) · Machine-readable site index: [itseasy.co/llms.txt](https://www.itseasy.co/llms.txt)\n\n## Try it in 60 seconds — no account needed\n\nDemo mode serves a deterministic, obviously-fake dataset (\"Demo Coffee Co.\", `demo_*` ids, `@example.com` emails) with zero network calls, so you can explore every tool before you have an API key.\n\n**Claude Desktop / any MCP client** — add to your MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"easy-labs-demo\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@easylabs/mcp-server\"],\n      \"env\": { \"EASY_ENVIRONMENT\": \"demo\" }\n    }\n  }\n}\n```\n\n**Claude Code:**\n\n```bash\nclaude mcp add easy-labs-demo -e EASY_ENVIRONMENT=demo -- npx -y @easylabs/mcp-server\n```\n\nThen ask: *\"Give me a revenue summary for the last 30 days\"* · *\"Find the customer ava.chen@example.com\"* · *\"Any open disputes?\"*\n\n## Connect your real account\n\nGet an API key from the [Easy dashboard](https://app.itseasy.co) ([signup](https://www.itseasy.co)). The server targets the **sandbox by default** — production is an explicit opt-in:\n\n```json\n{\n  \"mcpServers\": {\n    \"easy-labs\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@easylabs/mcp-server\"],\n      \"env\": { \"EASY_API_KEY\": \"sk_test_...\" }\n    }\n  }\n}\n```\n\nTo target production instead of the sandbox, add `\"EASY_ENVIRONMENT\": \"production\"` to `env` — deliberately explicit, never the default.\n\n## Tools\n\nWorkflow tools answer whole questions in one call — prefer them when they fit:\n\n| Tool | What it answers |\n| --- | --- |\n| `revenue_summary` | \"How's revenue?\" — gross volume, counts by status, average ticket, success rate, and change vs the previous period (`7d`/`30d`/`90d`/`6m`/`12m`/`mtd`) |\n| `find_customer` | \"Who is jane@…?\" — email/name search plus the best match's profile and recent payments |\n\nRead-only building blocks:\n\n| Tool | Purpose |\n| --- | --- |\n| `list_transfers` / `get_transfer` | Payments, filterable by status |\n| `list_disputes` / `get_dispute` | Chargebacks and their lifecycle state |\n| `list_settlements` / `get_settlement` | Payout batches |\n| `list_customers` / `get_customer` | Customer records |\n| `list_balance_transfers` / `get_balance_transfer` | Balance movements |\n\nResources: `merchant://profile`, `merchant://summary` (account context for the agent), `docs://api-reference`, `docs://changelog`.\n\nAll tools are read-only (`readOnlyHint: true`) — nothing here moves money.\n\n## Notes for AI agents\n\n- No credentials? Use demo mode (`EASY_ENVIRONMENT=demo`, or the literal credential `demo` against a hosted endpoint). Demo data self-identifies: `demo_*` ids, `@example.com` emails.\n- Start with `revenue_summary` / `find_customer`; fall back to `list_*`/`get_*` for specifics. Read `merchant://summary` for account context.\n- Amounts are integer cents, USD unless stated. Errors are human-readable strings including the HTTP status; 404 means the id doesn't exist.\n- To learn about the Easy product itself, fetch [itseasy.co/llms.txt](https://www.itseasy.co/llms.txt) — every page there is available as markdown.\n\n## HTTP mode (Streamable HTTP, multi-tenant)\n\n```bash\nnpx -y @easylabs/mcp-server --http          # port 3100, or EASY_MCP_PORT / PORT / --port=\n```\n\n- `POST/GET/DELETE /mcp` — MCP endpoint · `GET /health` — liveness, no auth\n- **Auth is per-request**: `x-easy-api-key: sk_...` or `Authorization: Bearer sk_...` — live keys route to the production API, test keys to the sandbox. `EASY_API_KEY` is only a fallback for keyless requests. Sessions are bound to the credential that opened them.\n- **Keyless requests get a demo session** — zero-config tool discovery with self-identifying sample data. The literal credential `demo` does the same explicitly. Set `EASY_MCP_KEYLESS=reject` for strict 401s on private deployments. Real data always requires a valid key; an invalid key fails at the API, never downgrading to demo.\n- Per-key rate limiting: `EASY_MCP_RATE_LIMIT_PER_MINUTE` (default 120); 429s carry `Retry-After` + `RateLimit-*`.\n- Idle sessions evicted after 30 minutes.\n\n## Configuration reference\n\n| Variable | Default | Purpose |\n| --- | --- | --- |\n| `EASY_API_KEY` | — | API key (required for stdio real mode; per-request fallback in HTTP mode) |\n| `EASY_ENVIRONMENT` | `sandbox` | `production` targets the live API; `demo` serves sample data with no key |\n| `EASY_API_URL` | per environment | Advanced override — only `*.itseasy.co` / `localhost` hosts are accepted, so your key can never be sent elsewhere |\n| `EASY_MCP_PORT` / `PORT` | `3100` | HTTP mode port |\n| `EASY_MCP_RATE_LIMIT_PER_MINUTE` | `120` | HTTP per-key rate limit |\n| `EASY_MCP_KEYLESS` | serve demo | Set to `reject` to 401 keyless HTTP requests instead of serving demo data |\n\n## Safety model\n\n- **Read-only** tool surface — no writes, no money movement.\n- **Sandbox by default**; production requires `EASY_ENVIRONMENT=production`.\n- **Host allowlist**: the client refuses to send your API key anywhere but `*.itseasy.co`/localhost.\n- Keys are never logged; multi-tenant session state stores only a hash.\n\n## Development\n\n```bash\npnpm install\npnpm dev                 # stdio (set EASY_ENVIRONMENT=demo or EASY_API_KEY)\npnpm dev -- --http       # Streamable HTTP on :3100\npnpm test                # vitest — includes end-to-end transport tests\npnpm type:check && pnpm build\n```\n\n## Links\n\n- [Developer portal](https://www.itseasy.co/developers) · [Docs](https://docs.itseasy.co) · [MCP docs](https://docs.itseasy.co/docs/sdks/mcp) · [Status](https://status.itseasy.co)\n- Support: support@itseasy.co",
  "bytes": 6103,
  "sha": "3f7ad578f2c2a53ebb9b83adf30b775df9500919e46e2897a51eb7a2c5ee424b",
  "repo_slug": "itseasyco/easy-mcp",
  "fonte": "npm",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_co_itseasy_easy_mcp_d2d66013/readme"
}