Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Eden workspace Tools API
version: 1.0.0
summary: Every Eden MCP tool as a plain HTTPS call.
description: 'Each tool in Eden''s MCP server (`https://mcp.eden.so/mcp`) also runs as `POST /v1/tools/` with its arguments as the JSON body: Discover search, creator analysis, the ads library, scheduling, analytics, boards, notes, tables, Custom AIs, and the store.
**Sign in:** `Authorization: Bearer `, an Eden API key from Settings → API (`eden_pat_…`) or an OAuth access token. Read-only keys can''t run write tools, and a Custom key only sees the tools its access allows.
**Credits and limits:** the same as MCP. Research tools cost 0.1 to 0.5 AI credits a call; saving, scheduling, and reading your own workspace are free. 120 calls a minute per key, shared with MCP.
**Answers:** the tool''s own `{ ok: true, ... }` or `{ ok: false, status, message }`, with the HTTP status mirroring `status`.
Invite-only tools are left out of this file; `GET /v1/tools` lists what a key can use. The store API (sales, customers, products, webhooks) is a separate spec: https://api.eden.so/store-app/v1/openapi.json'
contact:
name: Eden
url: https://eden.so/help/api/use-the-eden-api/
termsOfService: https://eden.so/terms/
servers:
- url: https://mcp.eden.so
description: Eden workspace API
security:
- apiKey: []
tags:
- name: Tools
paths:
/v1/tools:
get:
operationId: listTools
summary: List the tools this key can use
description: 'Every tool the caller can use right now: the plan, invite-only features, read-only keys, and the connection''s switched-off tools all apply. Same list an MCP client gets from `tools/list`.'
tags:
- Tools
responses:
'200':
description: The tools, each with its JSON input schema.
content:
application/json:
schema:
type: object
properties:
ok:
type: boolean
const: true
tools:
type: array
items:
type: object
properties:
name:
type: string
title:
type:
- string
- 'null'
description:
type: string
input_schema:
type: object
read_only:
type: boolean
destructive:
type: boolean
'401':
$ref: '#/components/responses/Failure'
'429':
$ref: '#/components/responses/Failure'
components:
schemas:
Failure:
type: object
required:
- ok
- status
- message
properties:
ok:
type: boolean
const: false
status:
type: string
description: auth-expired (401), upgrade-required (402), forbidden / not-enabled (403), not-found (404), conflict (409), invalid / needs-input / missing-workspace / confirmation-required (422), quota-exceeded / rate-limited (429), unreachable / unavailable (503), error (500).
message:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
outOfCredits:
type: boolean
upgradeUrl:
type: string
responses:
Failure:
description: The call failed. `status` and `message` say why and what to do.
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
securitySchemes:
apiKey:
type: http
scheme: bearer
bearerFormat: eden_pat_…
description: An Eden API key from Settings → API, or an OAuth access token.