Documentation
EspañolMCP reference
Endpoint, authentication, tools, and errors of Mico's remote MCP server.
Mico's MCP server runs in Mico's cloud and reads the meetings you sync. It speaks MCP protocol 2025-03-26 over Streamable HTTP. Every tool is read-only and idempotent. It requires a plan that includes MCP (Flow), and the server checks the plan on every request. To connect a client, see MCP for agents.
Endpoint
https://<project>.supabase.co/functions/v1/mcp
The exact URL is shown in Settings → Developers → MCP.
- Every request is a
POSTwith one JSON-RPC 2.0 message, and the response is JSON. Batches are not supported. - The server is stateless. There is no session, and
GET(the optional event stream) returns405. - Supported methods:
initialize,ping,tools/list, andtools/call. Notifications are accepted with202and no body. - The server declares only the
toolscapability. It has no resources or prompts.
Authentication
Send Authorization: Bearer <token> with one of these tokens:
| Token | Origin |
|---|---|
mico_pat_... | A personal access token you create in Settings → Developers → MCP. It does not expire; it works until you revoke it. |
mico_oat_... | An OAuth access token issued to a client such as claude.ai. It lasts one hour, and the client refreshes it. |
For OAuth clients, the server publishes its metadata at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server under the endpoint URL. It supports dynamic client registration (/register), the authorization code flow with PKCE S256 (/authorize and /token), public clients without a secret, and the mico:read scope. Refresh tokens last 30 days and rotate on every use.
On the authorization page you prove who you are with a personal access token. Revoking that token also revokes every OAuth connection it authorized.
A missing, unknown, expired, or revoked token returns 401 with a WWW-Authenticate header that points to the protected-resource metadata.
Tools
Out-of-range limit and offset values are clamped, not rejected.
list_meetings
| Parameter | Type | Default | Notes |
|---|---|---|---|
query | string | — | Case-insensitive title or meeting ID substring. |
series_id | string | — | Exact recurring series ID. |
limit | integer | 20 | Clamped to 1..200. |
offset | integer | 0 | Number of results to skip. |
Returns meetings, newest first, and pagination. pagination.total is null.
get_meeting
Accepts required string meeting_id. Returns the meeting metadata (id, title, kind, status, created_at, updated_at, started_at, ended_at, series_id, timezone, language), note, summaries, participants, and action_items. Transcript words are intentionally separate.
Each note or summary carries its text in markdown, as plain text with one line per paragraph or heading.
get_meeting_transcript
| Parameter | Type | Default | Notes |
|---|---|---|---|
meeting_id | string | required | A returned Mico meeting ID. |
offset | integer | 0 | Word offset. |
limit | integer | 200 | Clamped to 1..500. |
The result includes meeting_id, text, words, and pagination. pagination.total is the number of words in the transcript, and pagination.next_offset is null on the last page. If a meeting has transcript text but no word timings, the first page returns that text with an empty words list.
get_recurring_meeting_history
Accepts required string meeting_id plus optional integer limit and offset. The limit defaults to 20 and is clamped to 1..200; the offset defaults to 0. Returns meetings from the same recurring series, newest first, and pagination. A meeting outside a series returns an empty list.
search_meetings
| Parameter | Type | Default | Notes |
|---|---|---|---|
query | string | required | Text to find in meeting titles and summaries. Case-insensitive. |
limit | integer | 20 | Clamped to 1..200. |
offset | integer | 0 | Number of results to skip. |
Returns meetings, newest first, and pagination. pagination.total counts the matches.
list_pending_action_items
Accepts optional integer limit (default 20, clamped to 1..200) and offset (default 0). Returns action_items whose status is todo or in_progress, newest first, each with the meeting_id and meeting_title it came from, and pagination.
search_shared_notes
| Parameter | Type | Default | Notes |
|---|---|---|---|
query | string | required | Words that must all appear in the note. |
limit | integer | 10 | Clamped to 1..20. |
Searches notes other people share with you, including everything shared with your teams. Returns results, each with share_id, title, team, published_at, and a snippet. Notes and summaries only, never transcripts.
get_shared_note
Accepts required string share_id, as returned by search_shared_notes. Returns share_id, title, team, published_at, text (up to 12,000 characters), and truncated.
Results and errors
Each tool returns one text content item that contains JSON. Paginated results include a pagination object with offset, limit, returned, total, and next_offset.
A tool that cannot answer returns a normal result with isError: true and an error message in the JSON. That covers a missing required argument, a meeting that does not exist or is not yours (meeting 'ID' not found), and a failure while reading the data.
Protocol errors use JSON-RPC codes:
| Code | Meaning |
|---|---|
-32700 | The body is not valid JSON. |
-32600 | Invalid JSON-RPC request, or a batch. |
-32601 | Unsupported method. |
-32602 | Unknown tool. |
HTTP errors arrive instead of a JSON-RPC response:
| Status | Meaning |
|---|---|
401 | Missing, unknown, expired, or revoked token. |
402 | Your plan does not include MCP. The body's code is feature_not_included or no_plan. |
405 | The request is not a POST. |
503 | Mico could not verify the token or the plan. Retry shortly. |