MCP integration

EAM is a remote MCP server using Streamable HTTP. Your assistant can search memories, load task context and write memories.

Server URLhttps://eam.thundera.eu/mcp
TransportStreamable HTTP (JSON-RPC over POST). GET /mcp returns 405
AuthOAuth via Thundera sign-in, or Authorization: Bearer <API token>

Claude Code

With OAuth (recommended); the browser opens the first time:

claude mcp add --transport http -s user eam https://eam.thundera.eu/mcp

With an API token:

claude mcp add --transport http -s user eam https://eam.thundera.eu/mcp \
  --header "Authorization: Bearer $EAM_TOKEN"

Kiro

Add to ~/.kiro/settings/mcp.json and replace <token>:

{
  "mcpServers": {
    "eam": {
      "url": "https://eam.thundera.eu/mcp",
      "headers": {
        "Authorization": "Bearer <token>"
      }
    }
  }
}

Grok

Add a custom MCP connector with the server URL, then sign in with Thundera when Grok asks.

Perplexity and other clients

Any client that supports Streamable HTTP MCP works. Use the server URL with OAuth, or send the Authorization header (a bare token without Bearer is also accepted).

OAuth discovery

Unauthenticated requests get 401 with a WWW-Authenticate: Bearer resource_metadata=… challenge. The metadata (RFC 9728) is public:

curl -s https://eam.thundera.eu/.well-known/oauth-protected-resource/mcp

It names https://auth.thundera.eu as the authorization server and lists scopes openid profile email offline_access with header bearer tokens. Other /.well-known/* paths return 404 so clients fall through to the authorization server. OAuth tokens must be minted for the EAM resource (RFC 8707).

Tools

ToolArgumentsPurpose
eam_searchquery (required), top_k (5), include_recent, project, person, as_of, max_tokensHybrid search. as_of (ISO-8601 or epoch ms) shows memories as they were then. max_tokens default 2000.
eam_writecontent (required), source (INTERACTION, TEXT, SPEECH), tagsWrite a memory; returns memory_id, persisted, salience_score, chain_detected.
eam_contexttask_description (required), top_k (10), project, person, as_of, max_tokensLoad context and activate HyperFocus.
eam_hyperfocus_resolvetask_id (required)Mark a HyperFocus task resolved.
eam_pinmemory_id (required)Pin a memory (cleanup immunity).
eam_proactive_contexttrigger_type (required: meeting_start, person_mentioned, app_focus, project_focus), title, people, app, project, limit (1–5)Top memories and current facts for a context event. Read-only.
One token

Several clients using one API token must share it. Creating a new token disconnects all of them until updated.

MCP calls count against the 600 requests/min per-credential limit; exceeding it returns a JSON-RPC error with HTTP 429 and Retry-After.