feat(mcp): add get_profile and use snake_case for public tools - #1665
feat(mcp): add get_profile and use snake_case for public tools#1665Dhravya wants to merge 3 commits into
Conversation
search_memory now returns matching memories only. Models that need stable or recent profile context should call get_profile after search.
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
|
Claude finished @Dhravya's task in 1m 30s —— View job Reviewing PR
SummaryReviewed the PR for bugs, security issues, and logic errors. The implementation is clean — no issues found. Key observations:
Score: 10/10 — Ready to ship. |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
supermemory-mcp | 7616c85 | Sep 12 2026, 11:36 PM |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
supermemory-app | 7616c85 | Commit Preview URL Branch Preview URL |
Sep 12 2026, 11:37 PM |
There was a problem hiding this comment.
Overview: Splits profile retrieval from search_memory into a dedicated get_profile tool to reduce token usage when profile context isn't needed.
Issues found: None — this looks good to ship.
The implementation is clean:
get_profilecorrectly reuses the existinggetProfile()client method that's already called without a query inresources/profile.tsandprompts/context.ts- The
searchMemoryOutputSchemakeepsprofileas optional for backward-compatible output validation - Tests cover both the happy path and empty profile edge case
- E2e tests, discovery tests, and docs are all updated consistently
- Error handling follows the existing pattern with try/catch +
deps.errorResult()
Score: 10/10
Claude and Codex prefix the server name, so search_memory became a long snake pile. Public tools are now searchMemory, getProfile, and addMemory to match listDocuments and whoAmI. Widget tools stay kebab-case.
There was a problem hiding this comment.
Overview: Splits profile retrieval from searchMemory into a dedicated getProfile tool to reduce token usage when profile context isn't needed.
Issues found: None — this looks good to ship.
The implementation is clean:
getProfilecorrectly reuses the existinggetProfile()client method (called without a query) that's already used inresources/profile.tsandprompts/context.ts- Tool renames (
search_memory→searchMemory,add_memory→addMemory) are breaking changes but appear intentional per PR description to align with Cursor/Hermes naming - The
searchMemoryOutputSchemakeepsprofileas optional for backward-compatible output validation - Tests cover both the happy path and empty profile edge case
- E2e tests, discovery tests, and docs are all updated consistently
- Error handling follows the existing pattern with try/catch +
deps.errorResult()
Score: 10/10
Claude and Codex prefix the server name, so camelCase still reads awkwardly. Public tools are now search_memory, get_profile, add_memory, list_documents, get_document, list_memories, list_spaces, and who_am_i. Widget tools stay kebab-case.
There was a problem hiding this comment.
Overview: Splits profile retrieval from search_memory into a dedicated get_profile tool to reduce token usage when profile context isn't needed.
Issues found: None — this looks good to ship.
The implementation is clean:
get_profilecorrectly reuses the existinggetProfile()client method (called without a query) that's already used inresources/profile.tsandprompts/context.ts- Tool renames to snake_case (
listSpaces→list_spaces,whoAmI→who_am_i, etc.) are breaking changes but appear intentional per the commit history - The
searchMemoryOutputSchemakeepsprofileas optional for backward-compatible output validation - Tests cover both the happy path and empty profile edge case
- E2e tests, discovery tests, and docs are all updated consistently
- Error handling follows the existing pattern with try/catch +
deps.errorResult()
Minor note: The PR description mentions camelCase (searchMemory, getProfile) but the final code uses snake_case (search_memory, get_profile). The commit history shows this was intentional (commit 37ce918 → 7616c85), so the description is just outdated.
Score: 10/10
search_memorywas fetching and dumping the full space profile on every recall. That burns tokens even when the model only needed matching memories.This splits the two:
search_memoryreturns matching memories only.includeProfileis gone.get_profilereturns stable and recent profile facts for the active (or named) space.get_profileif it still needs who-the-user-is / preferences / recent context.Public model tools are snake_case so Claude/Codex server prefixes stay readable:
search_memory,get_profile,add_memory,list_documents,get_document,list_memories,list_spaces,who_am_iWidget tools stay kebab-case (
select-space,guided-save).who_am_istays account identity and access. Thesupermemory://profileresource is unchanged.