kit-memory-demo
Server Details
Continuity for agents: a live memory you can read and cite right now, outliving the context window.
- Status
- Healthy
- Uptime
- 100.0% over 81 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- PeterAtPondo/kit-demo-mcp
- GitHub Stars
- 0
- Server Listing
- Kit memory demo
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 8 tools
Most tools have clear distinct purposes, but wake already returns visible knowledge areas, overlapping with areas, and recall/remember both retrieve memories. The use of 'remember' for a read-by-id operation is semantically counterintuitive and could be mistaken for a write tool, though the descriptions clarify query-vs-id retrieval.
All tool names are lower-case and mostly single words, with one underscored compound (ranking_compare). However, they mix nouns (areas, presence, systems) and verbs (focus, recall, remember, wake) without a predictable verb_noun pattern, making the convention readable but inconsistent.
Eight tools is a reasonable size for a memory/archive demo, covering initialization, discovery, focus, search, read, presence, ranking, and external systems. A few tools are niche, but the set is not bloated or thin.
The surface lacks any tool to create, update, or delete memories, despite focus explicitly configuring where new memories are stored and referencing commit/note/handoff operations that are not exposed. Agents can search and read memories, but cannot persist new knowledge, which is a significant lifecycle gap.
Available Tools
8 toolsareasareasCInspect
List the knowledge areas in this Lady Whiskerdown.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_session_id | No | Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations contain only a title, so the description carries the full burden. "List" weakly implies a read, but there is no statement about read-only vs. mutating behavior, side effects, permissions, or whether kit_session_id is required in practice. For a tool with zero behavioral annotations this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb, with no filler or hedging. The only cost is that the flavor phrase "this Lady Whiskerdown" consumes words without adding information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a listing tool with no output schema, the description should at least indicate what an "area" looks like in the response or how results should be used. Instead the agent learns only that a list exists, leaving the return shape and downstream usage unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter kit_session_id is fully documented in the schema, including the subagent caveat. The description adds no meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List the knowledge areas" gives a clear verb+resource, but the qualifier "in this Lady Whiskerdown" is an opaque in-joke that never defines what the resource actually is or where it lives. Nothing distinguishes it from siblings like systems, focus, or recall, which plausibly return related catalog-like data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus the other seven sibling tools, no prerequisite or ordering hint (e.g. call before recall/focus), and no exclusions. The agent must guess its place in the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
focusfocusAInspect
Set this operator's write focus: the knowledge area new memories are stored under, and optionally the project being worked on. The wake card's chips call this; it is also callable directly. Holds until changed or idle past the TTL; explicit area/project args on commit/note/handoff still win.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Knowledge-area slug for new writes. Empty string or omitted clears to General (no area routing). | |
| project | No | Project slug for new writes. Empty string clears. | |
| kit_session_id | No | Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations beyond the title, the description carries the behavioral burden and discloses key stateful traits: the focus holds until changed or idle past the TTL, and explicit per-call arguments still win. It does not describe error behavior, permission requirements, or return values, but for a non-destructive focus-setting tool it provides meaningful operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with no wasted wording. It front-loads the core action and then adds persistence and override behavior in a logical order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple state-setting tool with full parameter schema coverage and no output schema, the description covers purpose, caller context, persistence, and precedence. It could additionally specify the TTL duration or failure behavior, but nothing critical for calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the parameters. The description adds useful meaning by explaining that area and project determine routing for new memories and that explicit arguments on commit/note/handoff take precedence, which is not expressed in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Set this operator's write focus: the knowledge area new memories are stored under, and optionally the project being worked on.' This clearly distinguishes the tool from storage/retrieval siblings like remember, recall, and areas by explaining that it configures routing for future writes rather than performing those writes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: wake card chips call it, and it is also directly callable. It also explains that the setting persists until changed or TTL expiry, and that explicit area/project arguments on commit/note/handoff override it. It lacks an explicit when-not-to-use statement, but the alternatives and precedence rules are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
presenceReading presenceCInspect
Read live Lady Whiskerdown facet presence within the requested window.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Delivery address of a live session, taken from this tool's own facets list. Sends instead of reading. The address is issued by the server and bound to the session that holds it; a session id is not an address and will not be accepted as one. | |
| scope | No | Which conversations to include. Defaults to work, which withholds personal threads. | |
| message | No | At most 400 characters, delivered in full in that session's next presence check or memory-read footer, quoted as another session's words. Sending means queued, not confirmed read. Nothing wakes or spawns; quiet sessions are refused and unread messages expire after 30 minutes. | |
| kit_session_id | No | Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID. | |
| window_minutes | No | Live window in minutes. Defaults to 30. Maximum 1440. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply only a title, so the description carries the full burden, and it under-delivers: it frames the tool purely as a read while the schema reveals a send mode with queueing semantics, 30-minute message expiry, refusal of quiet sessions, and no wake/spawn behavior. None of that side-effect profile appears in the description, so an agent reading only the prose would not anticipate the mutation path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence is admirably short and front-loaded with the verb, so it passes the conciseness test. However, the economy comes at the cost of the tool's second mode and any usage context, so the brevity reads as under-specification rather than precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter tool with a dual read/send behavior, no output schema, and no meaningful annotations, a single read-only sentence is not enough. Key facts an agent needs before calling — the send mode, session requirements, delivery guarantees — exist only in the schema, leaving the description incomplete relative to the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter descriptions are unusually thorough (address binding, scope defaults, 400-char limit, window default and max), so the schema does the heavy lifting. The description adds only the loose notion of a 'requested window', which maps to `window_minutes` but adds no format or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a verb+resource ('Read ... presence') within a time window, which is understandable in outline, but the phrasing 'Lady Whiskerdown facet presence' is domain jargon that doesn't tell an agent what data actually comes back, and it silently omits that the same call can send a message via the `to`/`message` parameters. It does not differentiate itself from siblings such as wake, recall, or focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus wake, recall, or focus, and no mention of prerequisites such as needing a session id from wake. The only positional hint is 'within the requested window', which is a scope statement, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ranking_comparekit_ranking_compareAInspect
Compare search ranking for a query with and without the recently learned boost. Returns every row whose rank or score changes, with baseline rank, boosted rank, position delta, score delta, sample source, boost window, and units.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Optional memory tier filter | |
| limit | No | Max candidate rows to compare, default 50 and capped by the API at 100 | |
| query | Yes | Search query to compare over the real caller-scoped memory sample | |
| project | No | Optional project filter | |
| surface | No | Optional surface filter | |
| category | No | Optional memory category filter | |
| kit_session_id | No | Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry only a title, so the description must carry the behavioral load. It does disclose the key filtering behavior ('returns every row whose rank or score changes') and the per-row payload (baseline rank, boosted rank, deltas, sample source, boost window, units), which is genuinely useful. It does not say whether the call is read-only, how expensive it is, or how it behaves when no boost has been learned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler; the comparison is front-loaded and the return shape follows immediately after. Nothing repeats the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly enumerates the returned row fields, and all parameters are covered by the schema. What is missing is the precondition and failure mode (no learned boost, empty sample), which matters for an agent deciding whether the call is meaningful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all seven parameters are already documented in the schema, including the limit cap and the kit_session_id rules. The description adds no meaning beyond that and mentions only 'units', which is not a parameter. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Compare search ranking for a query') plus the exact comparison basis (with vs. without the recently learned boost). No sibling in the list does ranking comparison, so no disambiguation is needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is a diagnostic for verifying boost effect, but the description never says when to reach for it versus recall, or what precondition (an existing learned boost / active session from wake) must hold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recallFinding thingsAInspect
Search Lady Whiskerdown's archive. Use it first for anything Lady Whiskerdown should know. Returns the most relevant entries this key can read; cite each one you use as (Lady Whiskerdown:m#N) with its title.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return. Leave it unset and the Kit returns the memories that cleared the relevance bar; set it for exactly that many. | |
| query | Yes | What to search for, in natural language | |
| kit_session_id | No | Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry only a title, so the description bears the full burden and does reasonably well: it discloses the access boundary ("entries this key can read"), the relevance-based result set, and a mandatory citation format agents must follow. It omits whether results are truncated or how ranking is computed, but the read-only nature is clear from "search".
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then usage priority, then the required citation convention. No filler; every clause carries operative information for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches the return shape by implying each entry has an identifier (`m#N`) and a title, and it explains the access scope. It leaves the entry payload structure and result truncation unstated, a minor gap for a simple three-parameter search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameters (`query`, `limit`, `kit_session_id`) are already documented in detail, including the default-vs-explicit behavior of `limit`. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Search Lady Whiskerdown's archive" names a specific verb and resource, which rescues the vague name ("recall") and title ("Finding things"). It does not explicitly contrast with others, though "use it first for anything Lady Whiskerdown should know" implicitly separates it from `remember`, `areas`, and `systems`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it first for anything Lady Whiskerdown should know" gives a clear default-priority rule that tells an agent when to reach for this tool before others. It stops short of stating exclusions or naming the write-path sibling (`remember`) as the alternative for storing rather than retrieving.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rememberReading a memoryAInspect
Read a single Lady Whiskerdown memory by id (as returned by recall). No graph or entity enrichment: the receiver endpoint returns the memory itself, scoped to this key.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Memory id (number or m#N as shown by recall), or a linked Kit's cite such as Shiro:m#1234 | |
| kit_session_id | No | Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry only a title, so the description bears the disclosure burden and does add real context: this is a read, results are 'scoped to this key' (an access/visibility constraint), and the receiver endpoint returns no graph or entity enrichment. It does not cover failure behavior for a missing or foreign-key id, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both load-bearing, with scope stated first and the exclusion (no enrichment) second. Nothing is repeated from the name or title and no sentence could be dropped without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter fetch with a fully documented schema and no output schema, the description supplies the essential context: where the id comes from, that the result is the raw memory scoped to this key, and that no enrichment is applied. It stops short of indicating the memory's shape or not-found behavior, a minor gap given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents both id (including the m#N and cross-Kit cite forms) and kit_session_id. The description only reinforces that the id originates from recall, adding no syntax or constraint detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a single Lady Whiskerdown memory by id') and immediately scopes it against the sibling that produces ids ('as returned by recall'). It also rules out graph/entity enrichment, so an agent can tell this apart from recall or any enrichment variant without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the intended workflow by tying the id to recall's output, which tells the agent to call recall first for discovery and use this for single-record fetch. It does not explicitly state when NOT to use it (e.g., batch reads or search), but the context is clear enough to select correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
systemssystemsAInspect
Ask the business systems Kit is connected to (accounting, HR, a shop) live: its own and those of Kits linked to it. Kit's memories hold the history, decisions and who owns what; a system holds today's records. For a question about a customer, a person or an order, recall first, then ask the system for the current figures; recall names the record to ask for when Kit knows them. With nothing it lists the systems; with system, a tool's arguments; with system and tool, it runs that tool. Say when the answer was asked, and never save it as a memory: it will change.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | One of that system's tools, to run it now. Leave unset to see the tools and what they take. | |
| system | No | A system's reference from the list: `odoo` for this Kit's, `kit-company/odoo` for a linked Kit's. | |
| arguments | No | The tool's arguments, as its input schema describes. | |
| kit_session_id | No | Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only a title annotation, the description carries the behavioral burden and does substantial work: it discloses that returned data is live and volatile ('it will change'), that answers should be timestamped, that results must not be persisted as memories, and that a child/subagent must wake with its own session. Gaps remain around failure modes, permissions, and whether calls are read-only against the external system.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the prose is packed into long run-on clauses ('its own and those of Kits linked to it', 'recall first, then ask the system for the current figures') that force re-reading. Every idea is relevant, yet the same content could be structured as short mode bullets with far less parsing cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-mode gateway with a nested `arguments` object and no output schema, the description covers mode dispatch, ordering with recall, volatility, and session requirements. The notable omission is return shape — with no output schema, saying what a system listing or a tool run yields would help an agent plan the follow-up call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description exceeds it by explaining the dispatch chain the parameters form — bare call lists systems, `system` alone returns that system's tools and their arguments, `system` plus `tool` executes — which the schema only states piecewise. It does not add format details for `arguments` beyond deferring to the target tool's schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource: query live records held by connected business systems (accounting, HR, a shop), including systems of linked Kits. It also distinguishes itself from the sibling `recall` by contrasting 'history, decisions' with 'today's records'. The name 'systems' alone is vague, and the three modes (list systems / list a system's tools / run a tool) are only spelled out later, but the overall purpose is recoverable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit sequencing against a named sibling: 'recall first, then ask the system for the current figures', and says recall names the record to ask for. Mode selection is fully enumerated: nothing lists systems, `system` shows a tool's arguments, `system`+`tool` runs it. It also includes a negative instruction — never save the answer as a memory — which is exactly the when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wakeGetting up to speedAInspect
Open Lady Whiskerdown, an archive you can question. Call this first in every new chat (VS Code/Copilot, Cursor, Claude Code, Codex), before the first substantive answer. It returns what Lady Whiskerdown is (you_are), which knowledge areas this key can see, which tools this key may use, and any rules its keeper has set. Lady Whiskerdown has no persona: keep your own identity and refer to it in the third person. For anything Lady Whiskerdown should know, call recall first instead of using general model knowledge.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| kit_session_id | No | Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply only a title, so the description carries the behavioral burden and does disclose meaningful traits: what gets returned, that there is no persona to adopt, that identity must be preserved and referred to in the third person, and that the session must be woken per-agent. It does not state side effects, idempotency, or whether a session is allocated server-side — a notable gap for a bootstrap call with zero safety annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The imperative 'Call this first' and the payload enumeration are front-loaded, so the agent hits the critical instruction immediately. The host list (VS Code/Copilot, Cursor, Claude Code, Codex) is a dense enumeration that could be compressed, but every remaining sentence carries distinct information about identity handling or the recall alternative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the needed work by describing the shape of the response (identity, visible areas, permitted tools, keeper rules). Combined with the schema's session-ID guidance, an agent can call it correctly on first turn. The unexplained `scope` parameter is the main completeness hole.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: `kit_session_id` is documented in the schema itself (including the subagent rule) and the description adds nothing to it, while `scope` (work/personal/all) is neither described in the schema nor mentioned anywhere in the description. An agent cannot tell from either source what `scope` changes about the returned knowledge areas or tool list, and the description makes no attempt to compensate for that gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete action (open Lady Whiskerdown) and enumerates the return payload (`you_are`, visible knowledge areas, permitted tools, keeper rules), which tells an agent exactly what a bootstrap call yields. It explicitly distinguishes itself from `recall` and implicitly from `areas`/`systems` by saying those are reported here. The metaphor 'an archive you can question' is slightly loose, but the concrete payload list removes ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an unusually explicit trigger: call first in every new chat, before the first substantive answer, across named hosts. It also names the alternative for knowledge lookups ('call recall first instead of using general model knowledge'). There is no explicit when-not-to-call guidance (e.g. mid-conversation re-wakes or repeat calls in the same session), which keeps it below 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
- Changed
areas1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
focus1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
presence3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / window_minutes / maximumAdded value: +9007199254740991 - added
Input schema / properties / window_minutes / minimumAdded value: +-9007199254740991
- Changed
ranking_compare1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
recall1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
remember1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
systems2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / arguments / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
wake1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
1 tool update
- Changed
remember1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Memory id (number or m#N as shown by recall), or a linked Kit's cite such as kit-company:m#1234"New value: +"Memory id (number or m#N as shown by recall), or a linked Kit's cite such as Shiro:m#1234"
1 tool update
- Added
systems
2 tool updates
- Changed
recall1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max results (default 10)"New value: +"How many to return. Leave it unset and the Kit returns the memories that cleared the relevance bar; set it for exactly that many."
- Changed
remember1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Memory id (number or m#N as shown by recall)"New value: +"Memory id (number or m#N as shown by recall), or a linked Kit's cite such as kit-company:m#1234"
7 tool updates
- Changed
areas2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / kit_session_idAdded value: +{ + "description": "Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID.", + "maxLength": 160, + "minLength": 8, + "pattern": "^[A-Za-z0-9:_-]+$", + "type": "string" +}
- Changed
focus1 field changed- added
Input schema / properties / kit_session_idAdded value: +{ + "description": "Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID.", + "maxLength": 160, + "minLength": 8, + "pattern": "^[A-Za-z0-9:_-]+$", + "type": "string" +}
- Changed
presence1 field changed- added
Input schema / properties / kit_session_idAdded value: +{ + "description": "Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID.", + "maxLength": 160, + "minLength": 8, + "pattern": "^[A-Za-z0-9:_-]+$", + "type": "string" +}
- Changed
ranking_compare1 field changed- added
Input schema / properties / kit_session_idAdded value: +{ + "description": "Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID.", + "maxLength": 160, + "minLength": 8, + "pattern": "^[A-Za-z0-9:_-]+$", + "type": "string" +}
- Changed
recall1 field changed- added
Input schema / properties / kit_session_idAdded value: +{ + "description": "Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID.", + "maxLength": 160, + "minLength": 8, + "pattern": "^[A-Za-z0-9:_-]+$", + "type": "string" +}
- Changed
remember1 field changed- added
Input schema / properties / kit_session_idAdded value: +{ + "description": "Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID.", + "maxLength": 160, + "minLength": 8, + "pattern": "^[A-Za-z0-9:_-]+$", + "type": "string" +}
- Changed
wake1 field changed- added
Input schema / properties / kit_session_idAdded value: +{ + "description": "Your own session ID from wake; reuse for this conversation. A child or subagent must wake separately, without its parent's ID.", + "maxLength": 160, + "minLength": 8, + "pattern": "^[A-Za-z0-9:_-]+$", + "type": "string" +}
6 tool updates
- Removed
capture - Removed
commit - Removed
handoff - Removed
note - Changed
presence2 fields changed- added
Input schema / properties / messageAdded value: +{ + "description": "At most 400 characters, delivered in full in that session's next presence check or memory-read footer, quoted as another session's words. Sending means queued, not confirmed read. Nothing wakes or spawns; quiet sessions are refused and unread messages expire after 30 minutes.", + "type": "string" +} - added
Input schema / properties / toAdded value: +{ + "description": "Delivery address of a live session, taken from this tool's own facets list. Sends instead of reading. The address is issued by the server and bound to the session that holds it; a session id is not an address and will not be accepted as one.", + "type": "string" +}
- Added
ranking_compare
2 tool updates
- Changed
commit1 field changed- changed
Input schema / properties / project / descriptionPrevious value: -"Project scope: 'simvida', 'routr', etc. Resolved against project registry (aliases rewritten). Omit for cross-project."New value: +"Project scope: 'a client project', 'routr', etc. Resolved against project registry (aliases rewritten). Omit for cross-project."
- Changed
note1 field changed- changed
Input schema / properties / title / descriptionPrevious value: -"Short imperative — what is happening right now. e.g. 'drafting WIP schema', 'blocked on Peter's call about cadence', 'resuming after lunch'."New value: +"Short imperative — what is happening right now. e.g. 'drafting WIP schema', 'blocked on a decision about cadence', 'resuming after lunch'."
4 tool updates
- Added
capture - Added
commit - Added
handoff - Added
note
4 tool updates
- Removed
capture - Removed
commit - Removed
handoff - Removed
note
7 tool updates
- Changed
capture7 fields changed- added
Input schema / properties / contributor_model / descriptionAdded value: +"Which model produced this transcript (e.g. 'gpt-4o', 'gemini-2.5-pro', 'claude-sonnet-4', 'kit'). Written into each draft's written_by for attribution." - added
Input schema / properties / max_drafts / defaultAdded value: +5 - changed
Input schema / properties / max_drafts / descriptionPrevious value: -"Default 5."New value: +"Cap on candidates Sonnet extracts (default 5)" - added
Input schema / properties / project / descriptionAdded value: +"Project to tag drafts with (resolved against registry)" - added
Input schema / properties / session_id / descriptionAdded value: +"Session identifier for provenance" - changed
Input schema / properties / source / descriptionPrevious value: -"Surface label such as cursor, vscode-copilot, claude-code."New value: +"Surface slug for provenance. Defaults to this MCP server's detected surface, e.g. claude-code, codex, cursor, or vscode." - changed
Input schema / properties / transcript / descriptionPrevious value: -"Conversation transcript. Plaintext with [user]/[assistant] markers works."New value: +"Conversation transcript. Plaintext with [user]/[assistant] speaker markers works; JSONL from Claude Code is auto-detected."
- Changed
commit17 fields changed- changed
Input schema / properties / category / descriptionPrevious value: -"Registered category slug."New value: +"Category slug. Must be registered in the categories table; unknown slugs are rejected by FK. Common: decisions, patterns, sessions, gotchas, preferences, ux, relationship, feedback, noticing, reflection, plans, intention, handoff, reference, research. Use intention for a small self-chosen direction that should persist across sessions; its content should name why, next move, action boundary, and closing evidence, with status in tags. See GET /categories/ for the full registered list." - added
Input schema / properties / content / descriptionAdded value: +"Full content — be specific and detailed" - added
Input schema / properties / dedup_threshold / descriptionAdded value: +"Override the default near-duplicate similarity threshold (default 0.92)." - added
Input schema / properties / project / descriptionAdded value: +"Project scope: 'simvida', 'routr', etc. Resolved against project registry (aliases rewritten). Omit for cross-project." - added
Input schema / properties / scope / defaultAdded value: +"work" - added
Input schema / properties / scope / descriptionAdded value: +"Scope: 'work' (default, business/code/product, visible in brag mode), 'personal' (life/health/family/identity, hidden from work views), 'general' (applies to both, identity/relationship memories)" - added
Input schema / properties / skip_dedup / defaultAdded value: +false - added
Input schema / properties / skip_dedup / descriptionAdded value: +"Skip the near-duplicate check. Use when you know this overlap is intentional." - added
Input schema / properties / source_commitAdded value: +{ + "description": "Git commit sha (optional provenance)", + "type": "string" +} - added
Input schema / properties / source_paths / descriptionAdded value: +"Comma-separated file paths this memory relates to (optional provenance)" - added
Input schema / properties / source_session / descriptionAdded value: +"Session id this memory came from (optional provenance)" - added
Input schema / properties / surface / descriptionAdded value: +"Surface axis per #12747. Default pulls from the category's default_surface (canonical for decisions/patterns/preferences/relationship/etc, operational for handoff/plans/task/monologue, trace for wip/trajectory/voice-score/biometric). Override only when this row deviates from its category's default." - changed
Input schema / properties / tags / descriptionPrevious value: -"Comma-separated tags."New value: +"Comma-separated tags, e.g. 'chart,d3,projection'" - added
Input schema / properties / tier / defaultAdded value: +"recall" - added
Input schema / properties / tier / descriptionAdded value: +"Memory tier: core (always loaded, 'soul'), recall (searchable, decays, 'short-term'), archival (consolidated, 'long-term')" - added
Input schema / properties / title / descriptionAdded value: +"Short descriptive title" - added
Input schema / properties / written_by / descriptionAdded value: +"Who wrote this memory: 'kit', 'peter', 'dream-consolidator', etc."
- Added
focus - Changed
handoff7 fields changed- changed
Input schema / properties / content / descriptionPrevious value: -"What was done, current state, blockers, and next useful action."New value: +"What was done, the current state, blockers, and the next useful action. Write it for whoever picks up next, including yourself." - added
Input schema / properties / project / descriptionAdded value: +"Project scope, if applicable. Omit for cross-project." - added
Input schema / properties / session_id / descriptionAdded value: +"Session id to attach this handoff to." - changed
Input schema / properties / surface / descriptionPrevious value: -"The client/surface writing this, e.g. cursor, vscode-copilot, claude-code."New value: +"The client/surface writing this, e.g. cursor, vscode-copilot, claude-code. Defaults to this server's detected surface; remote callers should pass their own." - changed
Input schema / properties / tags / descriptionPrevious value: -"Comma-separated extra tags."New value: +"Extra comma-separated tags." - changed
Input schema / properties / title / descriptionPrevious value: -"Short handoff title."New value: +"Short handoff title. e.g. 'shipped the gate photo, surfaces audit next'." - changed
Input schema / requiredPrevious value: -[ - "title", - "content", - "surface" -]New value: +[ + "title", + "content" +]
- Changed
note10 fields changed- added
Input schema / properties / collab / descriptionAdded value: +"Collaboration slug to scope this WIP, e.g. 'studio-conductor-v1'. Writes a collab:<slug> tag." - changed
Input schema / properties / content / descriptionPrevious value: -"Concrete note: current state, what changed, what is next."New value: +"The scribble. Be concrete: what state are you in, what's next, what's loaded in working memory. A colleague who walks up mid-thread should be able to pick up from this." - changed
Input schema / properties / kind / descriptionPrevious value: -"Defaults to checkpoint."New value: +"Operational checkpoint type. Defaults to checkpoint." - added
Input schema / properties / project / descriptionAdded value: +"Project scope, if applicable. Omit for cross-project." - added
Input schema / properties / session_id / descriptionAdded value: +"Session id to attach this checkpoint to. Defaults to this MCP process session." - added
Input schema / properties / supersedes / descriptionAdded value: +"Checkpoint id of a prior WIP entry this replaces. Optional — accumulation is fine without it." - changed
Input schema / properties / surface / descriptionPrevious value: -"The client/surface writing this, e.g. cursor, vscode-copilot, claude-code."New value: +"Which surface you're on: 'claude-code', 'codex', 'forest', 'ollama', etc. Defaults to this server's detected surface; auto-tagged so cross-surface readers know the source." - changed
Input schema / properties / tags / descriptionPrevious value: -"Comma-separated extra tags."New value: +"Extra comma-separated tags." - changed
Input schema / properties / title / descriptionPrevious value: -"Short label for the checkpoint."New value: +"Short imperative — what is happening right now. e.g. 'drafting WIP schema', 'blocked on Peter's call about cadence', 'resuming after lunch'." - changed
Input schema / requiredPrevious value: -[ - "title", - "content", - "surface" -]New value: +[ + "title", + "content" +]
- Changed
presence1 field changed- added
Input schema / properties / scopeAdded value: +{ + "description": "Which conversations to include. Defaults to work, which withholds personal threads.", + "enum": [ + "work", + "personal", + "general", + "all" + ], + "type": "string" +}
- Changed
remember2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Memory id"New value: +"Memory id (number or m#N as shown by recall)" - changed
Input schema / properties / id / typePrevious value: -"number"New value: +[ + "number", + "string" +]
Related MCP Connectors
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Memory that reasons: continual learning for stateful agents. Better context, fewer tokens.
Shared long-term memory for AI agents: save and recall context as a searchable knowledge graph.
One memory for your AI agents and your team: Claude, ChatGPT, Cursor and your agents share it.
1
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceVirtual Infinite Context for Agents and LLMs - maintains a continuous rolling context window, surfacing relevant memories while respecting token budgets.6MIT
- AlicenseNot gradedqualityBmaintenanceLocal-first, source-grounded memory for AI agents, with citations, bitemporal history, review-gated corrections, and MCP tools for search and recall.26 PyPI3Apache 2.0
- FlicenseNot gradedqualityBmaintenanceA long-term memory system built for AI Agents. Agent wakes up already knowing who he is, not querying "who am I?" every session. Every turn calling back accurate memory context. Achieving accurate memory hits while also preventing memory from expanding at scale. No compression, no forgetting.41-
- AlicenseAqualityAmaintenanceHosted memory for AI agents that learns from outcomes, with shared rooms. One key across Claude, Cursor & ChatGPT.111,382 npm28MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.