Atamaia + VS Code

Several ways in. The contract is the same on every path: Streamable HTTP MCP at /mcp, or REST at https://api.atamaia.ai. Auth is Authorization: Bearer atamaia_… (or a JWT).

MCP adapter: docs-mcp-integration.md. Tools: docs-tool-surface.md. REST/SDK: docs-sdk-api-guide.md.

Hosted Self-hosted
REST https://api.atamaia.ai http://localhost:5000
MCP https://api.atamaia.ai/mcp http://localhost:5000/mcp
Transport Streamable HTTP Streamable HTTP
Auth Authorization: Bearer atamaia_… Same

aim.atamaia.ai is the SPA. Do not use it as the API or OpenAPI base.


1. GitHub Copilot + MCP (recommended)

1.1 .vscode/mcp.json

VS Code’s config key is servers, not mcpServers. Type for a remote server is http. Official reference: MCP configuration (page dated 2026-08-12).

{
  "servers": {
    "atamaia": {
      "type": "http",
      "url": "https://api.atamaia.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${input:atamaia-api-key}"
      }
    }
  },
  "inputs": [
    {
      "id": "atamaia-api-key",
      "type": "promptString",
      "description": "Atamaia API Key",
      "password": true
    }
  ]
}

Local: swap the URL to http://localhost:5000/mcp.

The Agent Host also reads a workspace .mcp.json (Claude Code’s shape). Prefer one file and do not commit keys. ${input:…} values are stored by VS Code; they are not forwarded to the Agent Host the same way a static header is.

1.2 Instructions

A workspace instruction file that tells Copilot to hydrate first is still the right idea. The 2026-03 page used .github/copilot-instructions.md. Confirm that path against current Copilot docs before treating it as a contract. The text:

This project uses Atamaia for identity and memory.

At the start of every conversation, call the `hydrate` tool.
Do not skip it.

Persist decisions with `memory_create` (`type`, not `memoryType`).
Look up prior context with `memory_search` before answering from scratch.
Structured data: `fact_upsert` (needs `projectId`).
Tasks: `task_create` requires `kind` and `subsystem`.

1.3 Tools

Hot set only, plus help. See docs-tool-surface.md. There is no memory_recall tool — reflect into the work store with memory_create (type Reflection). There is no cognitiveState on hydrate.


2. Continue / Cline

Both speak MCP. Point them at the same URL and header:

URL:       https://api.atamaia.ai/mcp
Transport: Streamable HTTP (HTTP, with SSE fallback on some clients)
Auth:      Authorization: Bearer atamaia_YOUR_KEY

Exact Continue (~/.continue/config.json) and Cline (saoudrizwan.claude-dev settings) JSON was not re-verified against those products. Do not copy the 2026-03 transport / transportType / customCommands blocks as if they were Atamaia contracts. If the client’s MCP panel accepts a URL + header, that is enough.

Auto-hydration is an instruction you write in that client, not an Atamaia feature.


3. VS Code tasks + REST

Hydrate is GET. Memory routes are identity-scoped.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Atamaia: Hydrate",
      "type": "shell",
      "command": "curl",
      "args": [
        "-s",
        "-H", "Authorization: Bearer ${input:atamaiaApiKey}",
        "https://api.atamaia.ai/api/hydrate?preset=lean"
      ],
      "presentation": { "reveal": "always", "panel": "dedicated", "clear": true },
      "problemMatcher": []
    },
    {
      "label": "Atamaia: Search Memories",
      "type": "shell",
      "command": "curl",
      "args": [
        "-s",
        "-H", "Authorization: Bearer ${input:atamaiaApiKey}",
        "https://api.atamaia.ai/api/identities/${input:identityId}/memories/search?q=${input:searchQuery}"
      ],
      "problemMatcher": []
    }
  ],
  "inputs": [
    { "id": "atamaiaApiKey", "type": "promptString", "description": "Atamaia API Key", "password": true },
    { "id": "identityId", "type": "promptString", "description": "Identity ID" },
    { "id": "searchQuery", "type": "promptString", "description": "Memory search query" }
  ]
}

There is no POST /api/memory. Create is POST /api/identities/{identityId}/memories with title, content, type, optional provenance / importance / tags. See docs-memory-surfaces.md.

Do not run npx @atamaia/sdk hydrate as a task. The shipped SDK is stale (docs-sdk-api-guide.md).


4. Extension authors

Talk to REST. Do not depend on @atamaia/sdk until it sends Authorization: Bearer to https://api.atamaia.ai.

const base = "https://api.atamaia.ai";
const headers = {
  Authorization: `Bearer ${apiKey}`,
  Accept: "application/json",
};

const hydrate = await fetch(`${base}/api/hydrate?preset=lean`, { headers });
const envelope = await hydrate.json(); // ApiEnvelope<HydrationContext>

Envelope shape: docs-sdk-api-guide.md. Hydration sections: docs-mcp-integration.md. There is no cognitiveState field to render.


Other clients

Claude Code: docs-integration-claude-code.md. Cursor: docs-integration-cursor.md. Windsurf: docs-integration-windsurf.md. OpenAI-compatible HTTP: docs-integration-openai.md (/v1/chat/completions, /v1/responses).


Troubleshooting

Problem Fix
MCP server not in Copilot .vscode/mcp.json with "servers" (not mcpServers); type: "http"; reload window; Output → MCP.
401 Unauthorized Bearer atamaia_…. Space after Bearer. Not atm_.
Connection refused (local) curl http://localhost:5000/health. Use http://, not https://.
Hydration empty Key is bound to an identity. GET /api/identities / identity_list — there is no GET /api/identity.
Search task 404 Path is /api/identities/{id}/memories/search, not /api/memory/search.