Engrammic
Reference

Build with Engrammic

Integrate memory into your own agents

Endpoint

Beta MCP endpoint: https://beta.engrammic.ai/mcp/

Authentication

Engrammic uses OAuth. Your agent triggers a browser-based flow:

  1. Agent calls the MCP endpoint without a token
  2. Server returns an OAuth URL
  3. User opens URL in browser, authenticates
  4. Agent receives token via callback
  5. Subsequent calls include the token

Token refresh is automatic. If a token expires mid-session, the server returns AUTH_REQUIRED and you re-trigger the flow.

MCP Client Setup

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://beta.engrammic.ai/mcp/")
);

const client = new Client({
  name: "my-agent",
  version: "1.0.0"
});

await client.connect(transport);

// Store an observation
await client.callTool("remember", {
  content: "User prefers dark mode",
  context: "stated in settings discussion"
});

// Retrieve knowledge
const result = await client.callTool("recall", {
  query: "user preferences"
});
from mcp import Client
from mcp.client.streamable_http import StreamableHTTPClientTransport
import asyncio

async def main():
    transport = StreamableHTTPClientTransport("https://beta.engrammic.ai/mcp/")
    
    client = Client("my-agent", "1.0.0")
    await client.connect(transport)
    
    # Store an observation
    await client.call_tool("remember", {
        "content": "User prefers dark mode",
        "context": "stated in settings discussion"
    })
    
    # Retrieve knowledge
    result = await client.call_tool("recall", {
        "query": "user preferences"
    })

asyncio.run(main())

Core Operations

Store an observation:

{"tool": "remember", "args": {"content": "...", "context": "..."}}

Store a claim with evidence:

{"tool": "learn", "args": {"claim": "...", "evidence": [{"type": "direct_statement", "content": "..."}]}}

Retrieve knowledge:

{"tool": "recall", "args": {"query": "..."}}

Trace provenance:

{"tool": "trace", "args": {"query": "why do you believe X?"}}

Error Handling

Errors return:

{"error": {"code": "ERROR_CODE", "message": "Human-readable message"}}
CodeMeaningAction
AUTH_REQUIREDToken missing or expiredRe-trigger OAuth flow
INVALID_TOKENToken rejectedRe-authenticate
SILO_NOT_FOUNDSilo doesn't existCheck silo_id config
NODE_NOT_FOUNDReferenced node missingNode was deleted or ID is wrong
RATE_LIMITEDToo many requestsBack off, retry with exponential backoff
VALIDATION_ERRORBad parametersCheck required fields

Rate Limits

Beta limits (subject to change):

  • 100 requests per minute per silo
  • 10,000 nodes per silo

Coming Soon

Native TypeScript and Python SDKs are in development. For now, use the MCP SDK directly as shown above.

On this page