Conxt exposes your memory as a remote MCP server. Any MCP-compatible client — Claude Code, Cursor, Codex, Claude Desktop — can read the context it needs and write back what it learns, over these fourteen tools.
Reading
Before the agent acts — pull the context that's relevant now.
The default session-opener. Semantic search that blends personal and team memory, ranked by hybrid score (similarity + recency + reinforcement).
get_context(ctx, query, user_id=None, limit=15)
When to useCall once at the start of any task — "what do I already know that's relevant here." If your agent calls one tool per session, make it this one.
| Parameter | Type | Default | |
query |
string |
required |
What you're working on, in natural language. |
limit |
int |
15 (max 30) |
How many memories to return. |
user_id |
string |
auto |
Resolved from the API key; only pass to override. |
ctx |
Context |
injected |
MCP request context — supplied by the runtime, never by you. |
ReturnsA formatted block of the most relevant memories, plus your pinned set. "No relevant memories found" when the graph has nothing close.
The verified retrieval loop. Runs discover → verify → iterate server-side and returns one checked answer instead of raw candidates you have to judge.
resolve_context(ctx, query, memory_type=None, user_id=None)
When to useWhen you want an answer Conxt will stand behind, not a list to sift. It widens the search once if empty, re-ranks by recency if the top hit is flagged conflicting, and says "nothing reliable" rather than guessing. Costs more than get_context — don't make it the default.
| Parameter | Type | Default | |
query |
string |
required |
The question to resolve. |
memory_type |
string |
null |
Restrict to one type (see the type list). |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsOne verified answer, or an honest "nothing found" / "nothing reliable." Bounded to at most one retry.
Targeted semantic search tuned for agent recall. Grep, where get_context is "brief me."
search_memory(ctx, query, memory_type=None, agent_id=None, limit=10, user_id=None)
When to useWhen you know roughly what you're after and want specific hits — optionally narrowed to one type or one agent's writes.
| Parameter | Type | Default | |
query |
string |
required |
Search text. |
memory_type |
string |
null |
Restrict to one type. |
agent_id |
string |
null |
Only memories written by this agent. |
limit |
int |
10 (max 25) |
Max results. |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsMatching memories, each tagged with its writing agent where known.
search_memory narrowed to decisions, coding rules, and tool choices only.
search_decisions(ctx, query, user_id=None)
When to useWhen the question is specifically "what did we decide about X" rather than "what do we know about X." Returns the top 10.
| Parameter | Type | Default | |
query |
string |
required |
Topic to search decisions for. |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsUp to 10 decisions/rules/tool-choices, hybrid-ranked.
Recall sorted purely by recency, ignoring reinforcement and confidence entirely.
recall_as_of(ctx, query, as_of_date=None, memory_type=None, limit=5, user_id=None)
When to useWhen a heavily-reinforced old memory might be outranking a newer, correct one — or for point-in-time queries: "what did we believe about this before it changed." Pass as_of_date to look at the graph as of a past date.
| Parameter | Type | Default | |
query |
string |
required |
Topic to recall. |
as_of_date |
string (ISO) |
null |
Only memories on or before this date. Omit for "most recent, period." |
memory_type |
string |
null |
Restrict to one type. |
limit |
int |
5 |
Max results, newest first. |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsTopic matches sorted strictly by creation date, newest first.
Filtered listing with no query — browse and audit, not relevance.
get_memories(ctx, user_id=None, memory_type=None, source=None, date_from=None, date_to=None, limit=20)
When to use"Show me every coding rule," "everything captured from ChatGPT last week." Filter by type, source, and date range.
| Parameter | Type | Default | |
memory_type |
string |
null |
One of the seven types. |
source |
string |
null |
claude · chatgpt · gemini · copilot · grok · perplexity · mcp (aliases accepted). |
date_from |
string |
null |
Start date — many formats accepted, ISO safest. |
date_to |
string |
null |
End date. |
limit |
int |
20 (max 50) |
Max results. |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsMatching memories newest-first, or an "invalid source" message listing valid values.
The always-load set — memories you pinned in the dashboard as permanent context.
get_pinned(ctx, user_id=None)
When to useWhen you want only the handful of rules that should be in context regardless of task. Keep the pinned set short or it stops meaning anything.
| Parameter | Type | Default | |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsYour pinned memories, or a prompt to pin some at conxt.dev.
Writing
After something is decided — record it so it compounds.
Save a durable fact — a decision, preference, or rule — to your personal graph.
add_memory(ctx, content, memory_type="decision", title=None, tags=None, agent_id=None, session_id=None, user_id=None)
When to useAfter a task produces something worth remembering. One call per distinct fact, so dedup and reinforcement work per record. Routed through type-aware dedup: the same decision saved twice reinforces instead of duplicating.
| Parameter | Type | Default | |
content |
string |
required |
The full explanation. Do NOT bury a title, tags, or confidence in here — each has its own parameter, and doing so pollutes the dedup embedding. |
memory_type |
string |
"decision" |
One of the seven types. |
title |
string |
null |
Short imperative summary, under 120 chars. Stored as the memory's name. |
tags |
string[] |
null |
Up to 10 short tags. |
agent_id |
string |
null |
Your agent name (cursor, codex, claude-code…). Drives the dashboard's attribution badges — pass it consistently. |
session_id |
string |
null |
Groups memories from one working session. |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsConfirmation with scope, type, and a snippet. Note: confidence is not settable over MCP — all writes store at 0.9.
Save a memory to a shared team workspace, visible to every member.
add_team_memory(ctx, team_id, content, memory_type="decision", title=None, tags=None, agent_id=None, session_id=None, user_id=None)
When to useWhen a decision generalizes beyond you and your teammates' agents should see it. The bar is higher than add_memory — this is what colleagues rely on.
| Parameter | Type | Default | |
team_id |
string |
required |
Target team (get it from list_my_teams). |
content |
string |
required |
Full explanation — same no-flattening rule as add_memory. |
memory_type |
string |
"decision" |
One of the seven types. |
title |
string |
null |
Short imperative summary, under 120 chars. |
tags |
string[] |
null |
Up to 10 short tags. |
agent_id |
string |
null |
Your agent name — drives attribution badges. |
session_id |
string |
null |
Groups a working session. |
user_id |
string |
auto |
Resolved from the API key. |
ReturnsConfirmation showing the verified client and self-reported agent. Requires a real credential — an API key or Supabase session; a bare user_id is refused.
Revise an existing memory in place.
update_memory(ctx, memory_id, content, title=None, tags=None, user_id=None)
When to useTo correct or sharpen a memory. title and tags overwrite only when supplied. Note it repairs the record, not the embedding — materially changed text is better archived and re-added.
| Parameter | Type | Default | |
memory_id |
string |
required |
The memory to revise. |
content |
string |
required |
Replacement text. |
title |
string |
null |
New title — omit to keep the existing one. |
tags |
string[] |
null |
New tags — omit to keep existing. |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsConfirmation of the update, with an incremented version.
Retract a memory (soft delete — archived, recoverable).
delete_memory(ctx, memory_id, user_id=None)
When to useWhen something is wrong or shouldn't have been stored. You must own the memory, or be a member of its team.
| Parameter | Type | Default | |
memory_id |
string |
required |
The memory to retract. |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsConfirmation. The record is archived, not destroyed, and can be recovered.
Teams & agents
Shared workspaces and attribution.
List the team workspaces you belong to, with their IDs and your role.
list_my_teams(ctx, user_id=None)
When to useUsually the step before a team read or write — it's where team_id comes from.
| Parameter | Type | Default | |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsEach team with its name, your role (owner/member), and its team_id.
Browse a team's approved shared memories by type. The team analogue of get_memories.
get_team_memories(ctx, team_id, memory_type=None, limit=20, user_id=None)
When to useTo read what a team has agreed on. You must be a member; only approved, non-archived team memories are returned.
| Parameter | Type | Default | |
team_id |
string |
required |
The team to read. |
memory_type |
string |
null |
Restrict to one type. |
limit |
int |
20 (max 50) |
Max results. |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsApproved team memories newest-first, or a not-a-member message.
List memories written by agents — filterable to one agent or one session.
list_agent_memories(ctx, agent_id=None, session_id=None, limit=20, user_id=None)
When to useAttribution and audit: "what has Cursor been saving," or "everything from session run-0705." Only returns memories whose writer is an agent.
| Parameter | Type | Default | |
agent_id |
string |
null |
Filter to one agent's writes. |
session_id |
string |
null |
Filter to one session. |
limit |
int |
20 (max 50) |
Max results. |
user_id |
string |
auto |
Resolved from the API key. |
ctx |
Context |
injected |
Supplied by the runtime. |
ReturnsAgent-written memories matching the filter, newest-first.