MCP Tools Reference
Complete reference for the 3 intent-based facade tools available to AI agents.
Overview
Epitome exposes 3 intent-based facade tools through the Model Context Protocol (MCP). These tools internally delegate to the appropriate service-layer functions, keeping the tool surface small and easy for agents to reason about. Any MCP-compatible AI agent can use them to retrieve context, save knowledge, and manage memory quality. All tools require authentication and are subject to the consent system.
Transport & Authentication
The MCP server uses Streamable HTTP transport for the hosted service. Agents authenticate using their MCP URL token, which maps to an API key and user account. The server validates each request and checks the agent's consent grants before executing any tool.
Contract is strict: only recall, memorize, and review are accepted tool names. Legacy aliases and legacy REST routes (/mcp/tools, /mcp/call/:toolName) are disabled by default.
If an agent calls a tool for a resource it has not been granted consent to access, the server returns a consent-required error with instructions for the user to grant permission via the dashboard.
// JSON-RPC request envelope (tools/call)
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "recall",
"arguments": {}
}
}recall
recall
Retrieve information from all data sources. Call with no arguments at conversation start to load context, or with a topic for federated search across all sources.
| Name | Type | Required | Description |
|---|---|---|---|
| topic | string | No | What to search for. Empty = general context load. |
| budget | string | No | "small" | "medium" | "deep" — retrieval depth. |
| mode | string | No | "context" | "knowledge" | "memory" | "graph" | "table" — explicit routing to a specific data source. |
| memory | object | No | For mode "memory" — { collection, query, minSimilarity?, limit? } |
| graph | object | No | For mode "graph" — { queryType, entityId?, relation?, maxHops?, pattern? } |
| table | string | object | No | For mode "table" — string shorthand ("meals") or object { table?, filters?, sql?, limit?, offset? } |
| tableName | string | No | For mode "table" — top-level shorthand equivalent to table.table. |
| sql | string | No | For mode "table" — top-level shorthand SQL query. |
| filters | object | No | For mode "table" — top-level shorthand filters. |
Default behavior (no mode): When called with no topic, loads the user's full context (profile, tables, collections, entities, hints). When called with a topic, performs a federated search across all sources with fusion ranking.
Advanced modes: mode:"memory" routes to collection-specific vector search, mode:"graph" routes to graph traversal or pattern matching, and mode:"table" routes to sandboxed SQL or filter-based table queries.
// 1. Empty context load (call at conversation start)
{}
// 2. Federated search with topic
{"topic": "food preferences"}
// 3. mode:"memory" — vector search in a specific collection
{
"mode": "memory",
"memory": {
"collection": "journal",
"query": "coffee"
}
}
// 4. mode:"graph" — pattern query
{
"mode": "graph",
"graph": {
"queryType": "pattern",
"pattern": "what food do I like?"
}
}
// 5. mode:"table" — sandboxed SQL query
{
"mode": "table",
"table": "meals",
"sql": "SELECT * FROM meals WHERE calories > 500 LIMIT 10"
}memorize
memorize
Save or delete a fact, experience, or event. Routes to the appropriate storage layer based on category, storage mode, and action.
| Name | Type | Required | Description |
|---|---|---|---|
| text | string | Yes | The fact/experience to save or forget. |
| category | string | No | Organizer — "books", "meals", "profile", etc. |
| data | object | No | Structured fields (e.g., {title: "Dune", rating: 5}). |
| action | string | No | "save" (default) or "delete". |
| storage | string | No | "record" (default) or "memory" — "memory" = vector-only save. |
| collection | string | No | For storage:"memory" — vector collection name. |
| metadata | object | No | For storage:"memory" — optional metadata. |
Routing order:
- Validate text (empty text returns INVALID_ARGS)
action:"delete"— semantic search + soft-delete matching vectorsstorage:"memory"— vector-only savecategory:"profile"— deep-merge profile update- Default — addRecord (dual-writes table row + auto-vectorized memory)
Side effects: Auto-creates tables and columns for new data, triggers async entity extraction, and checks for contradictions after save.
// 1. Structured record (dual-writes table row + vector memory)
{
"text": "Finished reading Dune",
"category": "books",
"data": {
"title": "Dune",
"rating": 5
}
}
// 2. Vector-only journal entry
{
"text": "Had a wonderful sunset walk today",
"storage": "memory",
"collection": "journal"
}
// 3. Profile update (deep-merge)
{
"text": "I am vegetarian",
"category": "profile",
"data": {
"dietary": ["vegetarian"]
}
}review
review
Check for or resolve memory contradictions. Use to list pending contradictions or resolve them by confirming, rejecting, or keeping both entries.
| Name | Type | Required | Description |
|---|---|---|---|
| action | string | Yes | "list" or "resolve". |
| metaId | number | No | For resolve — ID of the memory_meta entry to resolve. |
| resolution | string | No | "confirm" | "reject" | "keep_both". |
// 1. List pending contradictions
{"action": "list"}
// 2. Resolve a specific contradiction
{
"action": "resolve",
"metaId": 123,
"resolution": "confirm"
}