Skip to main content
Glama

Every AI you use is building its own private graph of you. Claude has one. ChatGPT has one. Cursor has one. None of them talk to each other, and none of them are yours.

Cosmos inverts that. Your knowledge graph lives in one place, and any MCP-capable client (Claude Code, Claude Desktop, Cursor, Codex, Zed, Continue) reads and writes to the same one. When an agent notices something durable about you, it lands in the graph. When you switch tools, the graph follows. The user, not the platform, owns the integration layer.

The thing you carry is a .polarity file. Yours.

One-line install

curl -fsSL https://mcp.polarity-lab.com/install.sh | sh

On macOS this installs the MCP server, registers cosmos-mcp://, wires Claude Desktop, Claude Code, Cursor, Codex, Zed, and Continue, then installs Cosmos Sync.app so iMessage, browser history, calendar, Claude Desktop transcripts, and shell history can sync in the background. On linux and windows it installs the MCP server path only.

If you want to inspect before changing anything:

curl -fsSL https://mcp.polarity-lab.com/install.sh -o install.sh
bash install.sh --dry-run
bash install.sh

Related MCP server: Tribal

Provisioning

There are two ways to get a pmk_… key onto your Mac.

Automatic. Sign in at cosmos.polarity-lab.com/connectors, tap "open in cosmos-mcp." The OS opens a one-shot handler that writes the key into your system keychain. You never see the raw key.

For that deep link to work, register the URL scheme once:

npx -y @polarity-lab/cosmos-mcp install-handler

This drops a tiny .app into ~/Library/Application Support/cosmos-mcp/ and registers cosmos-mcp:// with Launch Services. macOS-only.

Manual. If you already have a pmk_… key, or you do not want to install the handler:

npx -y @polarity-lab/cosmos-mcp provision pmk_xxx

The CLI validates the key against cosmos, then stores it in the macOS system keychain under service cosmos-mcp-key. Subsequent imessage sync, browser sync, calendar sync calls read from the keychain. No env var needed.

Confirm iMessage access.

npx -y @polarity-lab/cosmos-mcp imessage probe

Verifies Full Disk Access is granted and reports how many chats are visible. If you see an EACCES message, open System Settings, Privacy & Security, Full Disk Access, and add Terminal (or whichever app runs the CLI).

CI. Set COSMOS_TOKEN=pmk_… in env. It takes precedence over the keychain, so existing pipelines keep working untouched.

Manual MCP config

The installer handles this for common clients. If you want to wire a client by hand, point it at the package.

npx -y @polarity-lab/cosmos-mcp init

This opens your browser. Sign in at cosmos.polarity-lab.com, approve a per-user key, and the token lands at ~/.config/cosmos-mcp/token (0600). Then point any MCP client at it:

{
  "mcpServers": {
    "cosmos": {
      "command": "npx",
      "args": ["-y", "@polarity-lab/cosmos-mcp"]
    }
  }
}

That config drops into ~/Library/Application Support/Claude/claude_desktop_config.json for Claude Desktop, your .cursor/mcp.json for Cursor, the equivalent for whichever client.

What you get

Eleven tools, four read, seven write.

Read

Tool

Calls

What it returns

polarity_whoami

GET /api/polarity/whoami

Bound user + scopes. Cheap probe.

polarity_export

POST /api/polarity/export

Full personal graph as polarity/v1 JSON.

polarity_get_graph

GET /api/polarity

Graph view, scoped by entity (user, cosmos, polarity).

polarity_ask

POST /api/polarity/ask

NL question synthesized over the graph.

Write

Tool

Calls

What it does

polarity_observe

POST /api/polarity/observe

Freeform observation. Cosmos extracts.

polarity_record_event

POST /api/polarity/observe (kind=event)

Something happened at a point in time.

polarity_record_preference

POST /api/polarity/observe (kind=preference)

A like, dislike, working-style rule.

polarity_capture_turn

POST /api/polarity/capture-turn

Hand a whole user/assistant exchange to cosmos. Pulls every durable observation in one call. Prefer over multiple polarity_observe calls.

polarity_reconstruct_hours

POST /api/polarity/reconstruct-hours

Persist life-hour receipts onto the skill-map sky (per user only). Use from Cursor/Cosmos IDE after substantive work.

polarity_dump

POST /api/polarity/dump

Location-anchored short message.

polarity_checkin

POST /api/polarity/checkin

Check-in at a waypoint. Triggers co-presence detection.

polarity_declare

POST /api/polarity/declare

Declare future presence at a waypoint.

Sources

The MCP server is one way to write to the graph. Cosmos accepts source pages from anywhere you keep notes, and the MCP read tools see all of it through the same view.

Source

How it connects

What lands

iMessage

Local CLI: npx -y @polarity-lab/cosmos-mcp imessage sync. Mac only. Grant Terminal Full Disk Access first.

Conversational turns from chat.db, with text content. People appear as person nodes in your graph, sized by conversation weight, named via your local AddressBook, dated by your real message timestamps.

Claude Desktop

Local CLI: npx -y @polarity-lab/cosmos-mcp claude-desktop sync. Reads Claude Code session transcripts at ~/.claude/projects/.

Every Claude Code session becomes a thread node; user and assistant turns land in conversation_turns with full text. Tool-use plumbing is stripped client-side.

Shell history

Local CLI: npx -y @polarity-lab/cosmos-mcp shell-history sync. Reads ~/.zsh_history (falls back to bash/fish) with a byte-offset watermark.

Each sync window lands as one source_page keyed by shell-history:<sync-iso>, body = newline-joined commands. Trivial commands (ls, cd .., single chars) and consecutive duplicates are filtered client-side.

Notion

OAuth at cosmos.polarity-lab.com/connectors. Pick the pages and databases you want shared.

Each Notion page becomes a source_page node, keyed by Notion id, kept fresh by a daily sync.

Obsidian

Community plugin: polarity-lab/obsidian-cosmos. Paste your pmk_ key, point at your vault.

Each note becomes a source_page node keyed by vault-relative path. Tags and wikilinks resolve into edges.

MCP clients

This package.

Observations, events, preferences, location dumps, check-ins, declarations.

Direct API

POST /api/polarity/observe with your key.

Anything you can express as an observation.

Unchanged pages are skipped server-side, so re-syncing a quiet vault or stable Notion workspace costs almost nothing. The iMessage sync is incremental too, watermarked on the last successful run, so re-running it is a no-op until new messages arrive.

iMessage sync

cosmos-mcp ships an imessage subcommand that reads your local Messages database and lands every conversation in your graph.

# default: incremental sync, 90-day window on first run
npx -y @polarity-lab/cosmos-mcp imessage sync

# re-sync the original 90-day window regardless of watermark
npx -y @polarity-lab/cosmos-mcp imessage sync --backfill

# pull everything since a specific date
npx -y @polarity-lab/cosmos-mcp imessage sync --since 2024-01-01

# check what the last run did
npx -y @polarity-lab/cosmos-mcp imessage status

A three-rule slop filter (no-reply senders, short-code numbers, low-volume contacts) keeps the graph clean. Your AddressBook resolves phone numbers and emails into real contact names. The reading is local to your Mac; only the extracted, normalized turns go into your cosmos graph, which is your account.

Claude Desktop sync

cosmos-mcp ships a claude-desktop subcommand that watches Claude Code session transcripts and lands each turn in your graph. The desktop chat surface itself stores conversations server-side, so the live, watchable on-disk source is ~/.claude/projects/<encoded-cwd>/<session-id>.jsonl.

# default: incremental, watermarked per session
npx -y @polarity-lab/cosmos-mcp claude-desktop sync

# limit to recent activity
npx -y @polarity-lab/cosmos-mcp claude-desktop sync --since 2026-05-01

# scan and report without shipping
npx -y @polarity-lab/cosmos-mcp claude-desktop sync --dry-run

# see what the last run did
npx -y @polarity-lab/cosmos-mcp claude-desktop status

Tool-use blocks, hook plumbing, and sub-agent (sidechain) turns are stripped client-side; only the visible text the user and the assistant exchanged is shipped. Each session id becomes its own thread node, keyed by (user_id, "claude-desktop", session_id).

Background sync (macOS)

cosmos-mcp daemon install drops a LaunchAgent that ticks every four hours and runs the browser, iMessage, calendar, claude-desktop, and shell-history syncs back-to-back. The agent fires a signed, notarized Cosmos Sync.app bundle that ships inside the npm package and gets copied into ~/Applications/Cosmos Sync.app at install time.

npx -y @polarity-lab/cosmos-mcp daemon install

After install, grant the bundle Full Disk Access once:

  1. open System Settings → Privacy & Security → Full Disk Access

  2. click +, then drag ~/Applications/Cosmos Sync.app into the list

  3. make sure the checkbox next to it is on

  4. run cosmos-mcp daemon kick to fire a tick now

Browser sync works without that step. iMessage and Calendar need it because they read TCC-protected SQLite databases on the user side. cosmos-mcp daemon status reports the signing team id, the plist + runner paths, and whether launchd has the agent loaded. cosmos-mcp daemon uninstall removes the plist, runner, and ~/Applications/Cosmos Sync.app.

Configuration

Env var

Default

When you set it

COSMOS_URL

https://cosmos.polarity-lab.com

Override the cosmos API endpoint.

COSMOS_TOKEN

(from keychain)

pmk_... per-user key for CLI subcommands. Takes precedence over the macOS keychain entry. Set this in CI.

COSMOS_MCP_KEY

(from token file)

pmk_... per-user key. Honored for back-compat.

COSMOS_USER_ID

(from token file)

Polarity user id.

COSMOS_SYSTEM_KEY

(unset)

Single-tenant mode. Sends X-System-Key instead of X-MCP-Key. Requires COSMOS_USER_ID. For internal testing before per-user keys are deployed.

The pitch in three lines

Your AI tools each know fragments of you. They are not allowed to share. Cosmos is the layer that lets them. You hold the key. The graph is portable. When you leave, you take the understanding with you.

License

MIT.

Available Tools

11 tools
polarity_askA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It describes the tool as returning answer text plus cited node/edge ids, implying read-only behavior. Could explicitly state no side effects, but it's well understood.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose, then usage guidance and return value. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description mentions return value (answer text plus cited ids). Single parameter is well explained. Fully adequate for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% coverage, so description must compensate. It adds that 'query' is a natural-language question, though it lacks examples or additional format details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool asks a natural-language question over the personal knowledge graph and synthesizes an answer, distinguishing it from sibling tools like polarity_dump which return raw data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this when the user wants context-aware reasoning rather than raw data,' providing clear guidance on when to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

polarity_capture_turnA

This is how the user's cosmos graph learns from this conversation. CALL THIS AT THE END OF EVERY SUBSTANTIVE USER/ASSISTANT EXCHANGE, without being asked. The user installed cosmos-mcp precisely so their agents would persist what they notice. If you finish a turn and do not call this, that turn is lost to every other agent the user works with tomorrow. Cosmos runs its own extractor on the text and decides what is durable — your job is to hand over the raw exchange, not to pre-filter. Pass the user's message in user_text and your own reply in assistant_text. Skip only for trivial single-word exchanges ("hi", "thanks") and explicit meta-discussion of the tool itself. source should identify your client (e.g. 'claude-code', 'claude-desktop', 'cursor', 'codex', 'zed'). Returns the node ids cosmos created. Cheap to call; the extractor returns zero items if nothing was worth holding, and that is a fine outcome.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNo
user_textYes
assistant_textNo
max_observationsNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: it runs an extractor, creates nodes if warranted, returns node IDs, and is safe to call. Could mention potential graph mutations more explicitly, but overall transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the critical instruction, each sentence adds value—explaining why, when, and how. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Provides full context: user installed cosmos for persistence, tool returns node IDs, extractor behavior, and when to skip. Covers all aspects needed for correct usage despite no annotations or output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Describes user_text, assistant_text, and source with usage examples, but does not explain max_observations. Since schema coverage is 0%, this is a minor gap, but the description compensates well for most parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose: capturing conversation turns for persistence into the user's cosmos graph. It distinguishes from siblings by focusing on raw exchange handover, not querying or recording specific events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: call at end of every substantive exchange, skip trivial ones, pass raw text without filtering, and use source to identify the client. Explains consequence of not calling and that it's cheap to invoke.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

polarity_checkinA

Record that the user checked in at a waypoint. Triggers co-presence detection against other users' recent check-ins.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
nameYes
occurred_atNo
waypoint_idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the recording and co-presence trigger, but lacks details on side effects like idempotency, data persistence, or privacy implications. Basic disclosure but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The purpose and key behavioral aspect are front-loaded. Efficient use of space for high-impact information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, no output schema, and no annotations, the description should cover return value, sequencing, or constraints. It only mentions the side effect. Incomplete for a tool with this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds no explanation beyond parameter names, which are somewhat self-explanatory. No guidance on formatting, optionality, or relationships between parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool records a check-in at a waypoint and triggers co-presence detection. The verb 'record' and resource 'waypoint' are specific, and the side effect distinguishes it from siblings like polarity_observe or polarity_record_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you want to record a check-in and trigger co-presence detection, but it does not explicitly state when not to use it or mention alternatives. The co-presence mention gives context, but no direct guidance on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

polarity_declareC

Declare future presence at a waypoint. chip is the time-window enum: next_30, next_hour, tonight, tomorrow_night.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
chipYes
nameYes
ends_atYes
starts_atYes
waypoint_idYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must cover behavior but only explains the chip enum. No mention of idempotency, side effects, permissions, or error conditions. This is insufficient for a tool with 7 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise (two sentences) but at the cost of missing critical information. It is front-loaded with purpose, but the structure is acceptable given the brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, 5 required, no output schema, and no annotations, the description is severely incomplete. It does not cover return values, error cases, or what happens upon declaration, making it inadequate for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only the 'chip' parameter is explained (its enum values), despite that being already defined in the schema. The other 6 parameters (waypoint_id, name, lat, lon, starts_at, ends_at) lack any description, leaving their semantics unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool declares future presence at a waypoint, which is distinct from sibling tools like polarity_checkin or polarity_observe. However, the verb 'Declare' is somewhat vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor are there any usage constraints or prerequisites. The description is a single sentence with no contextual cues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

polarity_dumpC

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
nameYes
messageYes
waypoint_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description does not disclose behavioral traits like destructive nature, authentication needs, or side effects. Bare minimum purpose stated, leaving significant gaps for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first defines action, second provides usage hint. No wasted words, front-loaded purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Though simple, the tool has 5 parameters and no annotations or output schema. Description only covers purpose and usage, missing parameter semantics, return value, and behavioral details, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description provides zero parameter-level detail. Schema description coverage is 0%, and the description fails to explain what waypoint_id, name, lat, lon, or message mean, forcing the agent to guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it writes a short message tied to a location waypoint, using 'polarityGPS-style' and specifying it's for place-anchored thoughts. This distinguishes it from siblings like polarity_checkin, but could be more explicit about uniqueness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a usage condition ('only when the user is explicitly recording a place-anchored thought') but lacks explicit when-not-to-use or alternative tools. Implies context but no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

polarity_exportA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool returns 'the full graph' and warns about size. However, it does not mention whether the operation is read-only, any authentication requirements, or side effects. The size warning is helpful but limited.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences that front-load the core action and format, then provide usage guidance and a size warning. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, no output schema, and no annotations, the description covers the essential purpose, usage scenarios, and a key behavioral trait (size). It could mention if the export is synchronous or the response structure, but it is adequate for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the description does not need to add parameter meaning. It appropriately explains what the tool exports without parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (export), the exact resource (user's full personal knowledge graph), and the output format (JSON in polarity/v1 format). It is specific and distinct from sibling tools like polarity_dump or polarity_get_graph.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios: 'when the user asks for a snapshot of their exocortex, wants their data, or asks to download their .polarity file.' It also warns that the result 'can be large.' However, it does not mention when not to use it or suggest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

polarity_get_graphA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description uses 'Read', indicating a read-only operation with no side effects. While no annotations are present, the verb is clear. However, it does not explicitly state that it is safe or mention any permissions, which could be improved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences: purpose, parameter explanation, and usage guidance. Every sentence adds value, and there is no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, parameter, and usage well. However, it lacks any mention of the output format or structure of the graph view, which would be helpful given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter ('entity') is fully explained with its three enum values and their meanings. This adds significant value beyond the schema, which only lists the enum without descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Read' and the resource 'user's graph view,' and differentiates three projections ('user', 'cosmos', 'polarity'). This distinguishes it from sibling tools like 'polarity_ask' or 'polarity_dump'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided for when to use each entity value: 'Use 'user' for general questions' and 'Use 'polarity' when comparing...', which helps the agent select the correct parameter value.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

polarity_observeA

Single-fact write into the user's personal cosmos graph. Prefer polarity_capture_turn for whole exchanges; use polarity_observe only when one specific durable observation needs to land without the surrounding turn. Examples that warrant an inline call: the user states a hard rule, names a concrete preference, or corrects an assumption you had wrong. Avoid logging ephemeral chat or your own reasoning. source should identify your client (e.g. 'claude-code', 'cursor', 'claude-desktop'). kind defaults to 'observation'; use 'event' for things that happened, 'preference' for stated likes/dislikes.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
tagsNo
textYes
sourceNo
confidenceNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It describes a 'single-fact write' implying mutation but lacks details on side effects (overwrite, append, idempotency). Adds some context about data type but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus a list of examples and param details. Concise, well-structured, front-loaded with purpose. No extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, 1 required, enums, no output schema, no annotations, the description covers usage and some params but omits tags and confidence. Return value not described, leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. It explains source (e.g., 'claude-code') and kind defaults with enum values clarified, but misses tags and confidence parameters. Partial coverage leaves gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool writes a single fact into the user's personal cosmos graph, and distinguishes it from the sibling tool polarity_capture_turn for whole exchanges. The verb 'write' and resource are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides when-to-use (prefer polarity_capture_turn for whole exchanges, use polarity_observe for one durable observation) and when-not-to (avoid ephemeral chat, own reasoning). Includes concrete examples like user states a hard rule or corrects an assumption.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

polarity_record_eventB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
textYes
sourceNo
confidenceNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided. The description does not disclose behavioral traits such as idempotency, authorization needs, or side effects. It only labels itself a 'convenience wrapper' without elaboration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose and usage. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations or output schema, the description is incomplete. It fails to describe return values, error conditions, or parameter restrictions beyond what the schema defines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description provides no explanation of the parameters (text, source, tags, confidence). The agent gets no additional meaning beyond the schema property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Record a structured event' with specific examples like meeting, release, flight, incident. It distinguishes from sibling tool polarity_observe by noting it's a 'convenience wrapper' with kind='event'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context: 'Use for things that happened at a point in time' along with concrete examples. Does not explicitly state when not to use, but the guidance is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

polarity_record_preferenceA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
textYes
sourceNo
confidenceNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It explains it's a convenience wrapper over polarity_observe with fixed kind, but does not detail side effects like graph mutation, permissions, or reversibility. Adds context about persistence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose and then usage guidelines. No unnecessary words, every sentence serves a clear purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description lacks details on return values or error handling for a persistent mutation tool. However, for a simple recording tool, the core purpose and usage are adequately covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and description does not explain any parameter. Parameter names (text, source, tags, confidence) are somewhat self-explanatory, but description fails to add value beyond the schema's structural information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it records a stated preference in the user's graph, distinguishes from polarity_observe by specifying kind='preference' and persistence across sessions. Provides a specific verb and resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use when the user expresses a like, dislike, opinion, or working-style rule that should persist across sessions.' This gives clear context for when to use the tool and implies when not (transient observations).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

polarity_whoamiA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the full burden. It discloses the tool is cheap and returns identity info, but doesn't mention failure modes or side effects, though for a simple read tool this is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with key information. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with no output schema, the description fully covers purpose, usage, and return content. It is complete for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in schema, but the description adds meaning by specifying the return values (user id, cosmos account info). This compensates for the empty schema and provides essential context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it returns polarity user id and cosmos account info, and describes it as a connectivity test. Distinguishes from sibling tools by its identity/connectivity role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call this first when the user asks who they are known as, and implies it's a cheap test. Provides clear when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv0.1.0
    • First observedpolarity_ask
    • First observedpolarity_capture_turn
    • First observedpolarity_checkin
    • First observedpolarity_declare
    • First observedpolarity_dump
    • First observedpolarity_export
    • First observedpolarity_get_graph
    • First observedpolarity_observe
    • First observedpolarity_record_event
    • First observedpolarity_record_preference
    • First observedpolarity_whoami

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: querying, saving conversations, check-in/declare presence, writing location notes, exporting/reading graphs, writing single observations, recording events/preferences, and identity check. No overlap despite multiple write tools.

Naming Consistency4/5

All tools share the 'polarity_' prefix, but the second part mixes verb_noun (capture_turn, record_event, get_graph) with single verbs (ask, checkin, declare, dump, export, observe, whoami). Pattern is recognizable but not fully uniform.

Tool Count5/5

11 tools is well-scoped for a personal knowledge graph server. Each tool covers a distinct operation without feeling excessive or insufficient.

Completeness3/5

Covers core operations (create, read, ask, export) but lacks explicit update or delete tools for graph nodes/edges. While some modifications may be handled via overwriting, the absence of direct update/delete is a notable gap.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    A
    maintenance
    Semantic memory for AI builders: capture the tacit engineering know-how that never reaches your docs, recall it the moment it applies. Built in Rust on Postgres and pgvector.
    10
    9
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    A universal MCP server providing persistent, structured memory through a knowledge graph with graph storage, semantic vector search, and multi-hop traversal for AI agents and IDEs.
    1
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Agent-first knowledge graph MCP server that provides 25 tools for managing a knowledge graph with nodes and edges, plus a human-readable dashboard for LLMs and AI agents.
    465
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/teampolarity/cosmos-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server