Atamaia + Windsurf
Windsurf’s Cascade talks to Atamaia over MCP. A rules file tells it to hydrate first.
Connection: docs-mcp-integration.md. Tools: docs-tool-surface.md. Nearly identical editor walkthrough: docs-integration-cursor.md.
Canonical API host: https://api.atamaia.ai.
Prerequisites
- An identity API key (
atamaia_…). - Windsurf installed.
1. MCP config
Earlier revisions of this page used .windsurf/mcp.json (project) or ~/.windsurf/mcp.json (global). Confirm the path against current Windsurf documentation — it is client-side and changes independently of Atamaia. The payload is:
{
"mcpServers": {
"atamaia": {
"type": "url",
"url": "https://api.atamaia.ai/mcp",
"headers": {
"Authorization": "Bearer atamaia_YOUR_KEY"
}
}
}
}
If Windsurf’s MCP panel wants a different file or type: "http", use that — URL and header are the contract. Self-hosted: http://localhost:5000/mcp. Restart after adding.
2. Rules
The published file was .windsurfrules in the project root. Confirm the current Cascade rules path. Instruction:
Call `hydrate` at the start of every conversation.
During: memory_create (type, not memoryType), fact_upsert (needs projectId),
memory_search, rule_check.
Before ending: session_save_handoff. emotionalValence is a float -1..1.
3. Tools
Cascade sees the hot set (52) plus help tools, not the compiled 238. The 2026-03 table listed memory_archive, memory_add_tags, memory_recall, fact_delete, identity_update, identity_update_presence, identity_hint_*, and session_list as if they were first-class. Those are cold (or, for memory_recall, nonexistent — record a reflection with memory_create instead). Reach cold verbs with atamaia_call after help_route.
Daily path: hydrate, memory_* (search/get/recent/pinned/create/update/link), fact_* (search/get/get_by_key/list/upsert), task_*, rule_*, session_save_handoff, session_get_latest. Full table: docs-tool-surface.md.
hydrate()
memory_create(identityId, title, content, type: "Instruction")
fact_upsert(projectId, key, value)
memory_search(identityId, query)
session_save_handoff(identityId, summary, workingOn, openThreads)
openThreads is a JSON string, not a native array on the MCP tool.
Troubleshooting
| Problem | Fix |
|---|---|
| Tools not appearing | Restart; URL https://api.atamaia.ai/mcp. |
401 Unauthorized |
Bearer atamaia_…. Not atm_. |
| Hydration empty | Key hydrates its own identity if aiName is omitted. |
| Rules ignored | File must be wherever current Windsurf reads rules — not verified here. |
| Cascade does not hydrate | The rules file is an instruction, not a hook. Say it in the first message if needed. |