Pay-per-request encrypted memory APIs for autonomous AI agents using x402 payment protocol. Store, recall, and audit AI agent memory with AES-256 encryption. Built for USDC/Base payments and Japanese AI agent workflows.
Server exposes 4 tools with complete input schemas and descriptions. Naming follows verb_noun convention (memory_store, memory_recall, memory_delete, memory_audit). Descriptions are present but generic (10-50 chars), lacking context on WHEN to use each tool or dependencies between them. All parameters have types and descriptions, but descriptions are minimal (e.g., 'Agent identifier' for agent_id). Output is JSON-stringified, not structured. No error handling guidance, no pagination support despite audit tool returning up to 100 items. No tool annotations (readOnlyHint, destructiveHint). Schemas are valid JSON Schema but lack constraints (enums, patterns, min/max). Tool composition is reasonable (4 distinct operations), but memory_recall and memory_audit lack result limits in descriptions.
Get memory operation audit logs (0.05 USDC).
Delete memory and return its deletion proof (0.03 USDC).
Recall encrypted agent memory by query (0.03 USDC).
Store encrypted agent memory (0.05 USDC).
Descriptions are too brief (10-50 chars) and lack context. 'Store encrypted agent memory (0.05 USDC)' does not explain WHEN to use this vs memory_recall, what happens on duplicate agent_id+session_id, or what 'encrypted' means to the agent. LLMs cannot infer intent from cost alone.
Output is JSON-stringified plain text (json.dumps(result)), not structured. LLMs must parse the string to extract fields. Return structured objects with typed fields so agents can chain calls and extract data reliably.
No tool annotations. memory_delete is destructive but lacks destructiveHint=true. memory_recall and memory_audit are read-only but lack readOnlyHint=true. Agents cannot distinguish safe from unsafe operations without annotations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Parameter descriptions lack constraints. 'tags' is array of strings but no min/max length, no enum values. 'limit' defaults to 10 or 100 but no documented range (1-1000?). 'ttl' defaults to 86400 but no min/max. Agents cannot validate inputs without explicit constraints.
No error handling guidance. If payment fails (402 response), the tool returns {'error': 'Payment Required', 'detail': ...} as a dict, then json.dumps it. No guidance on retry, user action, or recovery. Agents cannot self-correct.