> Markdown export: /developers/openapi-spec.md
> HTML: /developers/openapi-spec
---
description: Machine-readable OpenAPI 3.1 description of the public MCP JSON-RPC endpoint for AI agents and API clients.
audience: integrator
---

# OpenAPI spec

> **In plain terms:** A standard OpenAPI file that describes Eigen Mesh's public API — the MCP endpoint your AI assistant talks to.

Eigen Mesh publishes an OpenAPI 3.1 specification at [`/openapi.json`](/openapi.json). It truthfully describes the public programmatic surface: **one MCP (Model Context Protocol) endpoint that speaks JSON-RPC 2.0 over HTTP** — not a REST API.

- Spec URL (managed hosting): `https://eigenmesh.xyz/openapi.json`
- Endpoint it documents: `POST https://app.eigenmesh.xyz/api/mcp`
- Auth: `Authorization: Bearer <MCP API key>`

## What the spec covers

- The single JSON-RPC 2.0 path (`/api/mcp`) with `tools/list` and `tools/call` methods
- The four public HTTP MCP tools and their real input schemas, mirrored from the tool registry:
  - `capture_thought` — store a raw thought
  - `retrieve_thoughts` — hybrid search / recent browse
  - `edit_thought` — natural-language edits and lifecycle changes
  - `delete_thought` — archive (soft-remove)
- Bearer security scheme and the `401` / `406` error responses

Internal and admin endpoints (campaigns, admin stats, browser session routes) are intentionally **not** part of the public surface and are not documented in the spec.

## Who this is for

- **AI agents** discovering the API surface programmatically (the spec is linked from [llms.txt](https://eigenmesh.xyz/llms.txt))
- **Integrators** generating typed MCP clients instead of reading prose docs

## Usage

The endpoint is JSON-RPC, so generic OpenAPI REST clients are a poor fit — use an MCP client (see [Connect Cursor or Claude](/developers/cursor-and-claude)) or post JSON-RPC payloads directly:

```sh
curl -X POST https://app.eigenmesh.xyz/api/mcp \
  -H "Authorization: Bearer $EIGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
```

The human-readable contract for every tool lives in [MCP tools](/developers/mcp-tools); the raw spec is the machine-readable mirror of that page.

## Next steps

- [MCP tools reference](/developers/mcp-tools)
- [MCP overview](/developers/mcp-overview)
