Skip to main content
Cloud MCP is GET / POST / DELETE /mcp on the API host. Same auth plugin as /v1. It mounts the same read registry as MCP local (search_notes, grep_notes, read_note, list_notes, list_tags, …). With connected write storage and a bearer that has notes.write, it also registers write_note and edit_note. Inspect tools/list before calling them. A valid read-only token connects without those tools. Those two follow the vault write policy: a queued result has not changed the note. Arguments: MCP tools. Create a personal access token in web Settings → Access tokens. Read is included. Select Write notes for an agent that submits proposals; reserve Review agent writes for reviewer-controlled integrations. Copy the secret once or use Copy config. Personal-token writes are attributed to pat:<prefix>. Record a queued result’s pending_id; receipt polling over HTTP also requires notes.review. With a write-only token, hand the ID to a reviewer. Agents must not approve their own proposals. Production: https://api.elanotes.com/mcp. Local: http://127.0.0.1:4000/mcp.

Auth challenge

Unauthenticated /mcp returns 401 with RFC 6750 WWW-Authenticate: Bearer realm="elanotes" and, when an issuer is configured, resource_metadata pointing at /.well-known/oauth-protected-resource (RFC 9728).
Open locally when no auth is configured (same as /v1); that mode skips the permission requirement for cloud write tools, but still needs write storage. The local metadata URL is http://127.0.0.1:4000/.well-known/oauth-protected-resource. Production requires a bearer. See API overview.

Cursor / Claude Code

Local: "url": "http://127.0.0.1:4000/mcp". Leave the header off when the API is in the open-local path.

Rate limits

/mcp uses the read abuse ceiling (RATE_LIMIT_READ_PER_MINUTE, default 600). Reads are never metered for cost. A 429 includes Retry-After and reason: RATE_LIMITED.

Failures

Tool failures, including invalid arguments and rejected edits, return isError: true with JSON-encoded reason, message, and hint in content[].text. Hints use tool names such as read_note and edit_note. Transport protocol errors retain their JSON-RPC codes and IDs and include these fields in error.data. Authentication failures return the API HTTP error envelope and WWW-Authenticate challenge before tool execution.