Summary
pmem CLI covers 7 of 13 MCP tools, ~65% of HTTP API routes, and ~50% of SDK Memory public methods. The main gaps are user profiles (none), batch operations, import/export, memory quality metrics, agent config, and session timeline queries.
Coverage matrix
memory commands (7/7 [x])
| Operation |
CLI |
MCP |
HTTP API |
SDK |
| add |
pmem memory add |
add_memory |
POST /memories |
Memory.add() |
| search |
pmem memory search |
search_memories |
POST /memories/search |
Memory.search() |
| get |
pmem memory get |
get_memory_by_id |
GET /memories/{id} |
Memory.get() |
| update |
pmem memory update |
update_memory |
PUT /memories/{id} |
Memory.update() |
| delete |
pmem memory delete |
delete_memory |
DELETE /memories/{id} |
Memory.delete() |
| list |
pmem memory list |
list_memories |
GET /memories |
Memory.get_all() |
| delete-all |
pmem memory delete-all |
delete_all_memories |
DELETE /memories |
Memory.delete_all() |
profile commands (0/6 [ ])
| Operation |
CLI |
MCP |
HTTP API |
| add with profile |
-- |
add_memory_with_profile |
POST /users/{id}/profile |
| search with profile |
-- |
search_memories_with_profile |
-- |
| get profile |
-- |
get_user_profile |
GET /users/{id}/profile |
| list profiles |
-- |
list_user_profiles |
GET /users/profiles |
| delete profile |
-- |
delete_user_profile |
DELETE /users/{id}/profile |
| delete memory with profile |
-- |
delete_memory_with_profile |
-- |
batch operations (0/3 [ ])
| Operation |
CLI |
HTTP API |
| batch add |
-- |
POST /memories/batch |
| batch update |
-- |
PUT /memories/batch |
| batch delete |
-- |
DELETE /memories/batch |
import/export (0/2 [ ])
| Operation |
CLI |
HTTP API |
SDK |
| import |
-- (restore is different) |
POST /memories/import |
Memory.import_memories() |
| export |
-- (backup is different) |
GET /memories/export |
Memory.export_memories() |
memory quality & optimize (0/2 [ ])
| Operation |
CLI |
HTTP API |
SDK |
| quality metrics |
-- |
GET /memories/quality |
-- |
| optimize (dedup) |
-- |
-- |
Memory.optimize() |
session timeline (0/3 [ ])
| Operation |
CLI |
HTTP API |
| timeline |
-- |
GET /memories/timeline |
| sessions |
-- |
GET /memories/sessions |
| session stats |
-- |
GET /memories/session-stats |
agent commands (0/4 [ ])
| Operation |
CLI |
HTTP API |
| get agent config |
-- |
GET /agents/{id}/config |
| set agent config |
-- |
POST /agents/{id}/config |
| agent memory search |
-- |
POST /agents/{id}/memories/search |
| agent stats |
-- |
GET /agents/{id}/stats |
advanced SDK features (0/3 [ ])
| Operation |
CLI |
SDK |
| migrate all sub-stores |
-- |
Memory.migrate_all_sub_stores() |
| source store CRUD |
-- |
get_source, link_memory_to_source, etc. |
| skill CRUD |
-- |
get_skill, update_skill_status, merge_skills |
status summary
| Category |
Covered |
Missing |
| memory CRUD |
7 |
0 |
| profile |
0 |
6 |
| batch |
0 |
3 |
| import/export |
0 |
2 |
| quality/optimize |
0 |
2 |
| session timeline |
0 |
3 |
| agent |
0 |
4 |
| advanced SDK |
0 |
3* |
| stats |
1 |
0 |
| config |
4 |
0 |
| manage |
4 |
0 |
| shell |
1 |
0 |
*advanced SDK features (source store, skills, migrate-all) are niche and likely not worth CLI exposure.
Root cause
CLIContext in src/powermem/cli/main.py only exposes a memory property (via create_memory()), with no user_memory, no HTTP client for batch/session/agent APIs. All consumer-surface functionality beyond Memory CRUD is invisible to CLI.
Prioritized implementation plan
P0: Profile support (user-visible gap)
Add user_memory lazy property to CLIContext, then:
pmem memory add --with-profile [--profile-type content|topics] [--native-language <lang>]
pmem memory search --add-profile
pmem profile get <user_id>
pmem profile list [--main-topic X] [--sub-topic Y]
pmem profile delete <user_id>
pmem profile extract <user_id>
P1: Batch + import/export
pmem memory add --batch <file.json> # POST /memories/batch
pmem memory import <file> # POST /memories/import
pmem memory export [--format json|csv] # GET /memories/export
P2: Quality + session timeline
pmem memory quality [--user-id X]
pmem memory timeline [--run-id X]
pmem sessions list [--user-id X]
P3 (defer): Agent commands
pmem agent config get <agent_id>
pmem agent config set <agent_id> ...
pmem agent search <query> --agent-id X
Parameter simplification (profile extraction)
UserMemory.add() takes 6 profile-specific parameters. For CLI single-turn use:
| Parameter |
CLI value |
Proposal |
--profile-type |
essential -- content vs topics |
expose |
--native-language |
useful for multi-language |
expose |
--custom-topics |
only with topics mode, high barrier |
defer |
--strict-mode |
only with custom_topics |
defer |
--include-roles |
CLI input is single text, no roles |
omit |
--exclude-roles |
same reason |
omit |
Related files
src/powermem/cli/main.py -- CLIContext class (root cause)
src/powermem/cli/commands/memory.py -- add/search/list commands
src/powermem/cli/commands/interactive.py -- shell _cmd_add, _cmd_search
src/powermem/user_memory/user_memory.py -- UserMemory methods
src/powermem/mcp/server.py -- 13 MCP tools (reference surface)
src/server/api/v1/memories.py -- HTTP memory routes
src/server/api/v1/users.py -- HTTP user/profile routes
src/server/api/v1/agents.py -- HTTP agent routes
src/powermem/core/memory.py -- SDK Memory class
Summary
pmemCLI covers 7 of 13 MCP tools, ~65% of HTTP API routes, and ~50% of SDKMemorypublic methods. The main gaps are user profiles (none), batch operations, import/export, memory quality metrics, agent config, and session timeline queries.Coverage matrix
memory commands (7/7 [x])
pmem memory addadd_memoryMemory.add()pmem memory searchsearch_memoriesMemory.search()pmem memory getget_memory_by_idMemory.get()pmem memory updateupdate_memoryMemory.update()pmem memory deletedelete_memoryMemory.delete()pmem memory listlist_memoriesMemory.get_all()pmem memory delete-alldelete_all_memoriesMemory.delete_all()profile commands (0/6 [ ])
add_memory_with_profilesearch_memories_with_profileget_user_profilelist_user_profilesdelete_user_profiledelete_memory_with_profilebatch operations (0/3 [ ])
import/export (0/2 [ ])
Memory.import_memories()Memory.export_memories()memory quality & optimize (0/2 [ ])
Memory.optimize()session timeline (0/3 [ ])
agent commands (0/4 [ ])
advanced SDK features (0/3 [ ])
Memory.migrate_all_sub_stores()get_source,link_memory_to_source, etc.get_skill,update_skill_status,merge_skillsstatus summary
*advanced SDK features (source store, skills, migrate-all) are niche and likely not worth CLI exposure.
Root cause
CLIContextinsrc/powermem/cli/main.pyonly exposes amemoryproperty (viacreate_memory()), with nouser_memory, no HTTP client for batch/session/agent APIs. All consumer-surface functionality beyondMemoryCRUD is invisible to CLI.Prioritized implementation plan
P0: Profile support (user-visible gap)
Add
user_memorylazy property toCLIContext, then:P1: Batch + import/export
P2: Quality + session timeline
P3 (defer): Agent commands
Parameter simplification (profile extraction)
UserMemory.add()takes 6 profile-specific parameters. For CLI single-turn use:--profile-type--native-language--custom-topics--strict-mode--include-roles--exclude-rolesRelated files
src/powermem/cli/main.py--CLIContextclass (root cause)src/powermem/cli/commands/memory.py-- add/search/list commandssrc/powermem/cli/commands/interactive.py-- shell_cmd_add,_cmd_searchsrc/powermem/user_memory/user_memory.py--UserMemorymethodssrc/powermem/mcp/server.py-- 13 MCP tools (reference surface)src/server/api/v1/memories.py-- HTTP memory routessrc/server/api/v1/users.py-- HTTP user/profile routessrc/server/api/v1/agents.py-- HTTP agent routessrc/powermem/core/memory.py-- SDKMemoryclass