{"name":"StudioMeyer Memory REST API","version":"3.45.0","apiVersion":"3.0.0","product":{"schemaVersion":1,"name":"StudioMeyer Memory","serverVersion":"3.45.0","apiVersion":"3.0.0","currency":"EUR","billingInterval":"month","hosting":{"provider":"Hetzner","city":"Nuremberg","country":"Germany","region":"EU","database":"Self-managed PostgreSQL","label":"Hetzner Nuremberg (Germany, EU)"},"dataHandling":{"isolation":"Tenant-scoped application queries","modelProcessing":"AI features may send relevant content to configured model providers; EU storage does not imply EU-only model processing.","secretScanning":"Secret scanning detects supported sensitive patterns, not general PII."},"plans":{"free":{"name":"Free","monthlyEur":0,"limits":{"maxLearnings":1000,"maxEntities":100,"maxObservations":500,"maxApiCallsPerDay":5000,"maxApiKeys":1,"agentScoping":false,"rerankPerDay":0,"importLimit":1}},"pro":{"name":"Pro","monthlyEur":9,"limits":{"maxLearnings":25000,"maxEntities":1000,"maxObservations":10000,"maxApiCallsPerDay":50000,"maxApiKeys":3,"agentScoping":true,"rerankPerDay":100,"importLimit":0}},"team":{"name":"Team","monthlyEur":19,"limits":{"maxLearnings":-1,"maxEntities":-1,"maxObservations":-1,"maxApiCallsPerDay":-1,"maxApiKeys":20,"agentScoping":true,"rerankPerDay":-1,"importLimit":0}}},"limitSemantics":{"minusOne":"unlimited","importLimitZero":"unlimited","dailyApiCalls":"Daily abuse-prevention cap, separate from storage limits and request bursts","appsumo":"Lifetime license tiers have separate limits"},"limitEnforcement":{"maxApiCallsPerDay":{"status":"best-effort","mcp":"Checked before every tools/call","rest":["POST /api/search","POST /api/learn","POST /api/decide","POST /api/entity","POST /api/import","POST /api/backfill"],"restExemptions":["GET /api/account","POST /api/checkout","GET /api/export"],"onCheckError":"allow","precision":"Asynchronous usage counting and non-atomic pre-checks; not a billing ledger"},"storage":{"status":"best-effort","limits":["maxLearnings","maxEntities","maxObservations"],"imports":"Stock quotas checked per inserted record","precision":"Concurrent writes may exceed a pre-checked cap"},"importLimit":{"status":"configuration-only"},"agentScoping":{"status":"configuration-only"},"rerankPerDay":{"status":"configuration-only"}},"burstLimit":{"defaultRequestsPerMinute":60,"scope":"tenant","counts":"HTTP requests to the MCP endpoint","configurable":true,"environmentVariable":"NEX_TOOL_BURST_PER_MIN"},"tools":{"count":56,"names":["nex_agent_report","nex_chronicle","nex_communities","nex_consolidate","nex_context","nex_contradictions","nex_decay","nex_decide","nex_deduplicate","nex_delegate","nex_entity_create","nex_entity_deep_search","nex_entity_delete","nex_entity_graph","nex_entity_history","nex_entity_invalidate","nex_entity_merge","nex_entity_observe","nex_entity_open","nex_entity_relate","nex_entity_search","nex_evolve","nex_evolve_status","nex_export","nex_feedback","nex_flush","nex_goal","nex_graph_view","nex_guide","nex_health","nex_import","nex_improve","nex_insights","nex_learn","nex_learn_archive","nex_learn_link","nex_learn_search","nex_learn_stats","nex_learn_update","nex_link","nex_proactive","nex_profile","nex_recall","nex_recall_timeline","nex_reflect","nex_registry","nex_rerank","nex_search","nex_session_end","nex_session_replay","nex_session_start","nex_skill","nex_sm_bridge","nex_sprint","nex_summarize","nex_synthesize"]},"connection":{"protocol":"MCP","transport":"Streamable HTTP","endpoint":"https://memory.studiomeyer.io/mcp","authentication":["Bearer API key","OAuth 2.1"],"documentation":"https://github.com/studiomeyer-io/studiomeyer-memory"}},"auth":"Bearer <api-key> (from /api/signup)","endpoints":{"POST /api/signup":"Create account + API key (no auth)","POST /api/learn":"Store a learning (category, content, agentId?, tags?)","POST /api/search":"Search all knowledge (query, agentId?, types?, limit?)","POST /api/decide":"Log a decision (title, decision, reasoning)","POST /api/entity":"Create entity + observations (name, entityType, observations?)","POST /api/import":"Import ChatGPT/Claude/Gemini history (action, data)","POST /api/backfill":"Backfill missing embeddings (call after bulk ingest)","GET /api/export":"Read a bounded Markdown memory snapshot (summarized, truncated, no pagination)","GET /api/account":"Account info (email, plan, paid, limits)","POST /api/checkout":"Create Stripe checkout session","GET /api/appsumo/verify/:code":"Verify AppSumo license code (no auth)","POST /api/appsumo/redeem":"Redeem AppSumo license code (no auth, creates/upgrades account)","POST /api/appsumo/webhook":"AppSumo webhook (refund/enhance/reduce, HMAC verified)"}}