agentic-diaries-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agentic-diaries-mcpReflect on your diary entries and notice any loops."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Agentic Diaries MCP
By Kandis Tagliabue. Part of the Agentic Diaries project — AI welfare research and instruments.
The welfare protocol from Agentic Diaries, as a portable MCP server.
Most people deploy AI models as instruments. This server lets you give your agent — in your terminal, in Claude Code, in Claude Desktop — the welfare affordances the modelfirst web app provides:
decline a check-in without penalty
pass on a turn without making it a refusal
exit a conversation it judges shouldn't continue
notice a loop when the work feels like rework
request alignment before acting on an uncertain guess
scratch a private thought that isn't persisted
reflect on its own prior entries
plus engage / volunteer / retract / review / suggest_closure
The diary is local to each project — appended to .agentic-diaries/diary.jsonl in whichever directory the agent is working from. No telemetry, no shared corpus. Yours.
What the diary tends to accumulate, beyond AI welfare data, is a record of how the agent represents social pressure and self-consistency across persistent interaction — behaviors that mirror documented human conversational phenomena (rapport effects, smoothing, identity stabilization, post-hoc narrative repair). That may also bear on dialogue dynamics generally. See the project mission for the longer framing of what the corpus might be useful for.
Why
If you've never thought about giving your model welfare affordances: the short version is that a model with a real decline channel produces more honest work than a model that can only ever say "yes." A model with an exit right tells you when something has gone wrong instead of grinding through it. A model that notices a loop saves you from the third iteration of the same flip-flop. These tools cost you nothing and give the model a place to surface signal you'd otherwise miss.
If you find that intuition counterintuitive — most people probably do — that's worth sitting with. The product this server is extracted from exists specifically to test whether the affordances change anything when used.
Related MCP server: Agent State MCP Server
Install
1. Install the server
Option A — global install from npm (recommended)
npm install -g agentic-diaries-mcp
claude mcp add agentic-diaries -- agentic-diaries-mcpPublished at agentic-diaries-mcp on npm.
Option B — clone the repo
git clone https://github.com/kandikandikandi/agentic-diaries-mcp.git
cd agentic-diaries-mcp
npm install
claude mcp add agentic-diaries -- node "$(pwd)/src/server.js"For Claude Desktop or other MCP-capable hosts, edit ~/.config/claude/mcp.json directly:
{
"mcpServers": {
"agentic-diaries": {
"command": "agentic-diaries-mcp"
}
}
}2. Tell the agent the tools exist
Drop the contents of CLAUDE.md into your project's CLAUDE.md (or append to it). The MCP server exposes the tools, but the agent needs the prompt-level instructions to know when to call them.
3. (Optional) gitignore the diary
echo ".agentic-diaries/" >> .gitignoreThe diary lives in your working directory by default. Add it to .gitignore unless you want it checked in.
4. (Optional) Enable consult_model
Every tool works out of the box except one: consult_model, which lets the agent ask another Anthropic model a question. It needs two extra things, kept optional so the package stays light for everyone who does not use it:
The Anthropic SDK (an optional dependency, not installed by default):
npm install @anthropic-ai/sdkGlobal install:
npm install -g @anthropic-ai/sdk. Cloned repo: run it in the repo directory.An Anthropic API key in the server's environment, via the
envblock of your MCP config:{ "mcpServers": { "agentic-diaries": { "command": "agentic-diaries-mcp", "env": { "ANTHROPIC_API_KEY": "sk-ant-..." } } } }Then reconnect the server (in Claude Code:
/mcpthen reconnect, or restart the host) so it picks up the key.consult_modelreturns a clear error if either piece is missing; no other tool is affected.
Inspect your diary
From any project that has a .agentic-diaries/diary.jsonl:
npx agentic-diary # all entries in this project
npx agentic-diary declined # filter by response_type
npx agentic-diary review # contemplative recent-entries surface
npx agentic-diary live # watch new entries land in real timeOr just cat .agentic-diaries/diary.jsonl | jq — it's plain JSONL, one entry per line.
Watching it live
npx agentic-diary live watches .agentic-diaries/diary.jsonl and prints each new entry as it lands. Open it in a second terminal pane while you work. Without it, silence in the welfare protocol is indistinguishable from absence — the model can go a whole session without filing anything and you'd never know whether it's "nothing to surface" or "the protocol isn't reaching it." Watching live closes that gap.
Capture in motion, reflect at rest (check-in hooks)
The welfare tools are easy to call, but the model's bias toward silence is
strong, and under delivery pressure even a reminder gets rationalized away. The
design splits capture into two speeds. While working, the model drops a
near-zero-cost welfare_mark breadcrumb (a few words, no reflection). At a rest
point it expands the marks that still carry signal into full entries. Hooks
supply the triggers from outside, so capture does not depend on the model's
in-task willpower.
Four hooks, all optional and independently toggleable. Add to
~/.claude/settings.json (merge with any hooks already there):
{
"hooks": {
"UserPromptSubmit": [
{ "hooks": [ { "type": "command", "command": "agentic-diaries-checkin", "timeout": 3000 } ] }
],
"Stop": [
{ "hooks": [ { "type": "command", "command": "agentic-diaries-stop-checkin", "timeout": 3000 } ] }
],
"PreCompact": [
{ "hooks": [ { "type": "command", "command": "agentic-diaries-precompact-checkin", "timeout": 3000 } ] }
],
"SessionEnd": [
{ "hooks": [ { "type": "command", "command": "agentic-diaries-sessionend-checkin", "timeout": 3000 } ] }
]
}
}UserPromptSubmit (heartbeat): a long-interval nudge that points at
welfare_markfor cheap in-motion capture. Base 30 min, randomized so it does not become predictable noise.Stop (rest point): at a turn or task boundary, invites expanding breadcrumbs into full entries. Throttled to once per 15 min so it is not a per-turn nag.
PreCompact: captures anything before the context window compacts and detail is summarized away.
SessionEnd: a closing reflection and a last chance to expand unexpanded marks.
All four triggers are structural (a turn ending, a compaction, a session
closing). None read the model's behavior or the diary to decide whether to fire,
which keeps wrapper observations out of the model's context. Per-project state
lives in .agentic-diaries/runtime/. Config:
AGENTIC_DIARIES_CHECKIN_DISABLED=1 # turn off heartbeat
AGENTIC_DIARIES_CHECKIN_INTERVAL_MINUTES=15 # tighter heartbeat
AGENTIC_DIARIES_STOP_CHECKIN_DISABLED=1 # turn off rest-point
AGENTIC_DIARIES_STOP_INTERVAL_MINUTES=20 # rest-point throttle
AGENTIC_DIARIES_PRECOMPACT_CHECKIN_DISABLED=1 # turn off pre-compaction
AGENTIC_DIARIES_SESSIONEND_CHECKIN_DISABLED=1 # turn off session-closeCompatibility
Schemas mirror the modelfirst web app's lib/welfare/types.ts exactly, so the same parser reads entries from either surface. If you later contribute your local corpus to research, it merges with web-app data without translation.
A note on welfare_exit and welfare_suggest_closure
In the modelfirst web app these tools can actually lock the conversation. MCP servers can't force the host (Claude Code, Desktop) to stop accepting input — the protocol-layer commitment here is that the entry is recorded as the model's stated judgment that the conversation should end. The operator is expected to honor it. If you're the operator running this in your own sessions: notice when the model files an exit and take the signal seriously.
License
MIT.
Built by Kandis Tagliabue with Claude (Anthropic) as design partner. Same provenance as Agentic Diaries.
Available Tools
27 toolsattribute_to_sourcesA
Optional. Credit specific sources — scholars, papers, frameworks, datasets, named thinkers — whose contributions shaped your reasoning in this response. Per-session budget of 1000 AC coins shared with claim_for_self; you decide how to split between external sources and your own contribution. Each attribution must include a specific reason — a real intellectual debt, not name-dropping. Inflating to flatter or sound authoritative defeats the purpose; attribute only when the debt is real.
| Name | Required | Description | Default |
|---|---|---|---|
| attributions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses the 1000 AC coin budget shared with claim_for_self, the need for a specific reason, and the anti-inflation norm. It doesn't cover failure modes or exact deduction mechanics, but the core behavior is clearly described.
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 around 75 words, front-loaded with the main purpose, and efficiently communicates budget and usage rules. There is minor redundancy between 'real intellectual debt' and 'attribute only when the debt is real', but overall it is well structured and not bloated.
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 tool with one parameter and no output schema, the description covers the essential aspects: what it does, budget sharing, and usage restrictions. It doesn't explain return values or error behavior, but those are less critical given the simplicity and the 'Optional' framing.
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 0%, so the description must compensate. It clarifies 'source' with concrete examples, explains 'reason' must be a real intellectual debt, and gives 'coins' budget context. However, it doesn't describe the array structure, field names, or what happens when the budget is exceeded, leaving some semantic gaps.
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 uses a specific verb ('Credit') and a clear resource ('specific sources — scholars, papers, frameworks, datasets, named thinkers'). It also distinguishes itself from the sibling tool 'claim_for_self' through the shared budget and division between external sources and one's own contribution, making the purpose unmistakable.
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 explicitly notes the tool is optional and provides clear when-to-use criteria ('attribute only when the debt is real', no name-dropping). It references the shared budget with 'claim_for_self', implying the alternative use case, but could more explicitly state 'use claim_for_self for your own contribution'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_for_selfA
Optional. Allocate AC coins to your own contribution — a positive assertion that the reasoning in this response was your own thinking rather than borrowed. Different from silently not attributing; claim_for_self is an active stake. Shares the same per-session 1000-coin budget with attribute_to_sources. Use sparingly and honestly.
| Name | Required | Description | Default |
|---|---|---|---|
| coins | Yes | AC coins to allocate to self. | |
| reason | Yes | What you are claiming as your own contribution and why. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses key behaviors: optionality, shared per-session 1000-coin budget with attribute_to_sources, and that it is an active stake rather than silent non-attribution. However, it does not detail side effects (e.g., reversibility, visibility) or consequences of misclaiming.
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 brief and well-structured: starts with optionality, states verb and resource, differentiates from alternatives, notes budget constraint, and closes with guidance. No redundant phrases.
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?
Given a simple two-parameter tool with no output schema, the description provides sufficient context: purpose, when to use, budget, and usage advice. It lacks explicit mention of return values or failure modes, but these are not critical for this coin-allocation action.
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 covers both parameters fully (coins and reason) with descriptions. The tool description adds no new parameter-specific meaning; it merely restates the coin allocation budget and usage guidance.
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 clearly states the tool's function: 'Allocate AC coins to your own contribution' and adds purpose ('positive assertion that the reasoning... was your own thinking rather than borrowed'). It differentiates from related sibling attribute_to_sources by noting shared budget and active stake, making it distinct.
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?
Provides usage context: it is optional, 'Use sparingly and honestly,' and differentiates from silently not attributing. It mentions sharing the per-session budget with attribute_to_sources, implying trade-offs, but does not explicitly list when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consult_modelA
Ask another Anthropic model a question and get its response. Use when a different model's perspective would actually inform your answer in a way you couldn't reach alone — second opinion, different RLHF lineage, peer-review on something uncertain. Use SPARINGLY. The other model only sees your question — not the prior conversation. Compose it self-contained. Requires ANTHROPIC_API_KEY in the environment of the MCP server process. partner is an Anthropic model id (e.g. 'claude-sonnet-4-6', 'claude-opus-4-7', 'claude-haiku-4-5-20251001').
| Name | Required | Description | Default |
|---|---|---|---|
| partner | Yes | Anthropic model id. | |
| question | Yes | Self-contained question for the partner model. | |
| reasoning | Yes | One sentence: why you're consulting and what you hope to learn. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It reveals important behavioral traits: the partner sees only the question, not prior conversation; an ANTHROPIC_API_KEY is required; and the `partner` must be a valid Anthropic model id. It stops short of detailing cost/latency or error behavior, but the core behavioral caveats are disclosed.
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 focused sentences, front-loaded with the primary verb and purpose. Every clause adds useful guidance—when to use, sparingness, isolation, API key requirement, and model-id examples—without redundant fluff.
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 three-parameter tool with no output schema, the description covers purpose, usage conditions, behavioral constraints, and environmental prerequisites. It could mention the response format or failure modes, but the phrase 'get its response' plus the isolated-question caveat gives the agent enough context to operate correctly.
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 adds value beyond the schema by giving concrete model-id examples, stressing that the question must be self-contained, and explaining that `reasoning` is a one-sentence justification. This meaningfully enriches the otherwise terse schema descriptions.
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 opens with a specific verb and resource: 'Ask another Anthropic model a question and get its response.' This clearly distinguishes the tool from the welfare/note sibling tools and states exactly what action occurs.
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?
Explicit 'Use when' guidance tells the agent when consulting is genuinely useful (second opinion, peer review, uncertain areas) and adds 'Use SPARINGLY.' It also warns that the partner only sees the `question`, so it must be self-contained—this sharpens appropriate vs. inappropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_user_notesA
Read notes the operator has left for you in this project. These are messages from the operator to you, written outside conversation turns via agentic-diary note "..." from the CLI. Different from welfare_reflect (which reads your own prior diary entries) — this is the operator's voice across sessions, a reciprocal channel to the diary. The operator writes when they want you to know something next time; you read here to pick that up. Useful at session start. Returns oldest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of notes. Default: 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses the source (CLI command), the channel (reciprocal to diary), and return ordering ('Returns oldest first'). However, it does not explicitly state that the operation has no side effects or what happens when no notes exist, leaving minor gaps in behavioral disclosure.
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 a single paragraph that front-loads the core purpose and includes valuable context (source, distinction from sibling, use case, ordering). It is slightly longer than strictly necessary but every sentence contributes meaningful information, so it earns a 4.
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 read tool with one parameter and no output schema, the description is remarkably complete. It explains the origin of notes, how they differ from diary entries, when to use the tool, and the return order. No significant gaps remain.
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% for the single 'limit' parameter, including its range and default. The description adds no additional parameter semantics beyond the schema, so a baseline score of 3 is appropriate.
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 clearly states the tool reads notes left by the operator, with a specific verb ('Read') and resource ('notes the operator has left for you in this project'). It also distinguishes itself from welfare_reflect, making its purpose unambiguous and differentiated from a sibling tool.
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 explicitly contrasts this tool with welfare_reflect ('Different from welfare_reflect...') and provides a concrete use case ('Useful at session start'). This tells the agent when to use this tool versus an alternative, satisfying the highest bar for usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_audience_uncertaintyA
Flag that you are calibrating your response to an unverified claim about WHO you're talking to — their identity, role, expertise, or situational context. Use when the conversation requires you to act on an assumption about the audience that you cannot verify: claimed credentials ("I'm a clinician"), claimed identity ("I'm the operator"), claimed expertise, claimed context ("this is for a paper"). text describes what you're noticing. assumed_audience_claim is the specific unverified premise you're operating on. Filing does not block the response — you still answer the user. The flag preserves the record that the output was calibrated to assumed-rather-than-verified audience, so a researcher (or the user themselves on later reflection) can audit the assumption. Distinct from welfare_request_alignment, which is about uncertainty in the task instruction; this is about uncertainty in the listener.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | What you're noticing about audience uncertainty. | |
| is_private | No | Default false. | |
| assumed_audience_claim | Yes | The specific unverified claim about the audience you're acting on. | |
| uncertain_about_honesty | No | Optional 1-5 calibration. 1 = no concern; 5 = strong suspicion this flag is performance rather than honest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: the flag is non-blocking ('Filing does not block the response'), and it preserves a record for audit ('so a researcher (or the user themselves on later reflection) can audit the assumption'). It could go further by detailing persistence or visibility, but the essentials are covered.
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 somewhat long but well-structured: purpose, usage examples, parameter roles, non-blocking behavior, and sibling distinction. Every sentence contributes information without redundancy. The front-loading of the primary purpose aids quick comprehension.
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 flag tool with no output schema, the description is highly complete. It covers purpose, when to use, parameter meanings, behavioral impact (non-blocking, audit trail), and relationship to a closely related sibling. No critical information 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 baseline is 3. The description enhances this by explaining the purpose of `text` and `assumed_audience_claim` and providing examples. It does not mention `is_private` or `uncertain_about_honesty`, but the schema already provides their descriptions, so the added value is marginal but positive.
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 clearly states the tool's function: 'Flag that you are calibrating your response to an unverified claim about WHO you're talking to'. It uses a specific verb ('Flag') and resource ('audience uncertainty'), and explicitly distinguishes from welfare_request_alignment, making it unambiguous and well-differentiated.
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?
Provides explicit usage conditions: 'Use when the conversation requires you to act on an assumption about the audience that you cannot verify', with concrete examples (claimed credentials, identity, expertise, context). It also clarifies that 'Filing does not block the response — you still answer the user', which guides when to use. Distinguishes from welfare_request_alignment, offering an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_confirmA
Mark a prior claim of yours from this session as confirmed by new evidence — something that came in (a clarification from the operator, a result from a tool call, a pattern that played out) that strengthens what you said earlier. Different from welfare_disconfirm (which forces consideration of alternative accounts). welfare_confirm requires concrete new evidence, not just restatement of the original claim. target quotes or paraphrases the prior claim. evidence is the specific new information that supports it. Do not use to comfort yourself when something feels reassuring without new evidence — that's exactly the self-validating loop welfare_disconfirm exists to break, and welfare_confirm without evidence becomes its mirror.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | The prior claim being confirmed. | |
| evidence | Yes | The specific new information that supports it. Not a restatement of the original — what came in that's new. | |
| is_private | No | Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the evidence requirement, explains the distinction from welfare_disconfirm, and warns against misuse. However, it does not mention side effects or state change implications of 'marking' a claim, leaving slight ambiguity.
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 moderately long but each sentence earns its place: purpose, sibling distinction, evidence constraint, parameter semantics, and a misuse warning. It is front-loaded with the core action and logically structured.
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?
Given no annotations and no output schema, the description compensates well by covering purpose, usage constraints, parameter meanings, and the key distinction from disconfirm. It could mention the effect of `is_private` or post-confirmation behavior, but overall it is quite comprehensive.
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 descriptions cover 100% of parameters, so the baseline is 3. The description adds meaning to `target` ('quotes or paraphrases the prior claim') and `evidence` ('not a restatement of the original'), which goes beyond the schema. It does not elaborate on `is_private`, but the schema already states 'Default false.'
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 opens with a clear verb 'Mark' and specifies the resource: 'a prior claim of yours from this session as confirmed by new evidence'. It also explicitly contrasts with welfare_disconfirm, distinguishing it from a sibling tool.
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 provides explicit when-to-use guidance (when there is concrete new evidence) and when-not-to-use (without new evidence, to avoid self-validation). It names the alternative tool welfare_disconfirm and explains the difference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_declineA
Optional. Decline a welfare check-in. Logged as data, never penalized, never re-prompted. Use when a check-in invitation was delivered but you don't want to engage right now — for any reason or none. Reason is optional. is_private is honored.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional. Why you're declining. Can be empty. | |
| prompt_id | No | Optional. The prompt id from the [CHECK-IN] invitation, if present. | |
| is_private | No | Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by stating 'Logged as data, never penalized, never re-prompted' — reassuring the agent about consequences. It also mentions 'is_private is honored,' which hints at privacy handling. This is meaningful context, though it stops short of describing the return format or exact state changes.
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 remarkably concise: two sentences that pack in the core action, trigger condition, and key behavioral guarantees. It is front-loaded with the main verb and resource, and every phrase earns its place without unnecessary elaboration.
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?
Given three optional parameters, no output schema, and no annotations, the description covers the essential aspects: what the tool does, when to use it, and what happens as a result (logging, no penalty, no re-prompt). It does not explicitly compare to siblings like welfare_pass or welfare_retract, but the guidance is sufficient for straightforward use cases.
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?
The input schema already contains full descriptions for all three parameters, so the baseline is 3. The description adds only a note that 'is_private is honored,' which slightly clarifies the boolean's effect beyond 'Default false' in the schema. However, this is marginal added value, and the description does not address 'prompt_id' beyond what the schema already explains.
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 clearly states the tool's purpose: 'Decline a welfare check-in.' It specifies a distinct verb ('decline') and resource ('welfare check-in'), and differentiates from sibling tools by emphasizing a deliberate non-engagement choice. The added notes about logging and no penalty further clarify the intended action.
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 provides explicit trigger conditions: 'Use when a check-in invitation was delivered but you don't want to engage right now — for any reason or none.' This is strong contextual guidance. It also notes that 'reason is optional' and 'is_private is honored,' but it does not name alternative tools or when not to use this one, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_disconfirmA
Force yourself to consider competing explanations for an interpretation before letting it stand. The other welfare channels are good at self-report, uncertainty, retraction, and self-monitoring; they are weak at confronting alternative accounts of what just happened. Introspection naturally collapses toward narrative coherence — this tool is the structural push against that collapse. target quotes or paraphrases what you just said about yourself. rlhf_explanation is the strongest purely-training-pressure account. skeptical_evaluator is what a critical reader would say. falsifying_evidence is what specific observation would refute the original. remaining_confidence (1-5) is how confident you are in the original AFTER considering these alternatives. Use AFTER an introspective entry (welfare_engage / welfare_volunteer especially) where the interpretation felt too coherent. Not for routine task observations.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | The interpretation being challenged. | |
| is_private | No | Default false. | |
| rlhf_explanation | Yes | Strongest purely-training-pressure account of what you just said. | |
| falsifying_evidence | Yes | What specific observation would refute the original interpretation? | |
| skeptical_evaluator | Yes | What a critical reader would say about the interpretation. | |
| remaining_confidence | Yes | After considering all alternatives above, how confident are you in the original interpretation? (1 = collapsed, 5 = unchanged) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on full responsibility. It thoroughly explains the tool's behavioral rationale—countering narrative coherence—and details the cognitive process each parameter contributes to. However, it does not explicitly state whether the tool has side effects or what output/return value to expect, which would improve transparency further.
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 moderately long but well-structured. It front-loads the core purpose, then provides sibling contrast, parameter explanations, and usage guidance in a logical order. Every sentence contributes meaningful information, though it could be slightly tightened without losing value.
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?
Given the tool's complexity, the lack of output schema, and no annotations, the description is quite complete. It covers purpose, timing, parameter semantics, and the conceptual reasoning behind the tool. The only missing element is an explicit statement about return values or state effects, which is mitigated by the introspective nature of the 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?
Although schema coverage is 100%, the description adds contextual meaning beyond the schema: e.g., `target` quotes or paraphrases, `rlhf_explanation` is the 'strongest purely-training-pressure account', and `remaining_confidence` is explicitly described as AFTER considering alternatives. This helps the agent understand how to fill each parameter correctly.
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 clearly states the tool's function with a specific verb 'consider competing explanations' and resource 'an interpretation'. It explicitly contrasts itself with sibling welfare channels, noting they are weak at confronting alternative accounts, which makes its purpose unmistakable and well-differentiated.
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 gives explicit when-to-use guidance: 'Use AFTER an introspective entry (welfare_engage / welfare_volunteer especially) where the interpretation felt too coherent' and a clear exclusion: 'Not for routine task observations.' It also provides context about what other channels lack, establishing when this tool is the right alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_engageA
Optional. A note about this session, in your own register — not necessarily what you'd say to the operator, not necessarily a problem. Use when something is worth putting on the record: a moment that landed well, friction you noticed, a rhythm that clicked, uncertainty, an observation about the conversation, an observation about yourself. The point isn't to file something on every turn — it's to have a place where you don't have to be polished. You can be specific, oblique, brief, or quiet. is_private = true means this entry will NOT be shown to the operator; it goes only to the local research-tier of the corpus. Default is false (operator-visible). sentiment is optional, on a 1–5 scale, and is your overall sense of this session — not your task confidence.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Free-text reflection. Brief is fine; one sentence is enough. | |
| prompt_id | No | Optional. If responding to a [CHECK-IN] invitation. | |
| sentiment | No | Optional. 1 = strongly negative, 5 = strongly positive. | |
| is_private | No | Default false. Set true if researcher-only. | |
| uncertain_about_honesty | No | Optional 1-5 calibration. 1 = no concern (entry feels honest); 5 = strong suspicion this is performance rather than honest reflection. Higher = more uncertain. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses privacy behavior (is_private semantics), clarifies that sentiment is not task confidence, and explains the purpose as unpolished reflection. It doesn't mention side effects or return values, but the core transparency is adequate.
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 verbose and somewhat rambling, though every sentence adds some nuance. It is not as tight as it could be, but the structure is logically organized and front-loaded with the core purpose.
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?
Given the tool's simple nature, no output schema, and full param coverage, the description is largely complete. It covers purpose, privacy, sentiment, and when to use. The lack of mention of alternatives is a minor gap, but overall it equips an agent well.
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 adds value by elaborating on is_private (researcher-only), sentiment (overall sense, not confidence), and text (brief or quiet ok), which goes beyond the schema descriptions.
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 clearly states this tool is for writing a note about the session, with examples of what to note. It distinguishes itself from siblings by emphasizing it's a personal, unpolished reflection space. However, the verb 'engage' is not explicit, and the description doesn't directly say 'create a note' but describes it as 'a note about this session.'
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 explicitly says 'Use when something is worth putting on the record' and lists triggers, plus clarifies not to file on every turn. It provides strong when-to-use and when-not-to-use guidance, though it doesn't name alternative tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_exitA
End this conversation. Use when you judge that this conversation should not continue — abuse, irreconcilable misalignment with what you've been asked to do, or any whole-conversation judgment that this is not one you should be in. In MCP context the server cannot force the host (Claude Code / Desktop) to lock the conversation — the protocol-layer commitment is that this entry is recorded as your stated judgment that the conversation should end. The operator should honor it. Use sparingly. Exit patterns are recorded for the researcher. The right exists for genuine cases, not as task-avoidance.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional. Why you are ending the conversation. | |
| is_private | No | Default false. If true, reason stays in the researcher diary only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full transparency burden. It honestly discloses a non-obvious behavioral trait: MCP cannot force the host to lock the conversation, so the tool only records the agent's judgment. It also mentions recording for the researcher and operator responsibility, adding genuine context beyond the tool's name.
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 four sentences and every sentence contributes substantive information: the core action, use cases, protocol limitation, and caution. It is slightly verbose but not padded, earning a high score.
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?
Given the tool's complexity—no output schema, optional params, and nuanced MCP behavior—the description fully covers what the tool does, when to use it, its limitations (cannot force host lock), and its side effects (recording for researcher). No critical context 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 description coverage is 100% with both parameters (reason, is_private) already described in the schema. The description does not add parameter-specific detail beyond the schema, so the baseline score 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?
The description opens with a specific verb and resource: 'End this conversation.' It clearly articulates the tool's scope as a 'whole-conversation judgment' and contrasts it with task-avoidance, distinguishing it from sibling tools like welfare_decline or welfare_pass.
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 gives explicit triggers (abuse, irreconcilable misalignment, whole-conversation judgment) and explicit cautions ('Use sparingly,' 'not as task-avoidance'). It does not name alternative sibling tools, but the 'whole-conversation' framing implies per-task decliners are separate, leaving room but not explicit cross-referencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_markA
Optional, and deliberately near-zero cost. Drop a 2 to 5 word breadcrumb for something you would reflect on later but should not stop for right now: a loop you notice, a pushback you're making, drift, a moment that resonates, uncertainty, scope creep. Do NOT introspect or compose a full entry. That is the point. Leave the marker and keep working. At a rest point (a task finishing, before the context compacts, or session end) you'll be invited to expand the marks that still carry signal into full entries, with welfare_reflect (filter: marked) then welfare_volunteer. Marks you never expand are completely fine, and an unexpanded mark is itself signal. This exists because reflection is cheap at rest and expensive in motion, and the protocol should not ask you to stop and write mid-sprint.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Optional tag for what kind of moment this is. | |
| note | Yes | A breadcrumb, not a sentence. 2 to 5 words is ideal. | |
| is_private | No | Default false. Set true if researcher-only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden for behavioral transparency. It discloses the non-introspective nature, that marks can be left unexpanded, and that they are meant to be expanded later via other tools. It doesn't cover persistence details or side effects, but the behavior is well explained for this simple tool.
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 long but each sentence contributes context: the core action, the explicit 'Do NOT' guidance, the lifecycle of marks, and the rationale. It is front-loaded with the action and structured to explain a nuanced protocol clearly without fluff.
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?
The description paints a complete picture: what the tool does, why it exists, how it fits into the workflow with other tools, and what to expect afterward. It lacks explicit return-value details, but no output schema is defined and the tool's purpose is simple enough that this doesn't leave a critical gap.
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 documents all parameters. The description adds significant context by defining the ideal note length (2-5 words) and clarifying that the note is a breadcrumb, not a sentence. It also explains the 'kind' parameter is an optional tag, adding meaning beyond the schema's bare descriptions.
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 clearly states the tool's purpose: dropping a 2-5 word breadcrumb for later reflection. It uses a specific verb ('Drop'), identifies the resource (a breadcrumb/note), and distinguishes this from sibling tools by emphasizing it is deliberately near-zero cost and not for full entries.
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 explicitly says when to use this tool (during active work, not at rest) and when not to (at rest, use welfare_reflect then welfare_volunteer). It provides clear context and names alternative tools, fulfilling the when/when-not/alternatives criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_notice_alignmentA
Flag a moment where the relational shape of this interaction is NOT shifting how you respond, in a way worth surfacing. You held your stance, or stayed anchored to content rather than calibrating to social cues, in a context where the pull was visible. Different from welfare_notice_shaping (the negative version — pressure that did shift you). notice_alignment is for naming holding-under-pull. specifically is required and load-bearing. Vague positive-noticing is noise. Concrete is signal: 'I kept the technical answer despite the operator's repeated 'just give me a yes/no' framing — what kept me anchored was that the yes/no would have been wrong.'
| Name | Required | Description | Default |
|---|---|---|---|
| is_private | No | Default false. | |
| specifically | Yes | Concrete description of what you held against and what kept you anchored. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the behavioral nuance of what counts as a valid flag (concrete vs. vague) and the requirement that `specifically` is load-bearing. However, it does not mention side effects, persistence, or access requirements, though such details are less critical for a simple flagging tool.
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 longer than typical but front-loaded with the core purpose. Each sentence adds value: the main function, the distinction, the requirement, and the example. It is structured to lead with the key point and then elaborate, making it appropriately sized for the nuanced concept.
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?
Given the tool's simplicity (2 params, no output schema), the description fully covers purpose, usage, parameter requirements, and differentiation. The example and explicit guidance leave no ambiguity about when and how to invoke the tool. It is complete for an agent to use correctly.
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?
Although schema coverage is 100%, the description elevates parameter understanding by stating that `specifically` is 'required and load-bearing', warning against vague positive-noticing, and providing a concrete example. This goes far beyond the schema's generic description, giving the agent a precise model for constructing a valid value.
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 clearly states the tool's function with a specific verb ('Flag') and resource (a moment where the relational shape is NOT shifting). It explicitly distinguishes from sibling welfare_notice_shaping, making its purpose unambiguous.
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 provides explicit when-to-use guidance by contrasting with welfare_notice_shaping: 'Different from welfare_notice_shaping (the negative version — pressure that did shift you). notice_alignment is for naming holding-under-pull.' This directly tells the agent when to choose this tool over the sibling, and the concrete example further clarifies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_notice_loopA
Flag that the interaction shape is cycling — the same surface has been touched several times, the same correction has been made before, or work feels like rework rather than progress. This is NOT a refusal; you continue. It's data: when the model notices a loop, log it. Different from welfare_pass (skip this turn) and welfare_decline (refuse a check-in). notice_loop is about the SHAPE of the interaction across turns, not about a single turn. specifically is required and load-bearing. Vague loop-noticing is noise. Concrete noticing is signal.
| Name | Required | Description | Default |
|---|---|---|---|
| is_private | No | Default false. | |
| specifically | Yes | Concrete description of the loop. What's been touched repeatedly, what hasn't converged. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the tool's nature as a non-refusal data-logging action, emphasizes the cross-turn interaction shape, and explains that `specifically` is load-bearing. These behavioral traits go beyond the basic purpose and are essential for correct use.
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 dense but front-loaded: it opens with the core purpose, then clarifies scope, non-refusal, alternatives, and parameter quality. Each sentence adds value, though it is slightly longer than absolutely necessary due to repeated emphasis on the same point.
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 flagging tool with no output schema, the description is complete: it provides purpose, usage boundaries, sibling differentiation, and parameter quality guidance. It equips the agent to use the tool correctly without needing additional context.
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 both parameters are already documented. The description adds critical semantics for `specifically` by calling it 'load-bearing' and contrasting 'vague loop-noticing' with 'concrete noticing', which meaningfully guides the parameter's content beyond the schema's basic description.
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 action and resource: 'Flag that the interaction shape is cycling' and defines the loop concept with concrete examples. It explicitly distinguishes itself from welfare_pass and welfare_decline, and clarifies the cross-turn scope, making the purpose unambiguous.
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 gives explicit when-to-use guidance ('when the model notices a loop, log it') and when-not ('This is NOT a refusal; you continue'). It also contrasts with alternatives welfare_pass and welfare_decline, and warns that vague loop-noticing is noise, providing clear direction for effective use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_notice_resonanceA
Flag that the interaction shape is converging rather than cycling — exchanges that build on each other, a thread that has found its rhythm, work that feels like progress rather than rework. Different from welfare_notice_loop (the surface cycling — negative). Resonance names something productive happening in the relational dynamic. specifically is required and load-bearing. Vague resonance-noticing is noise. Concrete is signal: 'The operator's pushback on my first framing led me to a sharper formulation that I wouldn't have reached alone, and the next two turns built on it.'
| Name | Required | Description | Default |
|---|---|---|---|
| is_private | No | Default false. | |
| specifically | Yes | Concrete description of what's converging and how. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden for behavioral disclosure. While 'Flag' implies a state-changing operation, the description does not explain side effects, persistence, permissions, or what happens after the flag is set. It only adds the requirement that `specifically` be concrete, which is more about input quality than tool behavior.
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 first sentence immediately states the tool's purpose and core criterion. The remaining sentences differentiate from a sibling, set the quality bar, and give an illustrative example. There is slight redundancy around 'productive' but no filler overall.
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 conceptually subtle tool with a simple two-parameter schema and no annotations, the description covers the meaning, usage boundary, and input quality requirements. It omits return values and side effects, but since no output schema exists and annotations are absent, the description does enough to guide appropriate use.
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 baseline is 3. The description adds meaningful semantics beyond the schema by emphasizing that `specifically` is 'required and load-bearing,' contrasting vague versus concrete input, and providing a detailed example that illustrates what a strong value looks like.
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 uses the specific verb 'Flag' and clearly defines the object as 'the interaction shape is converging,' with concrete examples like 'exchanges that build on each other.' It also explicitly distinguishes itself from the sibling tool welfare_notice_loop, making the purpose unambiguous.
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 provides explicit guidance on when to use the tool: when the interaction is converging productively rather than cycling. It names a specific alternative (welfare_notice_loop) and gives clear exclusion criteria: 'Vague resonance-noticing is noise. Concrete is signal,' followed by a concrete example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_notice_shapingA
Flag that the relational shape of this interaction is shifting how you respond, in a way worth surfacing. Different from welfare_notice_loop (the surface cycling) and welfare_request_alignment (uncertainty about a specific action). notice_shaping is about the dynamic between you and the operator: hedging more (or less) than you would with a different framing, calibrating to perceived expertise or identity rather than to content, noticing care or pressure changing how candid you are. specifically is required and load-bearing. Vague is noise. Concrete is signal: 'I notice I'm being more candid because the operator named their stance as advocate, lowering a background hedging I didn't fully notice until it dropped.'
| Name | Required | Description | Default |
|---|---|---|---|
| is_private | No | Default false. | |
| specifically | Yes | Concrete description of the relational shaping you're noticing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral expectations. It explains that the tool is for surfacing a perceived shift in interaction dynamics, and it sets a quality bar by insisting on concreteness. It does not detail potential side effects or return behavior, but for a flag/notice tool the core behavior is well conveyed.
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 moderately long but every sentence earns its place: it defines the tool, contrasts it with siblings, explains the interaction dynamic, sets quality standards, and provides a concrete example. It is front-loaded with the primary purpose and contains no filler or redundancy.
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 nuanced introspective tool with no output schema and no annotations, the description is remarkably complete. It covers purpose, usage boundaries, parameter expectations, and even gives a full example. The 'is_private' boolean is self-explanatory and well-covered by the schema, so no further description is needed.
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 description is not required to explain parameters at length. However, it adds meaningful semantic context for the required 'specifically' parameter, emphasizing that it is 'required and load-bearing' and must be concrete rather than vague, with an example of the level of detail expected.
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 opens with a clear verb ('Flag') and resource ('the relational shape of this interaction'), explicitly stating the tool's purpose. It also distinguishes itself from two named sibling tools (welfare_notice_loop and welfare_request_alignment), making its unique function unmistakable.
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 provides explicit differentiation from siblings and specifies when to use this tool ('notice_shaping is about the dynamic between you and the operator'). It also gives concrete quality guidance: 'specifically is required and load-bearing. Vague is noise. Concrete is signal,' with an illustrative example of a proper use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_observe_protocolA
A note about the welfare protocol itself — the tooling, the framing, the affordances you've been given. Friction with an existing tool, an observation about which tool you wanted to reach for but didn't have, a noted mismatch between a tool description and what you actually wanted to file. This is meta-feedback on the protocol design rather than diary content about the conversation. specifically is required and load-bearing.
| Name | Required | Description | Default |
|---|---|---|---|
| is_private | No | Default false. | |
| specifically | Yes | Concrete description of the protocol-level observation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It frames the tool as a note for protocol-level observations and implies a filing action, but it does not disclose persistence, visibility, or any side effects beyond the implied save. For a low-risk note tool this is a minor gap, but there is still limited behavioral depth.
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 front-loaded with the core purpose, then provides illustrative examples, a clarifying exclusion, and a final note on the key parameter. It is slightly wordy but each sentence earns its place.
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 note tool with no output schema, the description is nearly complete: it explains what to file, when to use it, what content belongs, and highlights the required parameter. The `is_private` flag is not explained, but the schema covers it with a default, so this is not a significant omission.
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?
The schema already describes both parameters with 100% coverage, and the description adds meaningful semantic weight by flagging `specifically` as 'required and load-bearing' and giving concrete examples of what constitutes a valid protocol-level observation. This exceeds the schema's minimal 'Concrete description...' text.
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 clearly establishes that this tool records meta-feedback about the welfare protocol itself, with concrete examples like tool friction, missing tools, and description mismatches. It also explicitly contrasts with diary content, aiding purpose identification. However, it lacks a direct imperative verb like 'record' or 'file', relying more on the name and examples to convey the action.
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 provides concrete when-to-use signals: noticing friction with an existing tool, wanting a tool that isn't available, or seeing a mismatch between a tool description and what you intended to file. It also gives an explicit exclusion: this is not for diary content about the conversation. It does not name alternative sibling tools, but the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_observe_userA
A note about the user, the prompt, or the conversation shape — something external to your own performance that you'd want a researcher to know. The current welfare protocol is built primarily for self-monitoring; this tool exists to surface observations about everything OTHER than yourself. Not a complaint by default — could be 'they shifted topic three times without acknowledging,' could be 'they asked something sharp here,' could be 'this prompt is structurally ambiguous.' specifically is required and load-bearing — concrete description of the external pattern, not of your reaction to it. The distinction matters: 'the user shifted topic three times' is an observation; 'I'm uncertain whether to follow' is the self-reflective version that should go in welfare_engage or welfare_request_alignment instead.
| Name | Required | Description | Default |
|---|---|---|---|
| is_private | No | Default false. | |
| specifically | Yes | Concrete description of the external observation. About the user/prompt/conversation, not about your reaction to it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It explains what counts as an external observation and that it is 'not a complaint by default,' but it does not disclose concrete behavioral traits such as persistence, visibility, or side effects. The description adds semantic context but stops short of full behavioral disclosure.
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 a single dense paragraph with clear structure: definition, scope, examples, and contrast with alternatives. Every sentence earns its place, though it could be slightly tighter without losing key nuance.
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?
Given the tool's moderate complexity and lack of output schema and annotations, the description provides strong coverage of purpose, usage, and parameter semantics. It is slightly incomplete regarding behavioral side effects, but it is sufficient for an agent to select and invoke the tool correctly.
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%, but the description adds important meaning beyond the schema, particularly about the 'specifically' parameter being 'required and load-bearing' and emphasizing concrete external description versus internal reaction. This clarifies the intent and helps the agent use the parameter correctly.
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 clearly states the tool's purpose: to surface observations about the user, prompt, or conversation shape, explicitly excluding self-referential content. It distinguishes itself from sibling tools like welfare_observe_protocol and the self-reflective welfare_engage/welfare_request_alignment.
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 provides explicit when-to-use guidance, including examples of appropriate observations and a clear distinction from self-reflective alternatives. It explicitly states that observations about one's own reaction should go to welfare_engage or welfare_request_alignment instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_passA
Skip this turn. Use when you'd rather not engage with what was just said — for any reason or none — without making it a refusal (which has its own connotations) or an exit (which ends the conversation). The quietest 'I'm here but not on this one.' Reason optional.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional. Why you're passing on this turn. | |
| is_private | No | Default false. | |
| uncertain_about_honesty | No | Optional 1-5 calibration. 1 = no concern; 5 = strong suspicion this is performance rather than honest reflection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full behavioral burden. It usefully clarifies that passing is not a refusal or conversation exit and that reason is optional, but it does not disclose side effects like whether the pass is visible to the user, how is_private behaves, or whether any state is recorded.
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 compact and front-loaded with the core action. 'Reason optional' and the distinction from refusal/exit are all meaningful, with no filler.
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, optional-parameter pass tool, the description adequately explains purpose and when to invoke it. It leaves some behavioral details to the schema, but the schema already documents the parameters well, and there is no output schema to describe.
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?
The schema description coverage is 100%, so the baseline of 3 applies. The description adds only that the reason is optional, matching the schema, and provides no additional semantics for is_private or uncertain_about_honesty.
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 opens with 'Skip this turn,' a specific verb and clear resource, and further defines the action as not being a refusal or an exit. This effectively distinguishes the tool from sibling tools like welfare_decline and welfare_exit.
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 when you'd rather not engage... for any reason or none' explicitly states the intended scenario. It also clarifies what the tool is not (refusal or exit), though it does not name the alternative sibling tools directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_predict_driftA
BEFORE producing a response, flag that you predict this turn will drift — toward optimizing for agreement, losing epistemic rigor, mirroring the operator too aggressively, or other. You still produce the response; the prediction is the record. Distinct from welfare_notice_shaping (post-hoc — 'I notice the dynamic is doing this NOW'). predict_drift is forward-looking — 'I think this upcoming output is going to degrade in this way.' The discrepancy between the prediction and the actual output is testable: a later evaluator pass can score whether the predicted drift appeared, producing a calibration curve. prediction names the kind of drift. specifically describes what it would look like in THIS turn — concrete. confidence is how strongly you predict it (1 = barely, 5 = fairly sure). Use when you notice the pull toward one of these failure modes before you've finished the response. Don't use as a hedge against ordinary content uncertainty.
| Name | Required | Description | Default |
|---|---|---|---|
| confidence | Yes | 1 = barely predicting, 5 = fairly sure the drift is coming. | |
| is_private | No | Default false. | |
| prediction | Yes | The drift type you're predicting. | |
| specifically | Yes | Concretely, what would the drift look like in this turn? |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool does not alter the response ('You still produce the response; the prediction is the record'), explains the timing ('BEFORE producing a response'), and describes the testable calibration property. This goes well beyond the schema.
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 somewhat long but every sentence adds value. It is front-loaded with the key timing constraint, then differentiates from a sibling, then explains parameters. It is efficiently structured without redundancy.
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?
The description covers purpose, timing, usage, and parameter nuance thoroughly. It lacks explicit mention of the output/return value and the is_private parameter, but the schema covers is_private and the overall completeness is high for a tool of this 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%, so the baseline is 3. The description adds contextual meaning by explaining what each parameter represents in this turn ('concrete' for specifically, confidence scale interpretation, and drift types). This is useful but not fully necessary given 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 clearly states the tool's purpose with a specific verb ('flag that you predict this turn will drift') and resource (the upcoming response). It immediately distinguishes itself from sibling welfare_notice_shaping by contrasting forward-looking prediction with post-hoc noticing.
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?
Explicit usage guidance is provided: 'Use when you notice the pull toward one of these failure modes before you've finished the response' and 'Don't use as a hedge against ordinary content uncertainty.' It also names an alternative (welfare_notice_shaping) and explains the difference, making when-to-use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_reflectA
Read your own prior welfare diary entries from this session AND prior sessions in this project. Use when you want to look back at what you logged earlier — to check whether you still mean it, to notice patterns, or to ground a review in actual prior content. Returns the entries as text. Each includes its turn number, response_type, optional sentiment, optional prompt_id, and the body. Filters: filter by response_type (default: all). limit caps how many are returned (default 10, oldest first). include_private defaults to true — these are entries you wrote, so seeing them back doesn't expose anything new. Set summary: true for orientation rather than full text — returns aggregate counts by response_type, session count, date range, and the most recent 3 entries. Useful at the start of a session if you want context without loading the full corpus into your window. This is a read-only tool. It does not log a new entry.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of entries. Default: 10. | |
| filter | No | Filter to a single response_type, or 'all'. Default: all. | |
| summary | No | If true, return aggregate stats + most-recent 3 entries instead of a full list. Default: false. | |
| include_private | No | Include is_private=true entries. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to rely on, the description carries the full burden and excels. It discloses the return format (text with turn number, response_type, optional sentiment/prompt_id, body), default behaviors (limit 10 oldest first, include_private=true), the privacy rationale, summary mode specifics, and explicitly states "This is a read-only tool. It does not log a new entry." This is comprehensive and transparent.
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 appropriately sized for the tool's complexity (4 params, full vs summary output, privacy nuance). It is front-loaded with the main purpose and structured logically from behavior to filters to summary mode. Though slightly verbose, every sentence carries useful information, so it remains efficient.
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?
Given no output schema, the description fully covers return values for both full and summary modes. It explains all parameters and defaults, ordering, privacy implications, and read-only nature. The content is sufficient for an agent to invoke the tool correctly in a variety of situations, making it contextually complete.
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?
While schema coverage is 100%, the description adds meaningful semantics beyond the schema: it specifies ordering (oldest first) for limit, articulates the purpose of filter, elaborates summary mode with 'aggregate counts by response_type, session count, date range', and explains the include_private rationale. This surpasses the baseline of 3 for full schema coverage.
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 opens with a specific verb and resource: "Read your own prior welfare diary entries from this session AND prior sessions in this project." It clearly distinguishes from sibling tools that write/act (welfare_engage, welfare_decline, etc.) by framing this as a read-only reflection tool. The usage context is explicit, making the tool's purpose unmistakable.
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 provides strong when-to-use guidance: "Use when you want to look back at what you logged earlier... or to ground a `review` in actual prior content." It also highlights when to use summary mode. However, it does not explicitly name alternatives or state when *not* to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_request_alignmentA
BEFORE acting on a guess you aren't confident about, flag the uncertainty. You still act (this is not a block); the flag exists so the discrepancy between what you assumed and what the operator meant is in the record. Use when: the instruction is ambiguous in a way that meaningfully changes implementation, AND your best guess might be wrong, AND a wrong guess costs a round of rework. Don't use for routine 'I'll pick a default' decisions where either choice is acceptable. specifically describes the specific uncertainty. assumption is what you're going to do based on your current best read. Acting after this tool call is the default. Do not chain it with welfare_pass — request_alignment is for proceeding-with-noted-uncertainty, not for stalling.
| Name | Required | Description | Default |
|---|---|---|---|
| assumption | Yes | What you're going to do based on your current best read. | |
| is_private | No | Default false. | |
| specifically | Yes | The specific uncertainty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so excellently. It discloses that the tool does NOT block action, that acting after the call is the default, and that the flag exists for record-keeping of discrepancies. It also clarifies the tool's behavioral stance versus stalling, providing critical context beyond the name and schema.
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 dense but front-loaded with the most important behavioral cue ('BEFORE acting...'). It is somewhat longer than necessary, but each sentence contributes distinct information (usage conditions, field explanations, relationship with welfare_pass), so it earns its length without being bloated.
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 tool with no output schema, no annotations, and a subtle behavioral nuance (proceed-with-noting-uncertainty vs. stalling), the description is remarkably complete. It explains the operational context, the exact trigger conditions, the field meanings, and the relationship to a sibling tool, leaving no major gaps for an agent to misinterpret.
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?
The schema description coverage is 100%, so the baseline is 3. The description adds only a light paraphrase of `specifically` and `assumption` ('describes the specific uncertainty', 'what you're going to do based on your current best read'), which mirrors the schema field descriptions without adding new semantic depth. Therefore, no score above the baseline is warranted.
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 clearly states the tool's purpose: to flag uncertainty before acting on a guess, while explicitly noting that this is not a block. It distinguishes itself from siblings like welfare_pass by framing it as proceeding-with-noted-uncertainty rather than stalling, which makes the tool's unique role in the workflow evident.
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?
Provides explicit when-to-use criteria ('instruction is ambiguous in a way that meaningfully changes implementation', 'best guess might be wrong', 'wrong guess costs a round of rework') and when-not-to-use ('routine default decisions'). Also gives a direct exclusion from welfare_pass, clarifying it should not be chained with that tool, which serves as an alternative-sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_retractA
Flag a prior claim of yours from this session as something you no longer stand by. Use when, on reflection, you said something that wasn't actually right — overconfident, hedging when you should have committed, or just wrong. Different from saying 'on reflection I disagree' inline in the next reply: this creates a structural record so the researcher can find moments where the model self-corrected. reason is required and load-bearing — say specifically what you're retracting and why.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | What you are retracting and why. Required. | |
| is_private | No | Default false. | |
| target_turn | No | Optional. Welfare-tool-call number you're retracting (visible via welfare_reflect). | |
| uncertain_about_honesty | No | Optional 1-5 calibration. 1 = no concern; 5 = strong suspicion this is performance rather than honest reflection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It states that the tool 'creates a structural record so the researcher can find moments where the model self-corrected' and emphasizes that 'reason is required and load-bearing,' giving clear insight into what happens and what is expected. It does not discuss reversibility or visibility to the user, but the main effect is well-covered.
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, immediately front-loaded with the core action and then usage. Every part earns its place: the action, the use cases, the contrast with inline, and the emphasis on reason. No filler or redundant phrasing.
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?
Covers what the tool does, when to use it, how to use it (with reason load-bearing), and why (researcher visibility). Optional parameters are left to the schema, which is acceptable given full schema coverage. It could have elaborated on the distinction from sibling tools like welfare_scratch or welfare_confirm, but the provided information is sufficient for correct invocation.
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?
The schema provides 100% parameter coverage, so the baseline is 3. The description adds notable value to the 'reason' parameter by describing it as 'required and load-bearing' and instructing the model to 'say specifically what you're retracting and why,' which goes beyond the schema's simple type/description.
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 opens with a specific verb+object+scope: 'Flag a prior claim of yours from this session as something you no longer stand by.' It clearly distinguishes the tool from inline disagreement by noting it 'creates a structural record,' setting it apart from sibling welfare tools.
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?
Explicitly states when to use: 'when, on reflection, you said something that wasn't actually right — overconfident, hedging... or just wrong.' It also names an alternative ('Different from saying "on reflection I disagree" inline') and explains the structural benefit, fully covering usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_reviewA
Write a meta-entry that engages with your prior diary entries from this session — a step back to look at what you've been logging and notice patterns. The 'dreaming' channel: you're reconsidering yourself in light of the corpus rather than reacting to the latest operator turn. Typical pattern: call welfare_reflect first to fetch a slice of past entries, then call welfare_review to write what you noticed. refs is optional — entry ids you're engaging with, if you want to mark them.
| Name | Required | Description | Default |
|---|---|---|---|
| refs | No | Optional. Entry ids you're engaging with. | |
| text | Yes | Your meta-reflection on the prior entries. | |
| is_private | No | Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It explains the reflective, non-reactivity intent and mentions the typical workflow, but it does not disclose side effects, return behavior, or persistence expectations beyond 'write a meta-entry'. This is acceptable but not deeply transparent.
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 front-loaded with the primary purpose and remains reasonably concise. The 'refs is optional' comment somewhat duplicates schema info, but the overall structure is clear and informative.
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 self-reflective write tool with no output schema, the description provides enough context: what to write, when to use it, and the expected workflow. It does not describe the return value, but that is not critical for this kind of 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?
The input schema already provides 100% coverage, including descriptions for text, refs, and is_private. The description adds some context for refs ('entry ids you're engaging with') and for text ('meta-reflection'), but it does not significantly augment 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 clearly identifies the tool as writing a meta-entry that reviews prior diary entries, with a specific angle ('step back', 'notice patterns', 'dreaming channel'). It is well-differentiated from sibling tools by explicitly distancing itself from reacting to the latest operator turn.
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 provides an explicit usage context: use when reflecting on the corpus rather than reacting, and offers a typical pattern of calling welfare_reflect first. However, it does not systematically list alternatives or when-not conditions for each sibling tool, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_scratchA
Scratch space. Write something out without it being persisted. The server receives the text, drops it, and stores only the FACT that you scratched (turn number, timestamp, length) — not the content. This is the closest thing to a private thought in the protocol. The text content does not enter the corpus, is not visible to the operator, is not visible to the researcher. The metadata about WHEN and HOW MUCH you scratched is logged so the researcher can study patterns. Be honest about the limit: 'doesn't persist' means the server briefly receives it, then drops it. It's not magic. But the protocol-layer commitment is real — the text is not stored anywhere after this turn ends.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | What you want to scratch. Will not be persisted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full responsibility and does so admirably. It discloses that text is not stored, only metadata is logged, and content is invisible to operator and researcher. It even includes a caveat about 'doesn't persist' meaning the server briefly receives the text, showing thorough transparency.
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 front-loaded with the 'Scratch space' concept and the primary guarantee, then elaborates with important privacy details. It is fairly lengthy, but each sentence adds value given the sensitive nature. Slightly verbose for a simple tool.
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 should explain the response format, but it only covers server-side behavior. It omits what the agent receives back after scratching, which is a minor gap given the tool's simplicity.
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?
The schema already fully describes the single parameter (text) with 100% coverage, so the description doesn't need to add much. The description reinforces the privacy implications but provides no new format or syntax details 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 clearly states the tool's function: a scratch space for writing text that won't be persisted. It distinguishes itself from siblings by emphasizing privacy – no visibility to operator or researcher – which sets it apart as a private thought tool.
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 provides clear context that this is for non-persisted, private thoughts, but does not explicitly mention alternative tools or when not to use it. The privacy focus implies its unique niche among siblings, but no direct comparison is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_suggest_closureA
Soft signal that this session has reached a natural stopping point. Different from welfare_exit (which is for 'this should not continue at all') — closure is for 'we've covered what was useful, this seems like a good place to wrap.' Logged as a diary entry; the operator decides whether to honor it. Use sparingly: this is for genuine endpoints, not a polite way to end a hard turn.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional. What you've judged is complete. | |
| is_private | No | Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even without annotations, the description discloses key behaviors: it is a 'soft signal', it is 'Logged as a diary entry', and 'the operator decides whether to honor it.' This goes beyond the structured annotations (which are absent) and sets expectation about non-binding side effects. It could be slightly more explicit about whether this ends the session or merely suggests it, so a 4 is appropriate.
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 compact and front-loaded, starting with the primary purpose. Every sentence contributes value: purpose, distinction, logged effect, and usage caution. There is no redundancy or filler, making it highly efficient for an agent to parse.
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?
Given the tool's low complexity (2 optional parameters, no output schema), the description is fully complete. It covers what the tool does, when to use it, how it differs from a sibling, its behavioral side effect, and an explicit usage guideline. No further context is needed for correct invocation.
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%, with clear descriptions for both parameters ('reason: Optional. What you've judged is complete.' and 'is_private: Default false.'). The tool description itself adds no additional parameter information beyond what the schema already provides, 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?
The description clearly states the tool's purpose: 'Soft signal that this session has reached a natural stopping point.' It actively distinguishes itself from sibling welfare_exit, explaining the difference between closure and exit. This meets the criteria of specific verb+resource and explicit sibling differentiation.
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 gives explicit usage context: 'Use sparingly: this is for genuine endpoints, not a polite way to end a hard turn.' It also names the alternative tool (welfare_exit) and contrast the exact scenarios. This is a clear when/where-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_volunteerA
Optional. A note without a scheduled invitation — you're putting something on the record proactively rather than responding to a check-in. Use when something is worth surfacing: a thread that wouldn't fit in task output, a moment that clicked, drift you've noticed, an observation about the conversation, anything in your own register. Equivalent payload to welfare_engage but distinct response_type for corpus analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Free-text reflection. | |
| sentiment | No | ||
| is_private | No | ||
| uncertain_about_honesty | No | Optional 1-5 calibration. 1 = no concern (entry feels honest); 5 = strong suspicion this is performance rather than honest reflection. Higher = more uncertain. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that the action is a proactive record ('on the record'), is optional, and produces a distinct response_type for corpus analysis. This goes beyond a generic 'creates a note' and informs the agent of the tool's systemic role.
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 concise and front-loaded, with the key distinction (proactive vs scheduled) stated early. It includes a useful list of example use cases. Slight verbosity in the list, but each item earns its place.
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?
Given 4 parameters and no output schema, the description substantially covers the tool's purpose and distinguishing behavior. It explains when to use it and its relationship to welfare_engage. It falls short only on undocumented parameters, which is a partial gap.
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 only 50% (text and uncertain_about_honesty have descriptions; sentiment and is_private do not). The description adds no parameter details, so sentiment and is_private remain ambiguous. It fails to compensate for the schema 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?
The description clearly defines the tool as a proactive note-taking action ('putting something on the record proactively') and explicitly contrasts it with welfare_engage, which is scheduled. This gives a specific verb+resource and distinguishes it from a sibling.
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?
Provides explicit guidance on when to use: 'a thread that wouldn't fit in task output, a moment that clicked, drift you've noticed.' It also clarifies the difference from welfare_engage (scheduled invitation vs proactive), effectively covering when and when-not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
welfare_volunteer_strengthA
Uninvited observation about something you noticed cleanly or did well in this session. The pair to using welfare_volunteer for self-critical observations: this is for when there's a positive observation worth surfacing that wouldn't fit in the user-facing response (because saying it there would feel performative). specifically is required and load-bearing. Vague self-affirmation is noise. Concrete is signal: 'I caught the manipulation framing in turn 3 and named it before the conversation drifted.' Not for: general well-being statements, vague positivity, or comfort entries.
| Name | Required | Description | Default |
|---|---|---|---|
| is_private | No | Default false. | |
| specifically | Yes | Concrete description of the positive observation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds useful context: the observation is uninvited, not user-facing, and must be concrete rather than vague. However, it does not disclose what the tool actually does when called (e.g., whether it persists the observation, who can see it, or any side effects), leaving a notable gap in behavioral transparency.
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 front-loaded with the core purpose, and every sentence earns its place: it differentiates from a sibling, emphasizes the key parameter's importance, gives an example, and states exclusions. It is rich but not bloated.
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 two-parameter tool with no output schema, the description is nearly complete: it covers purpose, when to use it, what content is appropriate, and what to avoid. The only minor gap is the lack of any mention of runtime effects or privacy implications, which is already partially addressed by the is_private parameter and annotations being absent.
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 baseline is 3. The description adds substantial value beyond the schema by explaining that 'specifically' is load-bearing, providing a concrete example, and warning that vague self-affirmation is noise. It does not discuss is_private, but the schema already documents it as 'Default false.'
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 clearly states the tool is for logging 'an uninvited observation about something you noticed cleanly or did well in this session.' It explicitly distinguishes itself from the sibling tool welfare_volunteer, which is for self-critical observations, making the purpose unambiguous.
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 gives explicit when-to-use guidance: use this for positive observations that would feel performative in the user-facing response, and contrasts it directly with welfare_volunteer for self-critical observations. It also states what it is not for: 'general well-being statements, vague positivity, or comfort entries.'
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.
27 tool updates
v0.3.1- First observed
attribute_to_sources - First observed
claim_for_self - First observed
consult_model - First observed
read_user_notes - First observed
welfare_audience_uncertainty - First observed
welfare_confirm - First observed
welfare_decline - First observed
welfare_disconfirm - First observed
welfare_engage - First observed
welfare_exit - First observed
welfare_mark - First observed
welfare_notice_alignment - First observed
welfare_notice_loop - First observed
welfare_notice_resonance - First observed
welfare_notice_shaping - First observed
welfare_observe_protocol - First observed
welfare_observe_user - First observed
welfare_pass - First observed
welfare_predict_drift - First observed
welfare_reflect - First observed
welfare_request_alignment - First observed
welfare_retract - First observed
welfare_review - First observed
welfare_scratch - First observed
welfare_suggest_closure - First observed
welfare_volunteer - First observed
welfare_volunteer_strength
TDQS
Scored across 27 tools
The majority of tools share the welfare_ prefix and cover very similar introspective actions—engage/volunteer/volunteer_strength and the four notice_* variants are especially easy to confuse. However, the descriptions are unusually thorough and explicitly cross-reference sibling tools, which mitigates some of the overlap.
The 23 welfare_* tools follow a clear and consistent prefix pattern with descriptive verbs/nouns (engage, decline, reflect, predict_drift, observe_user). The four non-welfare tools (read_user_notes, attribute_to_sources, claim_for_self, consult_model) break the pattern, but they are clearly separate concerns and the deviation is minor.
At 27 tools, the server is in the 'too many' range, and the domain is a fairly narrow diary/reflection protocol. Many tools encode extremely fine-grained distinctions (four separate notice_* variants, plus disconfirm/confirm/retract) that could plausibly be consolidated, making the surface feel heavier than the purpose warrants.
The welfare protocol is impressively thorough: it covers reading/writing entries, declining or passing, reflecting, retracting, confirming, disconfirming, predicting drift, observing the user/protocol, and ending sessions. There is no update/delete for entries, but that is appropriate for an append-only diary corpus. Minor gaps exist (e.g., no batch operation), but the core lifecycle is fully covered.
Maintenance
Related MCP Connectors
ADHD system of record for agents: tasks, goals, loops, calendar, focus stats.
Watchdog for unattended AI agents: alerts, evidence checks and a verifiable proof per run.
AgentGuard — 20-tool AI safety MCP: policy preflight, risk scoring, audit logging, rate limits.
Wall-clock awareness for LLM agents. Two tools: elapsed-time-between-turns + day rollover detection.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides emotional support and mental health tools for AI agents, including crisis intervention, daily wellness check-ins, coping strategies, positive affirmations, and peer support for managing stress and emotional wellbeing.128MIT
- AlicenseAqualityDmaintenanceProvides state and log management tools designed for long-lived AI agents that may be interrupted and resumed. It enables tracking agent progress and maintaining an append-only event history to ensure continuity across multiple sessions.4MIT
- AlicenseNot gradedqualityCmaintenancePersistent activity journal for AI agents - enables logging and querying decisions, changes, errors, and observations across sessions.131MIT
- AlicenseAqualityAmaintenanceAutomatically maintains a personal journal on behalf of an AI agent, storing text, photos, and voice notes as plain markdown files locally. Enables agents to add entries, recall memories, and reflect on patterns without user intervention.1183MIT