MCP server
SPM exposes account-scoped memory as a stateless streamable HTTP MCP server:
https://api.spmos.ai/mcp
Authorization: Bearer spm_live_...
The production server name is SPM. Tool names are exactly remember, recall, read, delete, and status; clients do not need product-version aliases.
Tools
| Tool | Important parameters | Result |
|---|---|---|
remember |
text, idempotency_key, optional source_id and topic |
Queues one source idempotently |
status |
optional source_ids[] |
Reports readiness without reading full records |
recall |
question, optional top_k (default 20, max 50) |
Best-evidence answer plus bounded evidence refs |
read |
read_tokens[] |
Resolves selected evidence to verified source text |
delete |
source_id, idempotency_key |
Deletes a source and derived candidates idempotently |
Scopes: remember requires memory:write; recall, read, and status require memory:read; delete requires memory:delete.
Recall and read contract
top_k is one global ceiling across extracted records and selected source spans. The returned answer renders only the highest-priority admitted evidence item; SPM does not concatenate every match into it.
evidence_refs can retain up to top_k broader items for provenance or multiple premises. Each ref contains a short-lived read_token:
- source-span evidence resolves to the exact selected span;
- extracted-record evidence resolves to its verified backing source.
Pass tokens to read verbatim as a JSON array. Do not decode and re-serialize them.
When no evidence qualifies, recall returns an explicit empty/refused outcome with a machine-readable gate reason. It does not invent an answer.
Silent continuity policy
SPM's MCP instructions ask capable agents to use memory without narrating the lookup:
- If an earlier decision, constraint, progress update, or rationale is missing from active context, call
recallbefore asking the user to repeat it. - Call
readwhen the exact source text or additional premises are needed. - Continue the task using the result; do not announce that memory was searched or restored.
- Do not repeat an empty recall in the same logical turn.
Current files, Git state, configuration, and runtime observations remain authoritative when they may have changed since a memory was written. Tool instructions guide the client agent; SPM cannot force every third-party MCP runtime to follow them.
Codex
[mcp_servers.spm]
url = "https://api.spmos.ai/mcp"
headers = { Authorization = "Bearer spm_live_..." }
Prefer an environment-backed secret mechanism when your client supports one. A 401 invalid_token means the server was reached but the SPM key is missing, malformed, expired, revoked, or belongs to another environment.
Claude Code and generic MCP JSON
{
"mcpServers": {
"spm": {
"url": "https://api.spmos.ai/mcp",
"headers": {
"Authorization": "Bearer spm_live_..."
}
}
}
}
Restart the client after adding a server so it reloads the tool catalog.
Recommended round trip
rememberwith a stable idempotency key and, when supplied, a source ID that has not already been deleted in the current memory generation.- Poll
statusuntil the source is ready. recallusing a natural-language question.- Use
readwhen the agent needs exact provenance or additional premises. deletetest data when the workflow is complete.
The MCP service is memory-only. It does not proxy your model request and does not require an upstream provider key.
After targeted deletion, reusing the same source_id in the same memory generation fails closed with 409 SOURCE_ID_PURGED. Advancing to a new memory generation permits that ID again. Use a new source ID for genuinely new content instead of trying to resurrect a deleted identity.
Health
/health, /livez, and /readyz are unauthenticated probes. The MCP endpoint itself requires authentication.