Skip to content

MCP Tools Reference

Exocortex exposes its capabilities to LLM clients through the Model Context Protocol (MCP). Run the server with:

Terminal window
exocortex serve # stdio transport, default for Claude Desktop
exocortex serve --http # HTTP/SSE, default for browser clients

Once connected, the client sees one tool per registered McpTool subclass. The table below is the built-in tool set. Plugins add their own — call tools/list from your client to see the full inventory of a running server.

Built-in tools

Source of truth: exocortex/mcp/tools/*.py. The “Class” column is the file/class you’d grep for if you want to read the implementation.

Knowledge tools

Tool nameClassPurposeLLM call?
search_thoughtsSearchThoughtspgvector cosine top-K over thoughtsembed only
expand_nodeExpandNodeApache AGE Cypher traversal, 1–2 hops, filterable by edge typeno
synthesizeSynthesizeFetchFetch the latest active row from syntheses for a (perspective_type, perspective_key) pairno
find_action_itemsFindActionItemsParser over meeting markdown — open [ ] items, filterable by owner / client / due dateno
find_contradictionsFindContradictionsUnresolved contradicts edges in the graphno
askAskFull GraphRAG: vector retrieval + graph traversal + LLM answer with inline citationsyes
gap_analysisGapAnalysisDetects four gap types in the graph: dense clusters with no synthesis, orphan thoughts >30 days old, unresolved contradicts edges, and mentions_* edges with no addresses_problem follow-throughno

FRP workflow tools

Drive the Futures Reading Protocol lifecycle from an MCP client. These read and write content_queue, frp_sessions, and thoughts; none call the LLM directly (the prompt LLM is the client itself).

Tool nameClassPurpose
query_content_queueQueryContentQueueScore-sorted reading queue, joined with raw_sources
create_frp_sessionCreateFrpSessionOpen a new FRP session anchor — (frame ∈ A/B/C, level ∈ 1/2/3)
append_session_thoughtAppendSessionThoughtAdd a step thought + auto session_contains edge (+ optional entity edges)
complete_sessionCompleteSessionRecord 1–5 resonance, schedule revisit_due = now + 48h, mark queue item used
enqueue_generated_frp_storyEnqueueGeneratedFrpStoryPersist a generated story as a curated generated-frp queue item — UPSERTs raw_sources + content_queue + scored thoughts row + acquired_from edge in one call. Idempotent on SHA256(body)[:16] URI
add_revisitAddRevisitAppend a frp_revisit thought + emit a revisits edge, optional materializes_as edge

Promotion tools

Wikilink-aware bridges that move structured items between the graph and Markdown surfaces (vault TODO files).

Tool nameClassPurpose
promote_action_itemsPromoteActionItemsPromote selected action items into wiki/work/TODO/*.md
unpromoteUnpromoteReverse a promotion — remove the wiki block, leave the graph row
list_promotedListPromotedShow which action items are currently surfaced in TODO files

Live sections

Inject scheduled or event-driven Markdown blocks into wiki pages. See the F16-live-sections-design.md spec for the event model.

Tool nameClassPurpose
list_live_sectionsListLiveSectionsInventory of registered SectionGenerator instances + their bindings
trigger_live_sectionTriggerLiveSectionForce-render a section now, regardless of its schedule or event binding

Calling a tool

From an MCP client, the call is whatever your client wraps tools/call as. From the CLI:

Terminal window
exocortex query "ask" --args '{"question": "what shipped this quarter?"}'

--args is JSON matching the tool’s input schema. The schema is served alongside the tool via tools/list.

Adding your own

Plugins register new tools through the McpTool extension point. See Writing a plugin → Register an MCP tool for the contract (.name, .schema, handler(args) -> result) and a worked example.

Verification

Terminal window
exocortex query --diag plugins

The mcp_tools bucket lists every registered tool name. Tools from plugins appear alongside the built-ins; last-write-wins per .name, so plugin tools can shadow built-ins if you want them to.