2つの認証済みsurface
hosted MCP endpointとREST APIは異なる方法で認証します。接続するclientに合うほうを選び、public configurationや生成されたURLにcredentialを決して置かないでください。
- MCP — clientが対応していればOAuth、対応していなければAuthorization: Bearer ${XMEMO_KEY}を使います。
- REST data plane — X-API-Key: <your-assigned-api-key>(Authorization: Bearer <token>もserverが受け付けます)。POST /v1/agents/temporary-register は、その onboarding 条件および毎日の IP クォータのもとで匿名登録を許可します。
- Identity headerはattributionだけを示し、accessを付与しません。
Base URL
BASE_URLをdeployment originに設定します。hosted productはhttps://xmemo.devを使い、committed OpenAPI documentにはlocal development用のhttp://localhost:8000とexample serverのhttps://api.memory-os.example.comも宣言されています。REST data-plane callは/v1 pathを使います。
BASE_URL="${BASE_URL:-https://xmemo.dev}"
curl -sS "$BASE_URL/v1/recall?query=connection%20check&limit=1" \
-H "X-API-Key: $XMEMO_KEY"REST authentication header
ほとんどのREST requestにはAPI key headerを付けます。有効なcredentialがないrequestは、memoryをreadまたはwriteする前に拒否されます。POST /v1/agents/temporary-register は文書化された temporary registration 例外です。提示された無効な credentials は拒否されます。
X-API-Key: <your-assigned-api-key>MCP authentication
OAuth clientに必要なのはhosted server URLだけです。未検証の動的クライアントは memory および knowledge scope を明示的に要求する必要があります。検証済みクライアントは、scope が省略された場合でも既存のデフォルトを保持します。grant は承認された scope のみを提供します。direct および headless client は代わりに環境から token を読み取ります。
{
"servers": {
"XMemo": {
"type": "http",
"url": "https://xmemo.dev/mcp"
}
}
}Scopes
サーバーはcredentialのscopeと要求されたmemory spaceを個別に評価します。recall、search、context、list、project読み取りにはmemory:readを使い、書き込みと変更にはmemory:writeを使います。Knowledge操作には厳密にknowledge:readが必要であり、memory:readトークンは403で拒否されます。高度な直接tokenは、memory:update、memory:delete、memory:restore、memory:redact、memory:hard_deleteなどのより狭い権限を使用できます。レガシーRESTエイリアスread:memoriesとwrite:memoriesは互換性のための値として維持され、scopeがowner、team、またはtoken-spaceの認可を広げることはありません。
- 読み取り: memory:read。
- 書き込み: memory:write; token profileがサポートしている場合、mutation操作にはより狭い機能が必要になる場合があります。
- Knowledge: knowledge:read; knowledgeの検索と一覧表示に厳密に必要です(memory:readトークンは403を返します)。
- Project/teamアクセス: tokenのownerまたはバインドされたteamとlive roleも、要求されたscope/team_idを認可する必要があります。
- Attributionヘッダーとsourceフィールドは呼び出し元を識別するだけで、scopeではなくアクセスを許可しません。
Error schema
OpenAPI pathはrequest validation(422)にHTTPValidationErrorを宣言し、それ以外の多くのresponse schemaはuntypedのままです。既定のREST errorはdetail valueを持つJSON objectです。認識されたauthorization failureはRFC 9457-style application/problem+jsonとして要求できる場合もあります。machine handlingではproseの一致ではなくcode fieldを使ってください。
{
"detail": "invalid_token"
}
{
"type": "urn:xmemo:problem:invalid_token",
"title": "Invalid access token",
"status": 401,
"code": "invalid_token",
"detail": "The presented access token is missing, expired, revoked, or otherwise invalid."
}Rate limits
OpenAPIはrate-limit quotaを公開していません。runtimeが有効な場合は60秒のfixed windowを使います(development/local/test以外では既定で有効)。data-plane categoryは毎分600 request、memory writeは毎分180回のendpoint policy、memory search/recall/context readは毎分300回のendpoint policyです。OperatorはMEMORY_OS_RATE_LIMIT_* environment variableで値をoverrideできるため、clientにquotaをhard-codeしないでください。
- 429 response: { detail: Rate limit exceeded, category, policy, limit, window_seconds, retry_after_seconds }。
- 429 headers: Retry-After、X-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Reset、X-RateLimit-Policy。
- limiterが有効な場合、successful responseにもX-RateLimit-*のlimit、remaining、reset、policy headerが公開されます。