MCP Tools Reference — Epitome Docs

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.

recallmemorizereview

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

NameTypeRequiredDescription
topicstringNoWhat to search for. Empty = general context load.
budgetstringNo"small" | "medium" | "deep" — retrieval depth.
modestringNo"context" | "knowledge" | "memory" | "graph" | "table" — explicit routing to a specific data source.
memoryobjectNoFor mode "memory" — { collection, query, minSimilarity?, limit? }
graphobjectNoFor mode "graph" — { queryType, entityId?, relation?, maxHops?, pattern? }
tablestring | objectNoFor mode "table" — string shorthand ("meals") or object { table?, filters?, sql?, limit?, offset? }
tableNamestringNoFor mode "table" — top-level shorthand equivalent to table.table.
sqlstringNoFor mode "table" — top-level shorthand SQL query.
filtersobjectNoFor 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.

json
// 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.

NameTypeRequiredDescription
textstringYesThe fact/experience to save or forget.
categorystringNoOrganizer — "books", "meals", "profile", etc.
dataobjectNoStructured fields (e.g., {title: "Dune", rating: 5}).
actionstringNo"save" (default) or "delete".
storagestringNo"record" (default) or "memory" — "memory" = vector-only save.
collectionstringNoFor storage:"memory" — vector collection name.
metadataobjectNoFor storage:"memory" — optional metadata.

Routing order:

  1. Validate text (empty text returns INVALID_ARGS)
  2. action:"delete" — semantic search + soft-delete matching vectors
  3. storage:"memory" — vector-only save
  4. category:"profile" — deep-merge profile update
  5. 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.

json
// 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.

NameTypeRequiredDescription
actionstringYes"list" or "resolve".
metaIdnumberNoFor resolve — ID of the memory_meta entry to resolve.
resolutionstringNo"confirm" | "reject" | "keep_both".
json
// 1. List pending contradictions
{"action": "list"}

// 2. Resolve a specific contradiction
{
  "action": "resolve",
  "metaId": 123,
  "resolution": "confirm"
}