Eden Skills API

The Skills API from Eden — 4 operation(s) for skills.

GitHub OpenAPI

Operations 4

POST /v1/tools/eden_export_skill Export skill #
POST /v1/tools/eden_get_skill Get skill #
POST /v1/tools/eden_import_skill Import skill #
POST /v1/tools/eden_list_skills List skills #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/eden-so:eden-so-skills-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

eden-so-skills-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Eden workspace Skills 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: Skills
paths:
  /v1/tools/eden_export_skill:
    post:
      operationId: eden_export_skill
      summary: Export skill
      description: 'Export an Eden Skill as a portable Claude Skill: returns `{ skillMd, slug }` where `skillMd` is the stored SKILL.md text VERBATIM (byte-exact — never reformatted) and `slug` is the suggested folder name. Write `skillMd` to `/SKILL.md` to install it locally, or hand it to the user. Eden-exported skills round-trip losslessly back into Eden via eden_import_skill. Bundled reference files are not included here — export the .zip from Eden''s Settings → Skills for those.'
      tags:
      - Skills
      x-read-only: true
      x-destructive: false
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                skillId:
                  type: string
                  description: Skill id from eden_list_skills (rows or `builtin:<slug>`).
                workspaceId:
                  description: Workspace id (eden_list_workspaces). Omit for the default.
                  type: string
              required:
              - skillId
      responses:
        '200':
          description: 'The tool''s result: `{ ok: true, ... }`. Tools that answer plain text come back as `{ ok: true, text }`.'
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/Failure'
        '401':
          $ref: '#/components/responses/Failure'
        '402':
          $ref: '#/components/responses/Failure'
        '403':
          $ref: '#/components/responses/Failure'
        '404':
          $ref: '#/components/responses/Failure'
        '409':
          $ref: '#/components/responses/Failure'
        '422':
          $ref: '#/components/responses/Failure'
        '429':
          $ref: '#/components/responses/Failure'
        '500':
          $ref: '#/components/responses/Failure'
        '503':
          $ref: '#/components/responses/Failure'
  /v1/tools/eden_get_skill:
    post:
      operationId: eden_get_skill
      summary: Get skill
      description: 'Get one Eden Skill''s full definition: `skillMd` (the verbatim SKILL.md text — YAML frontmatter + markdown instructions) and `files` (paths of bundled reference files, when the skill ships any). To APPLY a skill, follow the skillMd body as your instructions for the task. Accepts row ids and `builtin:` ids from eden_list_skills. To save the skill as a portable file instead, use eden_export_skill.'
      tags:
      - Skills
      x-read-only: true
      x-destructive: false
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                skillId:
                  type: string
                  description: Skill id from eden_list_skills (rows or `builtin:<slug>`).
                workspaceId:
                  description: Workspace id (eden_list_workspaces). Omit for the default.
                  type: string
              required:
              - skillId
      responses:
        '200':
          description: 'The tool''s result: `{ ok: true, ... }`. Tools that answer plain text come back as `{ ok: true, text }`.'
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/Failure'
        '401':
          $ref: '#/components/responses/Failure'
        '402':
          $ref: '#/components/responses/Failure'
        '403':
          $ref: '#/components/responses/Failure'
        '404':
          $ref: '#/components/responses/Failure'
        '409':
          $ref: '#/components/responses/Failure'
        '422':
          $ref: '#/components/responses/Failure'
        '429':
          $ref: '#/components/responses/Failure'
        '500':
          $ref: '#/components/responses/Failure'
        '503':
          $ref: '#/components/responses/Failure'
  /v1/tools/eden_import_skill:
    post:
      operationId: eden_import_skill
      summary: Import skill
      description: 'Import a Claude-format SKILL.md into the workspace as a new Eden Skill. Pass the complete file text as `skillMarkdown` — it is stored VERBATIM (never regenerated), so Eden-exported skills round-trip exactly; a foreign skill imports as-is and any notes come back in `warnings`. If the name collides with an existing skill, the new one is kept alongside it under a suffixed list name (the file text is unchanged). Markdown-only: bundled reference files can''t be imported over MCP — upload the .zip in Eden''s Settings → Skills instead. Returns `{ skillId, name, warnings }`.'
      tags:
      - Skills
      x-read-only: false
      x-destructive: false
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                skillMarkdown:
                  type: string
                  minLength: 1
                  description: 'The full SKILL.md text: YAML frontmatter (name, description) + markdown body.'
                workspaceId:
                  description: Workspace id (eden_list_workspaces). Omit for the default.
                  type: string
              required:
              - skillMarkdown
      responses:
        '200':
          description: 'The tool''s result: `{ ok: true, ... }`. Tools that answer plain text come back as `{ ok: true, text }`.'
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/Failure'
        '401':
          $ref: '#/components/responses/Failure'
        '402':
          $ref: '#/components/responses/Failure'
        '403':
          $ref: '#/components/responses/Failure'
        '404':
          $ref: '#/components/responses/Failure'
        '409':
          $ref: '#/components/responses/Failure'
        '422':
          $ref: '#/components/responses/Failure'
        '429':
          $ref: '#/components/responses/Failure'
        '500':
          $ref: '#/components/responses/Failure'
        '503':
          $ref: '#/components/responses/Failure'
  /v1/tools/eden_list_skills:
    post:
      operationId: eden_list_skills
      summary: List skills
      description: 'List the Eden Skills available in a workspace: the user''s own saved skills plus Eden''s built-in starter skills (`builtin: true`, addressed by `builtin:` ids). A skill is a Claude-format SKILL.md — YAML frontmatter (name, description) plus markdown instructions. Returns each skill''s `id`, `name`, `description` (the when-to-use trigger), `source` (upload | written | chat | builtin), `enabled`, and `fileCount` (bundled reference files). Use this to find the right skill — don''t guess ids — then load the full instructions with eden_get_skill.'
      tags:
      - Skills
      x-read-only: true
      x-destructive: false
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                workspaceId:
                  description: Workspace id (eden_list_workspaces). Omit for the default.
                  type: string
      responses:
        '200':
          description: 'The tool''s result: `{ ok: true, ... }`. Tools that answer plain text come back as `{ ok: true, text }`.'
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/Failure'
        '401':
          $ref: '#/components/responses/Failure'
        '402':
          $ref: '#/components/responses/Failure'
        '403':
          $ref: '#/components/responses/Failure'
        '404':
          $ref: '#/components/responses/Failure'
        '409':
          $ref: '#/components/responses/Failure'
        '422':
          $ref: '#/components/responses/Failure'
        '429':
          $ref: '#/components/responses/Failure'
        '500':
          $ref: '#/components/responses/Failure'
        '503':
          $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.