Documentation

Español

MCP 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 POST with 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) returns 405.
  • Supported methods: initialize, ping, tools/list, and tools/call. Notifications are accepted with 202 and no body.
  • The server declares only the tools capability. It has no resources or prompts.

Authentication

Send Authorization: Bearer <token> with one of these tokens:

TokenOrigin
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

ParameterTypeDefaultNotes
querystring—Case-insensitive title or meeting ID substring.
series_idstring—Exact recurring series ID.
limitinteger20Clamped to 1..200.
offsetinteger0Number 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

ParameterTypeDefaultNotes
meeting_idstringrequiredA returned Mico meeting ID.
offsetinteger0Word offset.
limitinteger200Clamped 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

ParameterTypeDefaultNotes
querystringrequiredText to find in meeting titles and summaries. Case-insensitive.
limitinteger20Clamped to 1..200.
offsetinteger0Number 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

ParameterTypeDefaultNotes
querystringrequiredWords that must all appear in the note.
limitinteger10Clamped 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:

CodeMeaning
-32700The body is not valid JSON.
-32600Invalid JSON-RPC request, or a batch.
-32601Unsupported method.
-32602Unknown tool.

HTTP errors arrive instead of a JSON-RPC response:

StatusMeaning
401Missing, unknown, expired, or revoked token.
402Your plan does not include MCP. The body's code is feature_not_included or no_plan.
405The request is not a POST.
503Mico could not verify the token or the plan. Retry shortly.