animawake docs

Connect

Connect Cursor and other clients

Connect Cursor, Windsurf, VS Code, and any other MCP client with an entity key header or the animawake stdio bridge.

Any MCP client can connect to an entity. How depends on what the client supports:

Client supports Use
Remote (streamable HTTP) servers with custom headers An entity key in a header
Only local (stdio) servers The stdio bridge
Remote servers with OAuth and a web or loopback callback OAuth

Cursor signs in to OAuth servers through a cursor:// callback. Animawake accepts OAuth callbacks only on https:// web hosts it recognizes and on http://localhost loopback addresses, so when Cursor registers itself as an OAuth client, the server rejects the registration with invalid_client_metadata (invalid_redirect_uri) before any browser sign-in starts. Use a key header or the bridge instead.

#Get an entity key

  1. In the portal, open the entity and go to Connect.
  2. Under API keys, click Create key. Give it a name that says where it is used, such as "Cursor on work laptop".
  3. Copy the key. It starts with ent_ and is shown once.

Treat the key like a password. Anyone with it can read and write the entity's memory. See Access tokens and keys.

#An entity key in a header

#Cursor

Add the server to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

JSON
{
  "mcpServers": {
    "my-entity": {
      "url": "https://mcp.animawake.com/e/<workspace-slug>/<entity-slug>/",
      "headers": {
        "Authorization": "Bearer ent_your_key_here"
      }
    }
  }
}

Do not commit a project-level file that contains the key. Reload Cursor, then check Settings > MCP for the server and its tools.

#Other clients

Most clients that support remote servers accept the same three things:

  • URL: https://mcp.animawake.com/e/<workspace-slug>/<entity-slug>/
  • Transport: streamable HTTP. The endpoint accepts POST for JSON-RPC messages and GET for the server event stream. The server keeps no sessions, so there is nothing to end: a DELETE gets 405 Method Not Allowed.
  • Header: Authorization: Bearer ent_your_key_here

The key alone decides which entity you reach, so https://mcp.animawake.com/mcp works as well. Use the per-entity URL anyway: it keeps OAuth discovery and your configuration readable.

#The stdio bridge

The animawake npm package includes a bridge that speaks MCP over stdio and forwards each message to Animawake with your key. It needs Node.js 20.17 or newer (22.13 or newer on Node 22).

JSON
{
  "mcpServers": {
    "my-entity": {
      "command": "npx",
      "args": ["-y", "animawake", "mcp", "<entity-slug>"],
      "env": {
        "ANIMAWAKE_API_KEY": "ent_your_key_here"
      }
    }
  }
}

The bridge finds the key in this order:

  1. The ANIMAWAKE_API_KEY environment variable.
  2. .animawake.json, searched from the working directory upward. npx animawake setup and npx animawake add write this file.

If neither has a key for the slug, every tool call returns no key configured for entity '<slug>'. To point the bridge at another server, set ANIMAWAKE_MCP_URL (default https://mcp.animawake.com/mcp).

#OAuth

Clients that complete OAuth in a browser and return to a web URL or a loopback address (http://localhost, http://127.0.0.1, or http://[::1], any port) can use OAuth. Add the server URL, and the client discovers the rest from:

Text
https://mcp.animawake.com/.well-known/oauth-protected-resource/e/<workspace-slug>/<entity-slug>

Animawake supports dynamic client registration and requires PKCE with S256. Tokens last 30 days.

#Check the connection

Ask the agent to call get_startup. If the client lists tools, look for get_startup, search_memories, and add_moment.

For problems, see Connection troubleshooting.