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).
/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
"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, returnisError: 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.