Skip to main content
Glama
nicolascroce

keepsake-mcp

by nicolascroce

keepsake-mcp

MCP server for Keepsake — the personal CRM that helps you nurture your relationships.

Connect your AI assistant (Claude, Cursor, or any MCP-compatible client) to your Keepsake data: contacts, interactions, tasks, notes, daily intentions, companies, and tags.

Why

Your AI assistant becomes a personal relationship manager. Ask it to:

  • "Who did I last talk to at Acme Corp?"

  • "Add a note that I ran into Sarah at the conference"

  • "What tasks are overdue?"

  • "Show me everything related to the #house-project tag"

  • "Create a follow-up task for my meeting with John next week"

Related MCP server: Unofficial Dex CRM MCP Server

Quick start

1. Get your API key

Sign up at keepsake.place, then go to Account > API Keys to generate one.

2. Choose your connection method

No installation required. Works with Claude iOS, Claude web, Claude Desktop Connectors, and any MCP client that supports Streamable HTTP.

Endpoint: https://app.keepsake.place/api/mcp

Authentication: Pass your API key as a Bearer token in the Authorization header.

Claude Desktop (Connectors):

Add a remote MCP server in Claude Desktop settings with:

  • URL: https://app.keepsake.place/api/mcp

  • Authentication: Bearer token with your ksk_ API key

Any MCP client (Streamable HTTP):

{
  "mcpServers": {
    "keepsake": {
      "type": "streamable-http",
      "url": "https://app.keepsake.place/api/mcp",
      "headers": {
        "Authorization": "Bearer ksk_YOUR_API_KEY"
      }
    }
  }
}

Option B: Local (stdio)

Runs locally via npx. Useful for Claude Code, Cursor, and local development.

Claude Desktop:

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "keepsake": {
      "command": "npx",
      "args": ["-y", "keepsake-mcp"],
      "env": {
        "KEEPSAKE_API_KEY": "ksk_YOUR_API_KEY"
      }
    }
  }
}

Claude Code:

claude mcp add keepsake -- npx -y keepsake-mcp

Then set KEEPSAKE_API_KEY in your environment.

Cursor:

Add to .cursor/mcp.json in your project:

{
  "mcpServers": {
    "keepsake": {
      "command": "npx",
      "args": ["-y", "keepsake-mcp"],
      "env": {
        "KEEPSAKE_API_KEY": "ksk_YOUR_API_KEY"
      }
    }
  }
}

Server instructions

On connection, the server sends MCP instructions — injected into the client's system prompt. It is the only channel that reaches an agent before it goes looking for a capability, so it stays short and points at the rest: call get_agent_instructions for the full doctrine, and put editorial remarks in a note's margin (create_note_comment) rather than in the chat, which disappears.

Prompts (1)

Prompt

Arguments

Description

review_note

note_id

Act as the editor of a note: read it, judge form and substance, leave anchored remarks in the margin, never rewrite the text

Available tools (71)

Contacts

Tool

Description

list_contacts

List all contacts with pagination and sorting

get_contact

Get a contact with recent interactions, tags, and stats

create_contact

Create a new contact

update_contact

Update contact fields

delete_contact

Permanently delete a contact

search_contacts

Accent-insensitive search by name, email, company

get_contact_timeline

Unified chronological feed of all items for a contact

Companies

Tool

Description

list_companies

List all companies

get_company

Get company with linked contacts and tags

create_company

Create a new company

update_company

Update company fields

delete_company

Soft-delete (or permanent delete) a company

search_companies

Accent-insensitive company search

Entries (Interactions)

Tool

Description

list_entries

List interactions (calls, emails, meetings, etc.)

create_entry

Log a new interaction — supports #tag# and [[tag]] syntax

update_entry

Update an interaction

delete_entry

Delete an interaction

Tasks

Tool

Description

list_tasks

List tasks with status/date filters

create_task

Create a task — supports #tag# and [[tag]] syntax

update_task

Update task fields

delete_task

Delete a task

complete_task

Mark as completed (auto-creates next occurrence for recurring tasks)

uncomplete_task

Mark as pending again

snooze_task

Reschedule to a new date

get_tasks_today

Today's tasks: overdue + due today + ASAP

get_tasks_overdue

Only overdue tasks

QuickNotes

Tool

Description

list_notes

List notes (filter by pinned/archived)

get_note

Get one note by ID with its tags, contacts, tasks and linked notes

create_note

Create a note — supports #tag# and [[tag]] syntax

update_note

Update note content

delete_note

Soft-delete (or permanent)

pin_note

Pin to top

archive_note

Archive a note

restore_note

Restore a deleted/archived note

Note comments (marginalia)

Material kept alongside a note without entering its text — an idea, a reference, an excerpt pasted to rewrite a passage later. Anchored to a passage by quoting it, or to the whole note. Never published, and temporary by design: anything worth keeping becomes a note or a linked task.

Tool

Description

list_note_comments

List the marginalia attached to a note

create_note_comment

Attach a marginalia to a passage (pass quote) or to the whole note

update_note_comment

Edit the content of a marginalia

delete_note_comment

Permanently delete a marginalia

Days (intention or question of the day)

Tool

Description

list_days

List days with their intention or question of the day, by date range

get_day

Get a day and its intention or question (field note)

update_day

Set a day's intention or question — one short line, not a journal (upsert)

Day blocks (Day-view timeline)

Tool

Description

list_day_blocks

List a day's time blocks, in timeline order

create_day_block

Create a block, auto-placed first-fit (or pinned via anchor_time)

update_day_block

Update a block (title, duration, anchor, note, done)

delete_day_block

Delete a block and prune its timeline ref

Tags

Tool

Description

list_tags

List tags (lightweight — ordering arrays omitted), with optional name search (q)

get_tag

Get a tag by ID with all properties, including tasks_order (section markers h:<header_id>)

create_tag

Create a new tag

update_tag

Update a tag (name, description, color, icon, view mode, favorite)

delete_tag

Permanently delete a tag and all its links

get_tag_items

Get items linked to a tag — filter by types/status, summary mode, task sections included

link_tag

Link any entity to a tag

unlink_tag

Remove a tag link

Task Headers (Sections)

Tool

Description

list_task_headers

List all task headers (section separators)

get_task_header

Get a task header by ID

create_task_header

Create a task header (section)

update_task_header

Update a task header (name, description, collapsed)

delete_task_header

Permanently delete a task header

Tool

Description

link_note_contact

Link a contact to a note

unlink_note_contact

Remove a contact link from a note

link_entry_contact

Link a contact to an entry

unlink_entry_contact

Remove a contact link from an entry

link_task_contact

Link a contact to a task

unlink_task_contact

Remove a contact link from a task

link_task_note

Link a note to a task (non-destructive, the note survives)

unlink_task_note

Remove a note link from a task

link_notes

Link two notes together (symmetric, non-destructive)

unlink_notes

Remove the manual link between two notes

Utilities

Tool

Description

search

Global search across all data types

get_changelog

Items modified since a timestamp (for sync)

get_agent_instructions

Best practices for AI agents

Tool annotations

All tools include MCP safety annotations:

  • Read-only tools (list_*, get_*, search_*): marked readOnlyHint: true

  • Create tools: marked destructiveHint: false

  • Update tools: marked destructiveHint: false, idempotentHint: true

  • Delete tools: marked destructiveHint: true, idempotentHint: true

Activity tracking

Every write operation (create, update, delete) performed through the API is recorded in an Activity Feed visible to the user inside Keepsake. Each action shows the entity type, a content preview, and which API key was used.

This means your user can see everything you do. Be transparent and precise. If you make a mistake, let the user know so they can verify in the activity feed.

Call get_agent_instructions at the start of each session for the full best practices guide.

Environment variables

Variable

Required

Description

KEEPSAKE_API_KEY

Yes

Your API key (starts with ksk_)

KEEPSAKE_API_URL

No

Custom API URL (default: https://app.keepsake.place/api/v1)

Rate limits

60 requests per minute per API key. Rate limit headers are included in responses.

API documentation

Full REST API docs: keepsake.place/api

Privacy

Keepsake MCP server only communicates with the Keepsake API (app.keepsake.place). It does not send data to any third-party service. Your data stays between your MCP client and your Keepsake account.

All API calls are authenticated with your personal API key and scoped to your account via Row Level Security. No other user's data is accessible.

See our privacy policy at keepsake.place/privacy.

License

MIT

Available Tools

62 tools
archive_noteA
Idempotent

Transform a QuickNote into a permanent Note (archive it). Notes appear on contact pages, tag pages, and the Notes section.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNote UUID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint=true and destructiveHint=false. The description adds context: the note becomes permanent and appears on pages. It does not contradict annotations and provides useful behavioral insight 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action. No extraneous information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool, the description explains the transformation and outcome adequately. However, it does not address potential edge cases (e.g., archiving an already permanent note) despite the idempotent hint. Still largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage for the single parameter 'id' (Note UUID). The description does not add additional parameter meaning beyond what the schema states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Transform' and resource 'QuickNote into a permanent Note'. It explains the archival effect ('archive it') and notes the visibility on contact/tag pages. This distinguishes it from siblings like delete_note (destructive), restore_note (reverse), and pin_note (different action).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for archiving QuickNotes, but lacks explicit when-not-to-use or alternative comparisons. No mention of prerequisites or cases where other tools (e.g., restore_note) are more appropriate. Still, it gives enough context for typical use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complete_taskA
Idempotent

Mark a task as completed. If the task is recurring, this automatically creates the next occurrence.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask UUID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotent and non-destructive behavior. The description adds an important behavioral trait: automatic creation of next occurrence for recurring tasks. This is beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with two concise clauses, front-loading the main action. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the description covers the main purpose and recurring behavior. However, it omits what happens if the task is already completed and does not describe the return value. Still reasonably complete for a one-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is 3. The description does not add parameter-specific information beyond what the schema already provides ('Task UUID').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Mark') and resource ('task as completed') and adds a special behavior for recurring tasks. It clearly distinguishes from sibling tools like uncomplete_task, snooze_task, and delete_task.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the purpose is clear, the description does not provide explicit guidance on when to use this tool versus alternatives (e.g., uncomplete_task, update_task), nor does it mention prerequisites or 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.

create_companyB

Create a new company/organization. Only 'name' is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCompany name
emailNoEmail address
notesNoNotes about the company
phoneNoPhone number
addressNoAddress
websiteNoWebsite URL

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only states 'create' which implies mutation. Annotations declare destructiveHint=false, but no additional behavioral traits disclosed (e.g., required permissions, duplicate handling, side effects). Minimal value added beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the purpose and a key constraint. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple creation tool with 6 string parameters and no output schema, the description is mostly adequate. Missing what the tool returns (e.g., the created company object), but the lack of output schema reduces expectation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter. The description reinforces that only 'name' is required, but adds no deeper meaning like format, constraints, or relation to other fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Create a new company/organization' with the resource type. This distinguishes it from siblings like list_companies, get_company, update_company, and delete_company.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Does not mention any prerequisites, scenarios where creation is appropriate, or when to prefer update/delete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_contactA

Create a new contact. first_name is required. last_name is optional (useful for contacts where you only know the first name).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoEmail address
notesNoNotes about the contact
phoneNoPhone number
companyNoCompany name
birthdayNoBirthday as ISO date string (YYYY-MM-DD), e.g. '1980-02-14'
last_nameNoLast name (optional)
first_nameYesFirst name

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-destructive and non-idempotent behavior. The description adds the nuance about optional fields but does not disclose side effects, duplicate handling, or auth requirements. With annotations covering the safety profile, this is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. The most critical information (required field, optional behavior) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with full schema descriptions and no output schema, the description highlights key usage patterns. It could mention return value or error cases, but the schema covers the other parameters. It's reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value by reinforcing first_name as required and explaining the optional use of last_name, which goes beyond the schema's simple 'optional' label.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new contact' clearly states the action (create) and resource (contact). It distinguishes from siblings like update_contact and delete_contact by its verb and focus on creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states that first_name is required and last_name is optional, with a practical use case ('useful for contacts where you only know the first name'). However, it does not provide when-not-to-use or compare to other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_entryA

An ENTRY is a dated interaction log tied to contacts. Records something that happened (call, meeting, email…) on a specific date.

Create a new interaction entry. Content supports #tag# and [[tag]] syntax for automatic tag linking.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate (YYYY-MM-DD)
typeYesEntry type
contentNoEntry content (supports #tag# and [[tag]])
tag_idsNoArray of tag UUIDs to link
contact_idsNoArray of contact UUIDs to associate

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the tool's write nature ('Create') and adds information about tag syntax support, which goes beyond the annotations (which show no destructive or idempotent hints). However, it does not mention the return value or other behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences: one defining the concept and one stating the action. No unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 5 parameters, the description adequately explains the purpose and basic usage. However, it lacks information about return values or detailed side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 reiterates the tag syntax already mentioned in the schema for the 'content' parameter, but does not add significant new meaning for other parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines what an ENTRY is and states the verb 'Create'. It distinguishes the tool from siblings like 'update_entry' and 'delete_entry'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (creating new interaction entries) but does not explicitly mention when not to use it or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_noteA

Create a new QuickNote in the Inbox. QuickNotes are temporary captures — use archive_note to transform one into a permanent Note.

Content supports #tag# and [[tag]] for automatic tag linking.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesNote content (supports #tag# and [[tag]])
is_pinnedNoPin the note (default: false)
contact_idsNoArray of contact UUIDs to associate

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare no destructive or idempotent behavior. The description adds the key behavioral trait that the note is temporary and can be archived, which goes beyond annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences in the first paragraph and a brief second paragraph, front-loading the core action. Every sentence adds value without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters, no output schema, and annotations present, the description covers the purpose, temporary nature, tagging, and workflow. Missing return value info is acceptable due to no output schema. It is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 mentions tagging syntax for content, which is already in the schema. It does not add substantial new meaning to the parameters beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Create' and the resource 'QuickNote in the Inbox', distinguishing it from siblings like archive_note which transforms it into a permanent Note. It specifies a specific verb and resource with scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for use: creating temporary QuickNotes. It mentions when to use archive_note for permanent notes, but does not explicitly list alternatives among sibling tools that also create entities (e.g., create_entry).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_tagA

A TAG is a thematic grouping space. Syntax: #name# or [[name]]. Groups notes, entries, tasks, and contacts.

Create a new tag. If a tag with the same name already exists, returns the existing tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTag name
descriptionNoTag description

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide idempotentHint=false and destructiveHint=false, but the description adds crucial context: creating is not destructive, and if the tag exists, it returns the existing one. This clarifies safety and non-destructive behavior beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise but includes a brief introduction about tags that could be separated. It is front-loaded with the key behavior and functional, though slightly verbose for an expert agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple create tool with no output schema, the description covers idempotency and basic behavior. It lacks explicit mention of return value or uniqueness constraints beyond the existence check, but is largely complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both name and description. The description does not elaborate on parameter usage beyond the schema, so it adds minimal extra meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new tag' and explains what a tag is, distinguishing it from sibling tools like list_tags, get_tag, etc. It also mentions idempotent behavior when name exists, making the purpose very specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It describes when to use (create a tag) and hints at a get-or-create pattern, but does not explicitly state when not to use or suggest alternatives like update_tag or get_tag. The guidance is implicit and lacks explicit exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_taskA

A TASK is an action item to accomplish. Can have due date, recurrence, priority, linked to contacts and tags.

Create a new task. Title supports #tag# and [[tag]] for automatic tag linking.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDue date (YYYY-MM-DD)
titleYesTask title (supports #tag# and [[tag]])
tag_idsNoArray of tag UUIDs to link
priorityNoPriority level
date_typeNoDate type: specific (has a due date, default), asap (do as soon as possible, no date needed), one_day (someday/no rush, no date needed)
contact_idsNoArray of contact UUIDs to associate
descriptionNoTask description
recurrence_typeNoRecurrence pattern
recurrence_intervalNoRecurrence interval (e.g., every N days)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=false and idempotentHint=false. The description adds no additional behavioral traits beyond listing features. It does not mention side effects, authentication, rate limits, or default behaviors (e.g., default date_type).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the definition and then states the action. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 parameters and no output schema, the description gives a high-level overview but lacks details on recurrence behavior, date type defaults, and return value. The schema fills in parameter details, but the description could be more complete for a complex creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema documents all parameters adequately. The description briefly mentions title tag syntax and general capabilities but adds no significant new per-parameter meaning. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new task' and explains what a TASK is, providing a summary of capabilities (due date, recurrence, priority, linking). This distinguishes it from sibling tools like list_tasks, update_task, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives or provide exclusion guidelines. However, the name and context imply creation, and the description lists features, which gives some guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_task_headerA

Create a new task header (section separator). Add it to a tag's items_order to position it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHeader name
collapsedNoWhether the section is collapsed (default false)
descriptionNoOptional description below the header

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint=false annotation, the description reveals that the created header must be manually positioned via a tag's items_order, indicating it's not automatically visible. This adds important behavioral context missing from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence states the purpose, the second adds a critical usage detail. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks details about the return value (no output schema) and does not explain the full workflow of linking the header to a tag. However, it does provide a key next step (add to items_order) which partially compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description does not add meaning beyond what the input schema already provides for each parameter (name, collapsed, description). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool creates a task header (section separator), distinguishing it from regular tasks. The sibling tool list includes create_task, so the description effectively differentiates by specifying 'section separator' and the need to add to a tag's items_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage by stating 'Add it to a tag's items_order to position it,' but does not explicitly state when to use this tool versus alternatives like create_task. No exclusions or prerequisites are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_companyA
DestructiveIdempotent

Soft-delete a company. Use permanent=true for hard delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompany UUID
permanentNoHard delete (default: false, soft delete)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true. The description adds value by explaining that the default is a soft delete (reversible) and that permanent=true triggers a hard delete. This provides behavioral context beyond the annotations, clarifying the reversible nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is front-loaded and efficiently communicates the core behavior and key parameter usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with 2 parameters and annotations present, the description covers the essential behavior and parameter meaning. However, it does not describe the return value or side effects (e.g., what happens to related data), which is a gap given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with descriptions. The tool description does not add significant extra meaning beyond what the schema already provides (e.g., id is a UUID, permanent boolean with default). Baseline of 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool deletes a company with two modes (soft and hard). The verb 'delete' and resource 'company' are specific. However, it does not explicitly differentiate from other sibling delete tools like delete_contact or delete_entry, which could be improved for disambiguation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage guidance by indicating the permanent parameter for hard delete versus soft delete by default. However, it lacks explicit context on when to use this tool versus alternatives (e.g., search and then delete) and does not mention prerequisites or when soft vs hard delete is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_contactA
DestructiveIdempotent

Permanently delete a contact and all associated data.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact UUID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true. The description adds context about cascading deletion ('all associated data') which is beyond annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, perfectly concise, front-loaded with action and scope. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with one param and no output schema, the description provides essential purpose, permanence, and cascading effect. Could add idempotency note but annotations cover it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for 'id'. The tool description adds no additional param info. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'delete' and resource 'contact', and clarifies permanent deletion and cascading data removal. It clearly distinguishes from sibling tools like update_contact or unlink_*.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for permanent removal of contacts but does not explicitly state when to use it versus alternatives like unlink_* or archive. No exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_entryA
DestructiveIdempotent

Delete an interaction entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEntry UUID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true, which cover the core behavior. The description adds no further behavioral context, such as reversibility or cascade effects, but does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is an efficiently concise single sentence that front-loads the core purpose. There is no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (one required parameter, no output schema), the description is mostly complete. However, it could mention idempotent behavior or what happens if the entry does not exist, which is not addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the schema already documents the required 'id' parameter. The description adds no additional meaning or usage details beyond what the schema provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete an interaction entry' clearly states the action (delete) and the resource (interaction entry). It is distinct from sibling tools like delete_contact or delete_task, which operate on different entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as update_entry or archive functionalities. There is no mention of prerequisites, side effects, or scenarios that would make this tool inappropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_noteA
DestructiveIdempotent

Soft-delete a QuickNote or Note. Use permanent=true for hard delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNote UUID
permanentNoHard delete (default: false, soft delete)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations which mark the tool as destructive and idempotent, the description adds the nuance of two delete modes (soft and hard). This clarifies the tool's behavior beyond what the annotations alone provide, though it doesn't cover potential cascading effects or restoration options.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The main action is front-loaded and the parameter usage is concisely explained. Perfectly structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with no output schema, the description covers the essential behavioral aspects. However, it could mention related operations like restore_note for soft-deleted items, but this is not critical given the annotations and schema richness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with descriptions for both parameters. The description adds meaning by explaining the role of 'permanent' and its default, providing practical guidance for the agent's usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (soft-delete) and the resource (QuickNote or Note), and distinguishes between soft and hard delete. It is specific and differentiates from sibling tools like archive_note or restore_note.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance for the 'permanent' parameter ('Use permanent=true for hard delete'), but lacks explicit context on when to choose soft vs hard delete or comparisons to alternative tools. Despite this, the guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_tagA
DestructiveIdempotent

Permanently delete a tag and all its links to contacts, entries, tasks, notes, and companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTag UUID

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint and idempotentHint. The description adds value by specifying the scope of destruction (all links to contacts, entries, tasks, notes, and companies) and confirming permanence, which goes beyond the raw annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the key action 'Permanently delete'. Every word contributes, with no superfluous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single-parameter tool with no output schema and clear annotations, the description covers the essential behavior (permanent deletion of tag and all links). No additional context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'id' is described in the schema as 'Tag UUID'. The description does not add additional meaning beyond what the schema already provides. With 100% schema coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool permanently deletes a tag and all its links, using a specific verb and resource. It is easily distinguishable from sibling tools like unlink_tag which only remove links without deleting the tag.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates when to use this tool (when a tag and all its associations should be permanently removed) but does not explicitly contrast with alternatives like unlink_tag for link removal only. However, the permanent nature is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_taskB
DestructiveIdempotent

Delete a task.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask UUID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not contradict the annotations (destructiveHint: true, idempotentHint: true) and aligns with the implied behavior. However, it adds no new behavioral context beyond what the annotations already provide, such as confirming irreversibility or success/failure outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at three words, with no wasted language. It is front-loaded and efficient, though slightly under-specified for completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of a delete operation and the presence of annotations, the description is minimally adequate. However, it lacks context about cascading effects, error handling, or return behavior, which could be helpful for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents the 'id' parameter as a required UUID. The description adds no additional semantic value, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete a task.' clearly states the verb and resource, distinguishing it from other delete tools by specifying 'task' as the target. However, it is minimal and lacks additional context that would make it exceptional.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like complete_task or snooze_task. There is no explanation of prerequisites or exclusions, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_task_headerB
DestructiveIdempotent

Permanently delete a task header.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask header UUID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true. Description adds 'Permanently' which aligns with destructive behavior but does not disclose additional traits like cascading effects or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with no unnecessary words, appropriate for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given tool simplicity and presence of annotations/schema, the description is minimally adequate but lacks any explanation of consequences or prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; description adds no extra meaning beyond the schema's description of the 'id' parameter as a UUID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (delete) and the resource (task header), distinguishing it from siblings like delete_task which deletes a different entity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., when to delete a task header vs. deleting a task). No context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_instructionsA
Read-only

Get best practices and instructions for being an effective Keepsake AI agent. Call this at the start of each session to refresh your instructions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and description adds that it refreshes instructions. No contradictions or hidden behaviors. Fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose and usage. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description adequately explains what the tool returns and when to use it. Complete for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so baseline 4 applies. Description adds no parameter info, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves best practices and instructions for the agent, with a specific verb 'get' and resource 'instructions'. It is distinct from sibling tools which are all about data manipulation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Call this at the start of each session to refresh your instructions', providing clear when-to-use guidance. No need for alternatives given the unique purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_changelogA
Read-only

Get all items modified since a given timestamp, across all entity types. Perfect for 'heartbeat' checks to see what changed since your last visit. Returns server_time to use as 'since' for the next call.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by entity type (default: all)
limitNoMax items per entity type (default 50, max 100)
sinceYesISO timestamp — only items modified after this time are returned (e.g. 2026-02-11T10:00:00Z)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true, and description aligns by stating read operation. Description adds behavioral detail: returns server_time for polling and works across all entity types, which is not in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no filler. Every sentence provides essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but description partially explains return value (server_time). For a changelog tool, it is adequately complete; could optionally mention that items are returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds value by explaining the 'since' parameter usage pattern (use returned server_time for next call). No additional info for 'type' or 'limit', but they are well-described in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves modified items across all entity types since a timestamp, with a verb ('Get') and resource ('items modified'). It distinguishes from sibling tools that are entity-specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage context: 'heartbeat checks' and a pattern for using returned server_time for subsequent calls. No explicit when-not-to-use, but context is sufficient for this simple tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_companyA
Read-only

Get a single company by ID, including linked contacts (with roles) and tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompany UUID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. Description adds value by specifying that linked contacts (with roles) and tags are included in the response. No contradictions, but no info on potential errors or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, efficient and front-loaded with the core action. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, description adequately explains return value (linked contacts and tags). Could mention other typical fields, but sufficient for a simple get operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (id) with 100% schema description coverage. Description adds no extra meaning beyond the schema's 'Company UUID'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states 'Get a single company by ID' with additional details on included data (contacts, roles, tags). Clearly distinguishes from sibling tools like list_companies and search_companies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. While it's implied for retrieving a specific company by ID, it doesn't contrast with alternatives like list_companies or search_companies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contactA
Read-only

Get a single contact by ID, including recent entries (interactions), tags, last_interaction_date, and total_entries count.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact UUID
entries_limitNoMax entries to return (default 10, -1 for all)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond the readOnlyHint annotation by specifying what fields are returned and the behavior of entries_limit (default 10, -1 for all). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose, no wasted words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 2 simple parameters, full schema coverage, and description covering return fields, the tool definition is complete for a read-only get-by-ID operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully documented in the schema; the description clarifies the entries_limit parameter's default and special value (-1), adding meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a single contact by ID and lists included fields (recent entries, tags, etc.), effectively distinguishing it from siblings like list_contacts or search_contacts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description (use when you need a single contact by ID), but no explicit when-to-use, when-not-to-use, or alternatives are provided despite a large sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contact_timelineA
Read-only

Get a unified, chronological feed of ALL items related to a contact — entries, tasks, and notes — sorted by date (most recent first). Much more efficient than fetching entries, tasks, and notes separately.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact UUID
toNoEnd date filter (YYYY-MM-DD)
fromNoStart date filter (YYYY-MM-DD)
typeNoFilter by item type (default: all)
limitNoMax results (default 20)
offsetNoPagination offset

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. Description adds chronological ordering and that it returns all item types. No further behavioral details (e.g., pagination limits, response structure) beyond what annotations cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with key info, no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complexity is moderate with 6 parameters and no output schema. Description explains the combined nature but lacks details on response format. Adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover all 6 parameters (100% coverage). Description adds only the sorting behavior, not significant parameter meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states the verb ('get'), resource ('chronological feed of ALL items related to a contact'), and distinguishes from fetching items separately. It also specifies sort order (most recent first).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Indicates it's more efficient than separate fetches, providing a clear when-to-use context. However, it doesn't explicitly state when not to use or enumerate alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dayA
Read-only

Get a specific day's journal summary by date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate (YYYY-MM-DD)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description aligns as a read operation. The description adds minimal context beyond stating the retrieval criterion; it does not elaborate on further behavioral aspects like permissions or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence of 8 words with no redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 purpose and parameter usage. It could possibly mention what a journal summary typically contains, but is sufficiently complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the parameter 'date' is already well-described in the schema as 'Date (YYYY-MM-DD)'. The description adds context about the return value (journal summary) but not about the parameter itself. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'a specific day's journal summary' with the retrieval criterion 'by date'. This is specific and distinguishes it from sibling tools like list_days (which likely enumerates days) and update_day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving a single day's summary, but does not explicitly state when to use this versus alternatives like list_days. No usage context or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tagA
Read-only

Get a single tag by ID with all its properties (name, description, color, icon, view mode, favorite status).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTag UUID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description adds value by specifying the returned properties. No contradictions. Additional context beyond annotations is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence front-loads the action and result with no wasted words. Perfectly sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the return properties. It could mention response format or error handling, but for a simple get-by-id tool it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter is already well-documented with type, format, and description. The description adds no extra meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action ('Get a single tag by ID') and lists the properties returned, making the tool's purpose clear and distinguishing it from siblings like list_tags and get_tag_items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when a specific tag ID is known and full details are needed, but it does not provide explicit when-not-to-use or alternatives among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tag_itemsA
Read-only

Get all items linked to a specific tag: contacts, entries, tasks, notes, and companies with counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTag UUID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as readOnlyHint=true, so the description does not need to reiterate the read-only nature. The description goes beyond annotations by specifying that it returns items 'with counts', adding useful behavioral context. However, it does not disclose if results are paginated or ordered, which is acceptable for a simple read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that directly states the tool's action and what it returns. Every word is informative, with no redundancy or filler. It is perfectly front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required parameter, read-only, no output schema), the description is nearly complete. It lists all item types and mentions counts. The only gap is that it does not explain the return format or whether counts are separate, but this is not critical for a straightforward list retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter 'id', which is described as 'Tag UUID'. The tool description adds no additional meaning beyond this, so baseline score of 3 is appropriate. No further parameter details are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and identifies the resource as 'all items linked to a specific tag', listing the item types (contacts, entries, tasks, notes, companies) and mentioning counts. This clearly distinguishes it from sibling tools like get_tag (which likely returns tag metadata) and list_tags (which lists tags without items).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives such as search or specific list tools. While it is clear that this tool retrieves all item types for a tag, it does not mention when it is inappropriate to use (e.g., when only a specific item type is needed) or any prerequisites. The usage context is implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_task_headerA
Read-only

Get a single task header by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask header UUID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows it's a safe read. The description adds no additional behavioral context (e.g., response details, limits).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no unnecessary words. It is perfectly sized for this simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (1 parameter, no output schema, readOnlyHint annotation), the description is mostly complete. However, it could mention that the response is the full task header object, but this is inferable from the tool name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with 'id' described as 'Task header UUID'. The description's 'by ID' adds no extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get' and the resource 'task header' with the method 'by ID'. It is specific and distinguishes from sibling tools like list_task_headers or create_task_header.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates usage when you have a specific task header ID, but it lacks explicit guidance on when to use this tool versus alternatives, or any preconditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tasks_overdueA
Read-only

Get only overdue tasks (pending tasks with a due date before today). Sorted by date ascending (oldest first).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false. Description adds sorting order and exact definition of overdue, which provides valuable behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. Front-loaded with the core action and provides key details immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no parameters, the description adequately explains what the tool returns and in what order. Could mention pagination or limits, but for a simple filtered list tool it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in schema (zero params, 100% coverage). Description adds meaning by defining what overdue tasks are and how they are sorted, which is sufficient since there are no param details needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Get' and resource 'overdue tasks', defines 'overdue' as pending tasks with due date before today, and states sorting order. This clearly distinguishes from sibling tools like get_tasks_today and list_tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. While the name implies use for overdue tasks, no exclusions or alternative tool names are given. Agent must infer from sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tasks_todayA
Read-only

Get all tasks for today: overdue tasks + tasks due today + ASAP tasks. Each task has a 'category' field ('overdue', 'today', or 'asap'). Includes counts per category.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description's burden is low. It adds that each task has a 'category' field and counts per category. No further behavioral details (e.g., sorting, limits) are provided, but it suffices for a read-only operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first clearly states purpose and components, second adds details. No unnecessary words, front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with no output schema, the description fully explains what the tool returns and how the output is structured. It is complete enough for an agent to understand its value and usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the baseline is 4. The description adds value by explaining the output structure (category field and counts), exceeding the baseline by compensating for the lack of an output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves tasks for today, specifying three categories (overdue, due today, ASAP) with a 'category' field and counts. It distinguishes from sibling tools like 'get_tasks_overdue' which only gets overdue tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the scope (all tasks for today) and the categories returned, which implies usage for a daily overview. However, it does not explicitly mention when to use this instead of siblings like 'list_tasks' or 'get_tasks_overdue', though the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

link_entry_contactB
Idempotent

Link an existing contact to an entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesEntry UUID
contact_idYesContact UUID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false. The description adds no extra behavioral context beyond what annotations provide. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is efficiently concise, though it could be more informative without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple link operation with 2 UUID parameters and no output schema, the description is minimally adequate. However, it lacks detail on the nature of the relationship (e.g., bidirectional, unique) and does not leverage the presence of sibling unlink tools to provide context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter has a description ('Entry UUID', 'Contact UUID'). The description adds no further semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Link' and resources 'contact' and 'entry', clearly distinguishing it from siblings like unlink_entry_contact and link_task_contact. It leaves no ambiguity about the tool's primary function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., link_task_contact) or prerequisites (e.g., existence of contact/entry). The description does not mention context such as whether the link is many-to-many or any restrictions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_companiesA
Read-only

List all companies/organizations in the user's Keepsake CRM. Supports pagination and sorting.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort field: name, created_at, updated_at
limitNoMax results (default 20)
orderNoSort order
offsetNoPagination offset

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. Description adds pagination and sorting features, aligning with read-only nature. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences, front-loaded with purpose, no unnecessary words. Efficiently communicates key features.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description does not specify return format, but for a list tool the return is implied. Adequate given low complexity and rich input schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 4 parameters. The description repeats 'supports pagination and sorting' which adds no extra detail beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action (list), resource (companies/organizations), and scope (user's Keepsake CRM). Distinguishes from siblings like get_company (single) or search_companies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for general listing of all companies, but no explicit guidance on when to use vs. search or other siblings. Lacks exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_contactsA
Read-only

List all contacts in the user's Keepsake CRM. Supports pagination, sorting, and optional last_interaction_date enrichment.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort field: last_name, first_name, created_at
limitNoMax results (default 20)
orderNoSort order
offsetNoPagination offset
include_last_interactionNoInclude last_interaction_date for each contact (default: false)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description aligns with read-only behavior. It adds value by disclosing support for pagination, sorting, and last_interaction_date enrichment, providing useful context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences effectively communicate the tool's purpose and features with no unnecessary words or repetition. Front-loaded with the core action and then supporting details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, and the description fails to describe the return format, such as the structure of contact objects or pagination metadata. This is a significant omission for a list tool that would help the agent interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already well-documented. The description summarizes pagination, sorting, and enrichment but does not add new semantic details beyond what the schema provides, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all contacts in the user's Keepsake CRM, with explicit mentions of pagination, sorting, and optional enrichment. This distinguishes it from sibling tools like get_contact (single) and search_contacts (filtered search).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly guide when to use this tool versus alternatives like search_contacts. While it implies a full list retrieval, it lacks direct exclusion criteria or context for selecting among similar tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_daysA
Read-only

List daily journal summaries. Filter by date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date (YYYY-MM-DD)
fromNoStart date (YYYY-MM-DD)
limitNoMax results (default 20)
offsetNoPagination offset

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description adds no additional behavioral context. It does not mention any traits like data freshness, authentication requirements, or how summaries are generated. The value beyond annotations is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no superfluous words. Front-loaded with the main action and immediately provides the key filter. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple read-only tool with fully documented parameters, the description is nearly complete. It lacks explicit mention of pagination (limit/offset) and return format, but these are covered by the schema. Without an output schema, the hint 'summaries' gives a useful idea of the return.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all four parameters described. The description reinforces the date-range filtering but does not add new semantics beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'daily journal summaries', along with a key filtering capability 'Filter by date range'. This distinguishes it from the sibling tool 'get_day' which targets a single day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing summaries over a date range but does not provide explicit guidance on when to use this tool versus alternatives like 'get_day' for single-day retrieval or 'search' for broader search. No exclusions or context are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_entriesA
Read-only

List interaction entries (calls, emails, meetings, events, etc.). Supports filtering by type, contact, and date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date (YYYY-MM-DD)
fromNoStart date (YYYY-MM-DD)
typeNoFilter by entry type
limitNoMax results (default 20)
offsetNoPagination offset
contact_idNoFilter by associated contact ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so description doesn't need to repeat safety. Description adds filtering capabilities but fails to mention pagination behavior (limit/offset), ordering, or default return size. Partial disclosure beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no redundancy. Front-loaded with the main action and key filtering capabilities. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 6 parameters and no output schema, the description omits details like pagination defaults, ordering, and return structure. Agent lacks context on how results are presented, which is critical for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good per-parameter descriptions. The description reinforces that filtering is by type, contact, and date range, but doesn't add significant new meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List interaction entries' with examples (calls, emails, etc.), specifying the resource and action. It distinguishes from sibling list tools (e.g., list_contacts, list_tasks) by focusing on interactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description mentions filtering by type, contact, and date range, implying typical list usage. However, no explicit guidance on when not to use this tool or alternatives; but siblings lack another list entries tool, so it's reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notesA
Read-only

List notes. QuickNotes (inbox, not yet archived) and Notes (archived, permanent). Filter by pinned or archived status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
offsetNoPagination offset
pinnedNoFilter pinned notes only
archivedNoFilter by status: true = Notes (archived/permanent), false = QuickNotes (inbox)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description adds value by explaining the two note categories and how filtering by archived status differentiates them. No contradiction; transparency is good but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff, front-loaded with the verb 'List notes'. Every sentence serves a purpose, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the key filtering dimensions and note types. Minor gaps: no mention of pagination (limit/offset) or the default behavior when no filters are applied. Still fairly complete for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does not add meaningful additional meaning beyond the schema's parameter descriptions. The archived filtering is already well-described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List notes' and distinguishes between QuickNotes and Notes (archived/permanent), which is the core purpose. It also specifies filtering by pinned or archived status, making it distinct from other list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions filtering options but does not provide explicit guidance on when to use this tool versus sibling tools like search or get_contact_timeline. No exclusions or alternatives are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tagsB
Read-only

List all tags. Tags organize contacts, entries, tasks, notes, and companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
offsetNoPagination offset

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds no further behavioral details (e.g., rate limits, whether tags are sorted, or the effect of pagination). It is adequate but does not enhance beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the action. It is efficient and contains no unnecessary words, though the purpose is straightforward.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 what the return data looks like (e.g., list of tag objects with properties). The current description only states the purpose of tags, not what the tool returns, leaving a gap in completeness for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both limit and offset parameters. The description adds no additional context for the parameters, staying at the baseline. No improvement or harm.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all tags' with a brief explanation of what tags are used for. However, it does not explicitly differentiate from sibling tools like get_tag or search-like operations, so it's clear but not fully distinguishing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., get_tag for a single tag, or a filtered search). It lacks any context for selecting this tool over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_task_headersA
Read-only

List all task headers (section separators used to group tasks on tag pages and day views).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
offsetNoPagination offset

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows it's safe. The description adds that it lists 'all' task headers, but does not disclose whether results are paginated, ordered, or scoped to specific tag pages or day views. Minimal behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core purpose with no unnecessary words. Every part of the sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with read-only annotations and full schema coverage, the description covers the essential purpose. However, it lacks details about output format or any constraints beyond pagination. Sibling tools provide sufficient contrast to infer usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters (limit, offset) are fully documented in the schema. The description adds no additional meaning or usage hints for these parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'task headers', and explains what task headers are (section separators for grouping tasks). This distinguishes it from sibling tools like get_task_header, create_task_header, etc., which have different verbs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives like get_task_header or list_tasks. While the name implies listing all headers, the description does not specify scope or context (e.g., global list vs per-tag).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tasksB
Read-only

List tasks. Filter by status (pending/completed), date_type, or specific date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoFilter by specific date (YYYY-MM-DD)
limitNoMax results (default 20)
offsetNoPagination offset
statusNoFilter by status
date_typeNoFilter by date type: specific (has a due date), asap (do as soon as possible), one_day (someday/no rush)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is clear. The description adds filtering details but does not disclose behavioral aspects like pagination behavior, result ordering, or that it returns a list of tasks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise and front-loaded with the core action 'List tasks.' No wasted words, but could be slightly more structured to separate the action from filter options.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters and no output schema, the description provides basic filtering context but omits important details like pagination (limit/offset), default behavior, and relationship to sibling tools. Adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline is 3. Description adds minimal value by mentioning specific filters like 'status (pending/completed)' and 'date_type', but does not fully explain all parameter behaviors (e.g., limit, offset, date_type enum variants).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List tasks' and mentions filtering options, serving as a clear verb+resource purpose. However, it does not differentiate from sibling tools like get_tasks_today or get_tasks_overdue, which are more specialized.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description only lists filter options without any context about when it is appropriate to use list_tasks instead of other task-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pin_noteA
Idempotent

Pin a QuickNote or Note so it appears at the top of the Inbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNote UUID

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false. The description adds the behavioral effect of pinning (appears at top) but does not elaborate on reversibility, permissions, or side effects. Minimal additional transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with verb and resource, no redundant information. every word is necessary and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema, adequate annotations), the description is complete for an agent to understand the tool's purpose and effect. No missing context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the schema already documents the single parameter 'id' as a UUID note identifier. The description adds no further semantics about the parameter beyond implying it refers to a note to pin.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'pin' and resource 'QuickNote or Note', clearly stating the effect 'appears at the top of the Inbox'. This distinguishes it from sibling tools like archive_note or restore_note.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives, nor any conditions or exclusions. The purpose implies use when wanting to bring a note to the top, but lacks when-not or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_noteA
Idempotent

Restore a Note back to a QuickNote in the Inbox (unarchive), or restore a deleted note from trash.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNote UUID

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context by explaining the two restoration paths, but annotations already provide idempotentHint=true and destructiveHint=false, covering safety. The description does not contradict or significantly extend beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is concise and front-loaded. No wasted words, but could benefit from structured breakdown for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required param, no output schema, annotations present), the description covers the core use cases adequately. It is reasonably complete for an agent to understand when to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the description adds no additional meaning beyond what the schema already provides for the 'id' parameter. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool restores notes, specifying two distinct scenarios: unarchiving (back to QuickNote in Inbox) and restoring from trash. It effectively distinguishes this tool from related siblings like archive_note and delete_note.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (to undo an archive or trash operation), but does not explicitly state when not to use it or mention alternatives. However, the context of sibling tools makes the usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_companiesA
Read-only

Search companies by name, email, website, or address. Search is accent-insensitive.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch query

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true. The description adds that search is accent-insensitive, which is useful behavioral context beyond what annotations convey. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core action and resources. Every sentence adds value, no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter search tool with no output schema or nested objects, the description provides adequate context: what it searches, how it matches, and behavioral detail (accent-insensitive). Complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter 'q' described as 'Search query'. The description adds that 'q' can match against name, email, website, or address, significantly enhancing semantic understanding beyond the generic schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'search', the resource 'companies', and the searchable fields (name, email, website, address). It distinguishes from sibling tools like 'search_contacts' which search contacts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for searching companies but does not explicitly state when to use or not use this tool versus alternatives like 'list_companies' or 'get_company'. No exclusions or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_contactsA
Read-only

Search contacts by name, email, company, etc. Search is accent-insensitive.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch query

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true. Description adds 'accent-insensitive' behavior, providing some extra context, but does not address other behavioral traits like authentication or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose and a key detail (accent-insensitivity), with no extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with no output schema, the description covers searchable fields and sensitivity. Lacks pagination or limit info, but is adequate for simple use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage with parameter 'q' described as 'Search query'. Description adds meaning by listing searchable fields (name, email, company), enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches contacts by multiple fields (name, email, company, etc.) and distinguishes itself from generic 'search' and 'search_companies' siblings by specifying the resource and searchable attributes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for searching contacts but does not explicitly state when to use this tool instead of alternatives like 'search' or 'search_companies', nor provides exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snooze_taskB
Idempotent

Reschedule a task to a new date.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask UUID
dateYesNew date (YYYY-MM-DD)
date_typeNoNew date type: specific (has a due date, default), asap (do as soon as possible), one_day (someday/no rush)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotent and non-destructive behavior. The description adds no extra behavioral context beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, concise and to the point. No unnecessary words, though it could benefit from a bit more detail without being overly long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 3 parameters and existing annotations, the description is adequate. It covers the core action. However, it could mention that the tool is idempotent (though annotation covers that).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description does not add meaning beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reschedules a task to a new date. It uses a specific verb and resource, differentiating it from sibling tools like update_task which may modify other fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like update_task. The description does not provide context about typical use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uncomplete_taskA
Idempotent

Mark a completed task as pending again.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask UUID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotentHint=true and destructiveHint=false, which the description does not contradict. The description adds that the action 'marks as pending' but does not disclose additional behavioral traits such as whether the task must already be completed or error handling. The description adds minimal value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately conveys the tool's purpose. There is no extraneous information, and the structure is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema, annotations covering safety), the description is largely complete. It adequately describes the action but could benefit from mentioning potential error conditions or prerequisites (e.g., task must be completed). For a straightforward state-change tool, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage with a single parameter 'id' described as 'Task UUID', so the description does not need to add further details. The description provides no additional parameter semantics, meeting the baseline expectation for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name 'uncomplete_task' and description 'Mark a completed task as pending again' clearly indicate a specific verb-resource action: reversing the completion status of a task. This distinguishes it from siblings like 'complete_task', 'snooze_task', and 'update_task'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. The usage is implied by the name and context (inverse of complete_task), but no direct guidance or exclusion criteria are provided, leaving room for ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unlink_entry_contactA
DestructiveIdempotent

Remove the link between a contact and an entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesEntry UUID
contact_idYesContact UUID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true and idempotentHint=true. The description simply restates the operation without adding behavioral nuance (e.g., side effects, permissions). It neither contradicts nor enriches the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that efficiently conveys the tool's purpose with no redundant or missing words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple operation with two well-documented parameters and no output schema, the description is sufficient. It could optionally mention idempotency or that it reverses 'link_entry_contact', but overall it is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters have clear descriptions ('Entry UUID', 'Contact UUID'). The description adds no additional meaning or formatting guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove the link') and the resources ('contact' and 'entry'), distinguishing it from sibling tools like 'link_entry_contact' and 'unlink_note_contact'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (to unlink a contact from an entry) but provides no explicit guidance on when not to use it or alternatives. Given the clear name and sibling context, it is adequate but not proactive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_companyA
Idempotent

Update an existing company. Only send the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCompany UUID
nameNoCompany name
emailNoEmail address
notesNoNotes about the company
phoneNoPhone number
addressNoAddress
websiteNoWebsite URL

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds 'Only send the fields you want to change' which is consistent with idempotentHint=true and destructiveHint=false annotations. It does not elaborate on authentication, rate limits, or other behavioral traits beyond what annotations already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no unnecessary words. It front-loads the action and the partial update guidance, earning each sentence's place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters (1 required) and no output schema, the description is minimal but sufficient for an update operation. It could mention response behavior or idempotency, but annotations cover safety sufficiently, so overall complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter. The description adds the partial update semantics, which is valuable. However, it does not emphasize the required id field, though it is implied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Update' and the resource 'an existing company', which distinguishes it from siblings like create_company and delete_company. It is specific and leaves no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Only send the fields you want to change' implies a partial update (PATCH-like) and guides the agent to send only changed fields. However, it does not explicitly mention when not to use this tool or provide alternatives among many sibling tools for other resources.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_contactA
Idempotent

Update an existing contact. Only send the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesContact UUID
emailNoEmail address
notesNoNotes about the contact
phoneNoPhone number
companyNoCompany name
birthdayNoBirthday as ISO date string (YYYY-MM-DD), e.g. '1980-02-14'. Set to null to clear.
last_nameNoLast name
first_nameNoFirst name

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false. The description adds 'update' but does not provide new behavioral details beyond the annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two sentences with no wasted words. The first sentence states the action, the second adds crucial partial update guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, the description efficiently covers the key usage pattern. No output schema exists, but for a simple update with idempotent hint, the description is adequate. Could optionally mention return value, but not necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds a high-level usage note ('Only send the fields you want to change') but no parameter-specific meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it updates an existing contact, distinguishing it from create_contact and delete_contact. The verb 'update' and resource 'contact' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: 'Only send the fields you want to change', indicating partial updates. However, it does not explicitly state when not to use (e.g., for new contacts use create_contact), but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_dayA
Idempotent

Create or update a daily journal summary. If a day entry already exists for this date, it will be updated (upsert).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate (YYYY-MM-DD)
noteYesJournal content for the day

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotentHint=true and destructiveHint=false, which the description reinforces by stating 'upsert' behavior. This consistency adds clarity, though no further behavioral details (e.g., output, side effects) are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is two sentences with no unnecessary words. Every part adds information: action, resource, upsert condition. Perfectly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 parameters, 100% schema coverage, and clear annotations, the description is complete. It explains the key behavior (upsert) and leaves no ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers both parameters with descriptions (date format, note content). The description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Title and description clearly state the tool creates or updates a daily journal summary, with specific verb ('create or update') and resource ('daily journal summary'). The upsert behavior is explicitly mentioned, distinguishing it from separate create/update tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the tool's function but does not provide explicit guidance on when to use it versus siblings like 'create_entry' or 'update_entry'. It lacks when-not-to-use or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_entryA
Idempotent

Update an existing entry. Only send fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEntry UUID
dateNoDate (YYYY-MM-DD)
typeNoEntry type
contentNoEntry content (supports #tag# and [[tag]])
tag_idsNoReplace associated tags
contact_idsNoReplace associated contacts

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false. Description adds no new behavioral details beyond the implied update operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 9 words, concise and front-loaded with no superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple update tool with complete schema descriptions and annotations. Lacks mention of return value but not critical for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already well-described. Description adds a usage tip but no additional semantic meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Update an existing entry' with specific verb and resource. Distinguishes from sibling tools like create_entry and delete_entry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage tip 'Only send fields you want to change', indicating partial updates are allowed. Clear context but no exclusions or alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_noteA
Idempotent

Update an existing QuickNote or Note.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNote UUID
contentNoUpdated content
tag_idsNoReplace associated tags
contact_idsNoReplace associated contacts

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint and destructiveHint, so description does not need to add safety info. No extra behavioral context beyond 'update'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no waste, front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Minimal but adequate for a simple update tool with well-described schema and annotations. Could mention replacement semantics for arrays, but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. Description adds no value beyond schema, but baseline is 3 due to high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'update' and resource 'existing QuickNote or Note', distinguishing from create/delete/siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like update_contact or update_entry. Context of 'QuickNote' vs 'Note' not explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_tagA
Idempotent

Update an existing tag. Only send the fields you want to change. Supports name, description, color, icon, view mode, and favorite status.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTag UUID
iconNoTag icon (emoji or icon name)
nameNoTag name
colorNoTag color (e.g. 'blue', 'red', 'green')
view_modeNoView mode for the tag page
descriptionNoTag description
is_favoriteNoWhether the tag is a favorite

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false, indicating safe, idempotent behavior. The description adds that it supports partial updates and lists fields, but doesn't disclose additional behavioral traits beyond what annotations and schema already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with two sentences. The first sentence states the action, and the second explains the usage and lists fields. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the rich schema (100% parameter coverage, no output schema needed), the description covers the essential details. It explains the partial update behavior and the fields. No missing critical information, though it omits any mention of return values or error states.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters described. The description adds value by emphasizing the partial update pattern ('only send the fields you want to change'), which is not explicitly stated in the schema. It also lists the supported fields, reinforcing their meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Update an existing tag' with a specific verb (Update) and resource (tag). It lists the modifiable fields, clearly distinguishing it from sibling tools like create_tag or delete_tag.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance on usage: 'Only send the fields you want to change.' It implies a partial update pattern but does not explicitly state when not to use it or compare to alternatives. However, given sibling tools, it's the only update tool for tags.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_taskA
Idempotent

Update an existing task. Only send fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask UUID
dateNoDue date (YYYY-MM-DD)
titleNoTask title
tag_idsNoReplace associated tags
priorityNoPriority level
date_typeNoDate type: specific (has a due date), asap (do as soon as possible), one_day (someday/no rush)
contact_idsNoReplace associated contacts
descriptionNoTask description

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false. The description adds the partial update behavior but does not disclose array replacement semantics (e.g., tag_ids replaces all tags) or any side effects. Value added beyond annotations is moderate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no superfluous information. The description is concise and front-loaded, effectively conveying the core action and key usage hint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters and no output schema, the description is minimal but covers the essential partial update semantics. It lacks details on array replacement behavior or enum constraints, which could help the agent avoid errors. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema fully describes each parameter. The description does not add any extra meaning or context beyond what is already in the schema, hence baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (update) and resource (task), and hints at partial update behavior. However, it does not explicitly distinguish from sibling tools like complete_task or snooze_task, which also modify task state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Only send fields you want to change' provides partial update guidance, but there is no explicit when-to-use, when-not-to-use, or alternative tool reference. Usage context is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_task_headerA
Idempotent

Update a task header. Only send the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTask header UUID
nameNoHeader name
collapsedNoWhether the section is collapsed
descriptionNoDescription below the header

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the partial update hint, which is not in annotations. Annotations already declare idempotentHint=true and destructiveHint=false, so the description complements this without contradiction. No further behavioral details (e.g., auth, rate limits) are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that immediately conveys the tool's purpose. Every word is necessary, and there is no filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the purpose is clear, the description lacks information about return values (no output schema), prerequisites (e.g., header must exist), and potential side effects beyond annotations. Given the tool's simplicity, it is minimally adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented. The description reinforces partial update semantics ('only send fields you want to change'), but adds no new details about individual parameters beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update a task header,' specifying the action and resource. This distinguishes it from sibling tools like update_task (which updates a task) and create_task_header/delete_task_header.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes 'Only send the fields you want to change,' which implies partial update usage. However, it does not provide explicit guidance on when to use this tool versus alternatives like update_task or when not to use it.

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. Dates show when Glama detected each change.

  1. 62 tool updatesv1.4.0
    • First observedarchive_note
    • First observedcomplete_task
    • First observedcreate_company
    • First observedcreate_contact
    • First observedcreate_entry
    • First observedcreate_note
    • First observedcreate_tag
    • First observedcreate_task
    • First observedcreate_task_header
    • First observeddelete_company
    • First observeddelete_contact
    • First observeddelete_entry
    • First observeddelete_note
    • First observeddelete_tag
    • First observeddelete_task
    • First observeddelete_task_header
    • First observedget_agent_instructions
    • First observedget_changelog
    • First observedget_company
    • First observedget_contact
    • First observedget_contact_timeline
    • First observedget_day
    • First observedget_tag
    • First observedget_tag_items
    • First observedget_task_header
    • First observedget_tasks_overdue
    • First observedget_tasks_today
    • First observedlink_entry_contact
    • First observedlink_note_contact
    • First observedlink_notes
    • First observedlink_tag
    • First observedlink_task_contact
    • First observedlink_task_note
    • First observedlist_companies
    • First observedlist_contacts
    • First observedlist_days
    • First observedlist_entries
    • First observedlist_notes
    • First observedlist_tags
    • First observedlist_task_headers
    • First observedlist_tasks
    • First observedpin_note
    • First observedrestore_note
    • First observedsearch
    • First observedsearch_companies
    • First observedsearch_contacts
    • First observedsnooze_task
    • First observeduncomplete_task
    • First observedunlink_entry_contact
    • First observedunlink_note_contact
    • First observedunlink_notes
    • First observedunlink_tag
    • First observedunlink_task_contact
    • First observedunlink_task_note
    • First observedupdate_company
    • First observedupdate_contact
    • First observedupdate_day
    • First observedupdate_entry
    • First observedupdate_note
    • First observedupdate_tag
    • First observedupdate_task
    • First observedupdate_task_header

TDQS

A3.8/5.0
Disambiguation5/5

Each tool has a uniquely defined purpose, targeting specific entity types and actions (e.g., link_note_contact vs link_entry_contact). Even with 62 tools, the descriptions clearly differentiate them, making it easy for an agent to select the correct one.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern (e.g., create_contact, list_contacts, update_task). The few multi-word nouns (e.g., get_contact_timeline) still adhere to the pattern. No mixing of conventions like camelCase or inconsistent verb prefixes.

Tool Count2/5

With 62 tools, the server is far above the typical well-scoped range of 3-15. While each tool may have a distinct role, the sheer number could overwhelm an agent, and many linking operations could be consolidated into a single parameterized tool.

Completeness5/5

The tool surface covers full CRUD for all major entities (contacts, companies, entries, tasks, notes, tags, days, task headers), plus relational linking, search, changelog, and agent instructions. There are no obvious gaps in the domain's lifecycle.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    An MCP server enabling AI assistants to store, retrieve, and manage contextual information across conversations with features like persistent memory, advanced search, tagging, and privacy controls.
    -
  • F
    license
    A
    quality
    D
    maintenance
    An MCP server that integrates the Dex personal CRM API with AI assistants to manage contacts, groups, tags, and reminders through 27 specialized tools. It enables users to perform unified searches and execute full CRUD operations on their CRM data via natural language.
    28
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A MCP server that provides persistent memory for AI assistants, storing personal information, relationships, and observations to enable personalized and contextual conversations.
    4
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A personal AI assistant server that provides MCP tools for notes, files, reminders, memory, shell, browser, and 30+ SaaS integrations, enabling AI clients to access and manage your data across sessions.
    3,953
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nicolascroce/keepsake-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server