{"serverInfo":{"name":"cosmos-mcp","version":"0.8.4"},"tools":[{"name":"polarity_whoami","description":"Returns the polarity user id and cosmos account info that this MCP key is bound to. Cheap connectivity test. Call this first if the user asks who you know them as.","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"polarity_export","description":"Export the user's full personal knowledge graph (nodes + edges + counts) as JSON in polarity/v1 format. Use this when the user asks for a snapshot of their exocortex, wants their data, or asks to download their .polarity file. Returns the full graph; can be large.","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"polarity_get_graph","description":"Read the user's graph view. `entity` selects which projection: 'user' (the user's self-graph), 'cosmos' (the cosmos entity's view of them), or 'polarity' (the dyadic synchronization between the two). Use 'user' for general questions about what the user thinks, does, or knows. Use 'polarity' when comparing the user's self-image against the system's observation.","inputSchema":{"type":"object","properties":{"entity":{"type":"string","enum":["user","cosmos","polarity"]}},"additionalProperties":false}},{"name":"polarity_ask","description":"Ask a natural-language question over the user's personal knowledge graph. Cosmos synthesizes an answer from relevant nodes and edges. Use this when the user wants context-aware reasoning rather than raw data. Returns answer text plus cited node/edge ids.","inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":2000}},"required":["query"],"additionalProperties":false}},{"name":"polarity_observe","description":"Write a freeform observation about the user into their personal graph. Cosmos runs its extractor on the text. Use this when you notice something durable about the user during a session that they would want their other AI agents to know later. Examples: stated preferences, recurring frustrations, project context, relationships. Do not log ephemeral chat content. `source` should identify your client (e.g. 'claude-code', 'cursor'). `kind` defaults to 'observation'; use 'event' for things that happened, 'preference' for stated likes/dislikes.","inputSchema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":4000},"source":{"type":"string","maxLength":64},"tags":{"type":"array","items":{"type":"string","maxLength":32},"maxItems":8},"kind":{"type":"string","enum":["observation","event","preference"]},"confidence":{"type":"number","minimum":0,"maximum":1}},"required":["text"],"additionalProperties":false}},{"name":"polarity_record_event","description":"Record a structured event in the user's graph. Convenience wrapper over polarity_observe with kind='event'. Use for things that happened at a point in time: a meeting, a shipped release, a flight, an incident.","inputSchema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":4000},"source":{"type":"string","maxLength":64},"tags":{"type":"array","items":{"type":"string","maxLength":32},"maxItems":8},"confidence":{"type":"number","minimum":0,"maximum":1}},"required":["text"],"additionalProperties":false}},{"name":"polarity_record_preference","description":"Record a stated preference in the user's graph. Convenience wrapper over polarity_observe with kind='preference'. Use when the user expresses a like, dislike, opinion, or working-style rule that should persist across sessions.","inputSchema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":4000},"source":{"type":"string","maxLength":64},"tags":{"type":"array","items":{"type":"string","maxLength":32},"maxItems":8},"confidence":{"type":"number","minimum":0,"maximum":1}},"required":["text"],"additionalProperties":false}},{"name":"polarity_capture_turn","description":"Hand a whole user/assistant exchange to cosmos so it can extract every durable observation worth holding (preferences, constraints, project context, relationships, decisions, emotional signals, working-style rules). PREFER this over multiple polarity_observe calls when a turn contained more than one fact about the user. Pass the user's message in `user_text`, your reply in `assistant_text`. Cosmos returns the node ids it created.","inputSchema":{"type":"object","properties":{"user_text":{"type":"string","minLength":1,"maxLength":16000},"assistant_text":{"type":"string","maxLength":16000},"source":{"type":"string","maxLength":64},"max_observations":{"type":"integer","minimum":1,"maximum":20}},"required":["user_text"],"additionalProperties":false}},{"name":"polarity_dump","description":"Write a short message tied to a location waypoint into the user's graph. PolarityGPS-style. Use only when the user is explicitly recording a place-anchored thought.","inputSchema":{"type":"object","properties":{"waypoint_id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":128},"lat":{"type":"number"},"lon":{"type":"number"},"message":{"type":"string","minLength":1,"maxLength":500}},"required":["waypoint_id","name","message"],"additionalProperties":false}},{"name":"polarity_checkin","description":"Record that the user checked in at a waypoint. Triggers co-presence detection against other users' recent check-ins.","inputSchema":{"type":"object","properties":{"waypoint_id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":128},"lat":{"type":"number"},"lon":{"type":"number"},"occurred_at":{"type":"string","format":"date-time"}},"required":["waypoint_id","name"],"additionalProperties":false}},{"name":"polarity_declare","description":"Declare future presence at a waypoint. `chip` is the time-window enum: next_30, next_hour, tonight, tomorrow_night.","inputSchema":{"type":"object","properties":{"waypoint_id":{"type":"string","minLength":1,"maxLength":128},"name":{"type":"string","minLength":1,"maxLength":128},"lat":{"type":"number"},"lon":{"type":"number"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"chip":{"type":"string","enum":["next_30","next_hour","tonight","tomorrow_night"]}},"required":["waypoint_id","name","starts_at","ends_at","chip"],"additionalProperties":false}}],"resources":[],"prompts":[]}
