Cconxt.docs
Reference · MCP server

Fourteen tools, one memory graph.

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.

The framework in one rule

Open with get_context. Close with add_memory. Everything else is a sharper instrument for a narrower moment.

The failure mode isn't picking the wrong tool — it's agents that read nothing at the start and write nothing at the end, so the graph never compounds.
Connect · mcp.jsonremote
{
  "conxt": {
    "url": "https://mcp.conxt.dev/mcp/",
    "headers": { "Authorization": "Bearer cnxt_your_key" }
  }
}
memory typesdecisionpreferenceentityopen_questioncoding_ruletool_choiceworkflow

Reading

Before the agent acts — pull the context that's relevant now.

read

get_context

#

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.
ParameterTypeDefault
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.
read

resolve_context

#

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.
ParameterTypeDefault
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.
read

search_memory

#

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.
ParameterTypeDefault
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.
read

search_decisions

#

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.
ParameterTypeDefault
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.
read

recall_as_of

#

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.
ParameterTypeDefault
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.
read

get_memories

#

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.
ParameterTypeDefault
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.
read

get_pinned

#

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.
ParameterTypeDefault
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.

write

add_memory

#

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.
ParameterTypeDefault
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.
write

add_team_memory

#

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.
ParameterTypeDefault
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.
write

update_memory

#

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.
ParameterTypeDefault
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.
write

delete_memory

#

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.
ParameterTypeDefault
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.

read

list_my_teams

#

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.
ParameterTypeDefault
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.
read

get_team_memories

#

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.
ParameterTypeDefault
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.
read

list_agent_memories

#

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.
ParameterTypeDefault
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.
Parameters shown greyed with a teal default (injected, auto) are supplied by the runtime or resolved from your API key — you never pass them by hand. user_id is resolved from the key on every call; pass it only to act on another identity you're authorized for. Confidence is not settable over MCP; all writes store at 0.9.