Dayze MCP
Dayze MCP provides AI agents with life-context and notable-people knowledge packs, plus access to a user's private CRM, calendar, memories, expenses, and trackers.
Public notable-people tools (no API key): search the catalog (
notable_search), fetch a profile (notable_profile), get a full knowledge pack with life-in-days, similar people, and birthday peers (notable_pack), or a premium guaranteed-quality pack (notable_pack_premium).Private life-context tools (API key required): get the user's current life snapshot (
get_life_context), a full Life Context Protocol pack (get_context_pack), and a life-graph export (get_life_graph).CRM/contacts: list user contacts (
get_people) and explore a person's neighborhood in the life graph (get_person_neighborhood).Personal data: retrieve calendar events (
get_events), semantic/recent memories (get_memories), expense summaries (get_expenses), and habit trackers (get_trackers).Semantic search: search across the user's life graph — events, people, and memories (
search).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Dayze MCPshow me the life-in-days for Albert Einstein"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Dayze MCP
Life Context for AI agents — reference Life Context Protocol (get_context_pack) plus public notable-people packs.
Listed on LightNow: https://lightnow.ai/servers/com.dayze/life-context
Cursor / Grok Bot
This repo is a Cursor Plugin (v1.33.0): .cursor-plugin/plugin.json, skills/dayze-life-context/, URL-only root mcp.json, plus Codex/ChatGPT metadata in .codex-plugin/ and .mcp.json.
Dayze Contacts is the private CRM. Advertised MCP names stay get_people, create_person, update_person, resolve_person (stable). Call aliases get_contacts / create_contact / update_contact / resolve_contact work on the hosted server. Public People stays notable_*.
Publish to Cursor Marketplace: submit https://github.com/gohluke/dayze-mcp at https://cursor.com/marketplace/publish (see PUBLISH.md). ChatGPT plugin is already live.
Until marketplace review lands, test locally:
mkdir -p ~/.cursor/plugins/local
ln -s /path/to/dayze-mcp ~/.cursor/plugins/local/dayzeReload Cursor (Developer: Reload Window), open Customize, and click Connect. Sign in to Dayze in the browser. Do not paste an API key — Cursor discovers OAuth from RFC 9728. Same Connect flow for Cursor desktop, Cursor web, and Grok Bot.
Docs: https://dayze.com/docs/agents
Website | |
Agents docs | |
Streamable HTTP | |
REST MCP | |
Discovery | |
Server card | |
OpenAPI | |
OAuth PRM | |
OAuth AS | |
x402scan | https://www.x402scan.com/recipient/0x4DeE3CDA6cb33b1f7A29dE1385B192F802AE3EDa/resources |
Related MCP server: cathedral-mcp
Pitch
Dayze is a pay-per-call people + life-in-days API for AI agents — notable packs with day-of-life numbers, similar people, and birthday peers. Public notable_* tools need no API key; USDC on Base via x402 after the free tier.
Quick try
# Streamable HTTP (JSON-RPC)
curl -X POST https://dayze.com/api/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'
curl -X POST https://dayze.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# REST (compat)
curl https://dayze.com/api/mcp
curl -X POST https://dayze.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"tool":"notable_pack","parameters":{"slug":"albert-einstein"}}'Timeline events include day_number (e.g. Einstein’s Nobel = Day 15,580).
Auth
Public
notable_*tools: no login (x402 after free tier)Private life-graph tools:
Bearer dayze_k_…or OAuthdayze_at_…OAuth 2.1 + PKCE + DCR for Claude / ChatGPT / Gemini agents — see https://dayze.com/docs/agents
Transport
Streamable HTTP JSON-RPC at
/api/mcp(initialize,tools/list,tools/call)REST MCP-compatible at
/api/v1/mcp(GETcapabilities,POST{tool, parameters})GET
/api/mcpreturns discovery JSON (200); SSE sessions are not available on Netlify serverless
Tags
mcp · x402 · ai-agents · notable-people · life-in-days · knowledge-api · base · usdc
Glama install / Make Release
Dayze MCP is hosted at https://dayze.com/api/mcp. This repo ships a local
stdio adapter (server.mjs) so Glama can build/scan without putting a URL in CMD
(Glama rejects remote endpoints in CMD arguments).
Open https://glama.ai/mcp/servers/gohluke/dayze-mcp/admin/dockerfile
Build steps:
["npm install"]CMD arguments:
["node", "./server.mjs"]Click Build → wait for green → Build & Release (
1.6.2)
If Glama keeps checking out an old commit, use build steps:
["git fetch origin && git checkout origin/main", "npm install"]
Prefer connecting clients directly to https://dayze.com/api/mcp (Streamable HTTP + OAuth).
License
Documentation and listing metadata in this repo: MIT. The Dayze product and API remain proprietary; this repo exists so directories can index a public GitHub URL.
Available Tools
129 toolsadd_inventory_itemAdd Inventory ItemAInspect
Add an owned object to Life Inventory. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | Inventory item record. |
| message | No | |
| inventory_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly=false, destructive=false), the description discloses the $0.10 cost and API-key requirement, which are useful operational constraints. It does not discuss duplicate handling or creation side effects, but the schema covers idempotency keys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with the purpose first and cost/auth appended compactly. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create-style tool with an output schema and documented idempotency parameters, the description covers the main purpose and operational prerequisites. It could mention duplicate behavior or when to use update instead, but these lacks are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so the schema already explains request_id and idempotency_key. The description adds little parameter-specific meaning; 'owned object' only weakly implies that name identifies the object being added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and resource ('an owned object to Life Inventory'), making the core function clear. It does not expressly contrast itself with sibling add_inventory_valuation, but the 'item' vs 'valuation' distinction is inferable from name and wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to choose this tool over alternatives such as update_inventory_item, archive_inventory_item, or add_inventory_valuation, and no exclusions or prerequisites are stated beyond the API key requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_inventory_valuationAdd Inventory ValuationBInspect
Append immutable valuation observation. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| currency | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| inventory_id | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| valuation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: the operation appends an immutable observation, costs $0.10, and requires an API key. Annotations already indicate it is a write operation, but the description usefully discloses immutability and cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the action. The parenthetical cost and API key requirement earn their place without adding fluff. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple append operation, the description covers the essential behavioral facts: immutability, cost, and authentication. However, it is incomplete as a standalone guide because it omits usage context and leaves the core parameters (value, currency, inventory_id) semantically under-specified despite low schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, and the description does not explain value, currency, or inventory_id. The phrase 'valuation observation' hints at the meaning of value, but the description does not compensate for the missing parameter documentation, especially for required fields like inventory_id and the optional currency format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Append' and the resource 'valuation observation', making the core operation clear. The word 'immutable' also implicitly distinguishes it from update/delete tools, though it does not explicitly name sibling tools or state what it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus siblings like get_inventory_valuations, update_inventory_item, or add_inventory_item. It mentions API key and cost, which are prerequisites, but gives no context about when this tool is the right choice or when an alternative should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_person_aliasAdd Person AliasAInspect
Add a nickname/payment handle/misspelling alias for one CRM person. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| source | No | ||
| person_id | Yes | ||
| alias_kind | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| alias | No | |
| aliases | No | |
| message | No | |
| change_id | No | |
| person_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, non-destructive write operation. The description adds cost ($0.05) and API key requirement, which are not in annotations. However, it does not disclose behavior like duplicate handling or error responses. The added context is useful but limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose (add alias) and appends cost/auth details. It contains no filler or redundant information, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, only two required, and schema covering only idempotency keys, the description leaves critical parameters like source and alias_kind unexplained. It also does not mention idempotency behavior despite having request_id fields. The output schema exists, but the description provides insufficient guidance for correct invocation, especially for optional parameters and expected outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (33%) with only idempotency keys described. The description gives hints about the 'alias' parameter via examples but leaves person_id, source, and alias_kind unexplained. With low coverage, the description should compensate but does not adequately clarify the required and optional parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add' and the resource 'alias' for a CRM person, with examples of alias types (nickname, payment handle, misspelling). This differentiates it from siblings like remove_person_alias and update_person_alias by explicitly indicating an additive operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to add an alias) but does not explicitly mention alternatives or state when not to use it. There is no reference to update or remove operations, leaving usage guidance solely implied by the 'Add' wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_assetArchive AssetADestructiveInspect
Soft-delete an asset (sets archived_at). Original rows are preserved for versioning. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | No | |
| message | No | |
| archived | No | |
| asset_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the destructiveHint=true annotation by clarifying that this is a soft-delete: it sets archived_at and preserves original rows for versioning. This materially reduces the risk of an agent assuming permanent destruction. It also mentions the cost and API key requirement, adding operational transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. The core action and state change come first, followed by the preservation behavior and then operational prerequisites. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool's purpose, effect, cost, auth requirement, and non-destructive nature are all covered. The main omission is the return value or response shape, especially since no output schema is provided, but for a simple soft-delete operation the provided context is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with request_id and idempotency_key already described in the schema. The description itself does not add parameter-level detail, but asset_id is self-explanatory given 'archive an asset.' The description does not compensate for the undocumented asset_id semantics, but the gap is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Soft-delete an asset (sets archived_at).' This is a specific verb plus resource, and it distinguishes the tool from related siblings like upload_asset and update_asset by clarifying the archive semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied through the 'soft-delete' and 'archive' language, so an agent can infer when to use it. However, it does not explicitly state when not to use it or mention alternatives such as update_asset, upload_asset, or a hard-delete path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_eventarchive eventAInspect
Reversibly archive one owned event; preserve linked data and return restore_id. Use a new request_id for each intended action. ($0; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| event_id | Yes | ||
| request_id | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| changed | No | |
| expires_at | No | |
| preview_id | No | |
| restore_id | No | |
| server_time | No | |
| candidate_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate non-read-only and non-destructive. The description adds critical behavioral details: the action is reversible, linked data is preserved, and a restore_id is returned. This goes well beyond the structured annotations and gives an agent a clear model of the operation's side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with a parenthetical covering cost and auth requirement. It is front-loaded with the core action and includes no redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value details are covered elsewhere. The description explains reversibility, data preservation, and the idempotency requirement. It mentions the ownership constraint ('owned event') but does not clarify the optional 'reason' parameter or any additional permissions beyond API key. Still, it is sufficiently complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only idempotency_key described as alias for request_id). The description adds meaning to request_id ('use a new one for each action') but leaves event_id and reason unexplained. Given the low schema coverage, the description should compensate more, but it only partially does so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('archive') and resource ('owned event'), and the qualifier 'reversibly' distinguishes it from permanent deletion (delete_event) and aligns with the sibling restore_event. Mentions preserving linked data and returning a restore_id, making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete guidance to use a new request_id per action, which is useful for idempotency. However, it does not explicitly state when to use this tool vs. alternatives like delete_event or restore_event, though the word 'reversibly' implicitly suggests it for non-permanent archival. Lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_expensearchive expenseAInspect
Reversibly archive one owned expense; preserve linked data and return restore_id. Use a new request_id for each intended action. ($0; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| expense_id | Yes | ||
| request_id | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| changed | No | |
| expires_at | No | |
| preview_id | No | |
| restore_id | No | |
| server_time | No | |
| candidate_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: it states the operation is reversible, preserves linked data, returns a restore_id, requires an API key, and costs $0. It also explains the idempotency requirement for request_id. These are meaningful disclosures that go beyond the bare readOnlyHint/destructiveHint flags and help the agent understand side effects and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact three-sentence structure (including the parenthetical cost/auth note). The primary purpose is front-loaded, followed by the idempotency instruction and then operational constraints. Every sentence contributes information, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential behavior, idempotency, authentication, and cost. Since an output schema exists, it need not detail return values, and the description mentions restore_id anyway. It could mention that archived expenses can be restored via restore_expense, but that is an optional improvement. For a single-resource archive operation, the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage, the description is expected to compensate. It does add semantics for request_id ('use a new one for each intended action') and expense_id (implies 'owned expense'), but it does not explain the 'reason' parameter at all. The schema itself only describes idempotency_key as an alias, so the description only partially fills the gap. It is not completely unhelpful, but it could do more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'archive', the resource 'expense', and the specific scope 'one owned expense', which distinguishes it from sibling archive tools for assets, events, trips, etc. It also adds key behavioral details (reversible, preserve linked data, return restore_id) that make the purpose unambiguous. The name alone would be vague, but the description pins down exactly what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear contextual guidance: it is for archiving an owned expense, it is reversible (implying not for permanent deletion), and it instructs to use a new request_id for each intended action, which is an explicit usage rule. It does not explicitly name alternatives like delete_event or restore_expense, but the context makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_inventory_itemArchive Inventory ItemADestructiveInspect
Archive instead of destructive delete. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| inventory_id | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| archived | No | |
| inventory_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=true, so the description correctly aligns with a mutating, destructive-intent operation. The description adds important context: the operation is non-destructive in terms of data loss ('archive instead of destructive delete'), there is a $0.10 monetary cost, and an API key is required. Ironically, the annotation destructiveHint=true may mean the operation is considered destructive (e.g., it removes the item from active lists), but the description clarifies it is not a permanent delete. The description adds value beyond annotations by disclosing cost and authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence with three useful clauses: the operation type, the cost, and the auth requirement. It front-loads the most important behavioral distinction ('Archive instead of destructive delete'). It could be slightly more structured (e.g., separate cost and auth into a second sentence), but it earns every word and has no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema, 4 parameters, and destructiveHint=true, the description is minimally adequate: it tells the agent this is an archival operation with cost and auth requirements. But it doesn't explain the meaning of reason, what happens to the archived item (e.g., is it still visible in get_inventory?), or how retries work with idempotency keys (though the schema documents retries). Given the output schema exists, return values don't need explanation, but the behavioral consequence of archiving is left partially inferred.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, with documented parameters being request_id and idempotency_key. The description does not explain inventory_id or reason beyond the schema's basic type declarations. However, the description's 'Archive instead of destructive delete' implies inventory_id is the target item, and reason is presumably an audit/archive reason. Baseline 3 is appropriate because the schema covers half the parameters and the description partially compensates by clarifying the operation's nature, but it doesn't add specific meaning to the undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses 'Archive instead of destructive delete' which clearly indicates the operation is a non-destructive archival action on an inventory item. It distinguishes itself from delete operations by emphasizing it is not destructive, though it doesn't name a specific sibling alternative like delete_event or delete_food. The related get_inventory_item, update_inventory_item, and add_inventory_item siblings help contextualize it, but the primary behavior (archive an inventory item) is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'instead of destructive delete' phrase provides an implicit usage guideline: use this when you want to remove an inventory item from active use without permanently destroying it. However, it does not explicitly state when to use this over update_inventory_item (e.g., when the item should be retired) or contrast with alternative archive tools like archive_asset, nor does it mention the $0.10 cost as a decision factor. This is adequate but relies on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_triparchive tripAInspect
Reversibly archive one owned trip; preserve linked data and return restore_id. Use a new request_id for each intended action. ($0; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| trip_id | Yes | ||
| request_id | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| changed | No | |
| expires_at | No | |
| preview_id | No | |
| restore_id | No | |
| server_time | No | |
| candidate_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's not read-only and not destructive, and the description adds valuable context: it's reversible, preserves linked data, returns a restore_id, and requires an API key. The note about using a new request_id for each action is also behavioral. No contradiction 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that state the core purpose first, then add behavioral details and a critical usage instruction. Every sentence earns its place, and there's no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple archive operation, the description covers the essential points: what it does, reversibility, linked data preservation, return value (restore_id), and idempotency guidance. It omits details about optional parameters like reason, but those are not critical for calling the tool. The output schema exists, so return details are handled there. Overall, it's nearly 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (idempotency_key has a description), and the description does not explain trip_id or reason. However, it does clarify that request_id should be new for each action, which adds meaning beyond the schema. For the other parameters, the schema itself lacks descriptions, and the description doesn't compensate, so it's a partial but not complete job.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (archive), the resource (one owned trip), and key behavioral aspects (reversible, preserves linked data, returns restore_id). It distinguishes from sibling tools like restore_trip by emphasizing reversibility, but it doesn't explicitly name alternative archive tools for other resource types, so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit instruction about using a new request_id for each intended action, which is a concrete usage guideline. However, it doesn't specify when to choose archive_trip over alternatives like delete_event or other archive_* tools; the guidance is implicit through the 'reversible' and 'preserve' wording but lacks explicit when/not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_assetAttach AssetAInspect
Link an existing asset_id to another entity by creating a linked copy (does not move the original row). Roles: original | processed | thumbnail | cover | document | receipt | certificate | other. Legacy: pass url instead of asset_id. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| role | No | original | cover | thumbnail | … | |
| asset_id | No | ||
| metadata | No | ||
| entity_id | Yes | ||
| asset_type | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| entity_type | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | No | |
| message | No | |
| asset_id | No | |
| attached | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal, so the description carries the burden. It discloses the key side effect: it creates a linked copy rather than moving the original row. It also adds legacy URL behavior, role values, cost, and API-key requirements. It does not describe failure modes or output behavior, but the core semantics are clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and well-front-loaded. The first sentence delivers the operation and its main caveat, followed by compact role and legacy/cost information. Every sentence contributes practical information, though the role list is partially redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters, nested objects, and low schema coverage, the description is only minimally sufficient. It explains the main operation and one parameter relationship but leaves key invocation details—entity_type/entity_id allowed values, metadata/asset_type semantics, and URL vs. asset_id precedence—incompletely specified. The output schema helps, but the overall context is not fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema description coverage, the description must compensate for undocumented parameters. It does explain asset_id vs. URL legacy behavior and role values briefly, but entity_type, entity_id, metadata, asset_type, and idempotency behavior are left under-explained. It also omits a valid schema enum value, 'photo', from its Roles list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with an explicit verb and resource: 'Link an existing asset_id to another entity by creating a linked copy.' This is clearly distinct from upload_asset, update_asset, and archive_asset, and the clarifying clause 'does not move the original row' removes ambiguity about whether this is a move operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for the intended use: linking an existing asset to an entity, creating a linked copy, and supporting a legacy URL path. It also notes API key and cost requirements. It stops short of explicitly saying when not to use this tool or naming upload/update/archive as alternatives, so it is not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_peopleAudit People (compact)ARead-onlyInspect
CONTEXT LAYER: server-side contact hygiene. Returns compact candidate clusters only (duplicates, entity-type hints, normalization, payment-handle collisions). Do NOT use get_people bulk dumps for cleanup. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| checks | No | ||
| min_confidence | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| summary | Yes | |
| guidance | No | |
| candidates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive. The description adds useful behavioral context: it is server-side, returns only compact candidate clusters, costs $0.10, and requires an API key. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: context, output, usage warning, and cost/auth are each conveyed in a single concise statement. Every sentence adds value, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives the essential context, output shape, and auth/cost details, and an output schema exists. However, because the parameters are entirely undocumented in both schema and description, the tool is not fully callable without guessing or external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of limit, checks, or min_confidence. The output-type hints (duplicates, normalization, etc.) are loosely related to possible checks but do not map to the actual parameters, leaving the agent without meaningful parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: server-side contact hygiene returning compact candidate clusters for duplicates, entity-type hints, normalization, and payment-handle collisions. It also explicitly contrasts with get_people bulk dumps, helping differentiate it from a closely related sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear use context (cleanup candidate clusters) and explicitly warns against using get_people bulk dumps for cleanup. However, it does not mention other relevant siblings like score_people_duplicates or start_people_cleanup, so the alternative-selection guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_dismiss_clarificationsBulk Dismiss ClarificationsBInspect
Dismiss non-person / typed junk from the clarification queue. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| entity_type | No | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| dismissed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not a read-only operation (readOnlyHint=faalse). The description adds cost ('$0.05') and authentication ('API key required'), which are useful semantics beyond the annotations. However, it does not explain side effects such as whether the action is reversible, how many items are affected, or the exact criteria for 'non-person / typed junk'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence plus a parenthetical is extremely concise and front-loaded: the core action and scope are stated first, then cost and auth requirements. No words are wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no required parameters and four optional ones, but the description leaves the meaning of 'bulk' and the valid inputs (reason, entity_type) ambiguous. It also does not say how it differs from the per-item dismiss_clarification. The presence of an output schema helps with return values, but an agent still lacks enough context to construct a correct call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 50% of parameters: request_id and idempotency_key are described; reason and entity_type are bare strings. The tool description does not clarify what values reason or entity_type should accept, and the phrase 'typed junk' only loosely hints at entity_type's role. It does not compensate for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Dismiss') and resource ('the clarification queue') with a clear scope: non-person / typed junk. The 'bulk' in the tool name and this qualifier distinguish it from the sibling 'dismiss_clarification', which presumably handles a single item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like dismiss_clarification or resolve_clarification. The use case is implied ('dismiss non-person / typed junk') but no explicit conditions, prerequisites, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
classify_contactClassify ContactAInspect
Set entity_type (person/company/merchant/…) on a CRM row without losing transactions or links. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | ||
| entity_id | No | ||
| person_id | No | ||
| confidence | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| entity_type | Yes | ||
| idempotency_key | No | Alias for request_id. | |
| identity_status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| person | No | |
| message | No | |
| change_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutation), destructiveHint=false (not destructive), and openWorldHint=false (closed world). The description adds transparency by stating that classification won't lose transactions or links, which is valuable behavioral context for a mutation tool. It also mentions cost and API key requirement, which are beyond annotations. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that front-loads the core action and critical safety guarantee. The cost and authentication requirements are appended parenthetically without clutter. There is zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, combined with the annotations and output schema, covers most of what an agent needs: it's a safe mutation, it won't lose data, it requires an API key and costs $0.10. The only missing context is clarification on parameter usage (e.g., how entity_id vs person_id are used, what confidence means), but with an output schema present and the safety profile clear, the description is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only request_id and idempotency_key have descriptions), so the description must compensate for the other 6 parameters. The description only explains entity_type's role, but doesn't clarify source, entity_id, person_id, confidence, identity_status, or the relationship between request_id and idempotency_key. While some parameters (like entity_id, person_id) may be self-explanatory, the description doesn't add significant semantic value beyond what's in the schema. Baseline 3 is appropriate, but it could be higher if it explained parameter interplay.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool sets entity_type on a CRM row, with a specific list of allowed values (person/company/merchant/…). It differentiates from similar tools like convert_contact_entity and update_person_identity by focusing on entity_type classification without losing transactions or links. However, it doesn't explicitly name these siblings, so while purpose is clear, sibling differentiation is not explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for classifying a contact's entity type, and the emphasis on 'without losing transactions or links' suggests it's the safe alternative to destructive or lossy operations. However, there is no explicit when-to-use/when-not-to-use guidance or direct mention of alternatives. An agent would need to infer when this tool is preferred over others like convert_contact_entity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cleanup_applycleanup applyAInspect
Atomically archive the exact reviewed preview. Requires preview_id, candidate_hash and request_id. Refuses changed sources. Returns per-row statuses and restore_id; replay performs no additional actions. ($0; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| preview_id | Yes | ||
| request_id | Yes | ||
| candidate_hash | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| changed | No | |
| expires_at | No | |
| preview_id | No | |
| restore_id | No | |
| server_time | No | |
| candidate_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate non-read-only and non-destructive, so the description carries the full burden. It discloses atomicity, the refusal condition, idempotency ('replay performs no additional actions'), output (per-row statuses and restore_id), and auth/cost. This is rich 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—one sentence with semicolons—yet packs the action, requirements, conditions, output, idempotency, and cost. It is front-loaded with the primary verb and resource, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the action, required inputs, behavior, output (including restore_id), idempotency, and auth/cost. It does not explicitly link to cleanup_preview or restore_cleanup, but the presence of a restore_id and the requirement of a preview_id imply the workflow. Given the output schema exists, return details are sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (idempotency_key's alias). The description lists the three required params and hints at candidate_hash's role via 'exact reviewed preview' and 'Refuses changed sources', but does not explain the format or exact meaning of each. It adds some semantics but not enough to fully compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('archive') and resource ('exact reviewed preview'), and explicitly requires preview_id, candidate_hash, and request_id, which distinguishes it from cleanup_preview (which creates the preview) and other apply-like siblings. The 'Refuses changed sources' clause adds a distinctive behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it is the apply step after a preview exists, requires those three parameters, refuses changed sources, and notes that replay is idempotent. It implies when to use it but does not explicitly name alternative tools or state 'use after cleanup_preview'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cleanup_previewcleanup previewARead-onlyInspect
Read-only account audit and durable archive plan for events, expenses or trips. Returns source hashes, linked records, field differences, rollback payloads and a review queue. Review the exact candidate set before cleanup_apply. Preview expires after 30 minutes. ($0; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| family | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| changed | No | |
| expires_at | No | |
| preview_id | No | |
| restore_id | No | |
| server_time | No | |
| candidate_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive; the description reinforces that and adds useful behavioral details: the preview expires after 30 minutes, requires an API key, costs nothing, and returns specific audit artifacts. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, information-dense sentences with the core purpose front-loaded. Every sentence contributes value: scope, outputs, relationship to cleanup_apply, expiry, and cost/auth. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with an output schema and annotations, the description is largely complete: it names the parameter scope, outputs, expiry, and usage context. It could clarify what consumers should do with the returned hashes or rollback payloads, but the output schema likely carries that detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'family' with an enum and no descriptions, so the description must compensate. It does mention 'events, expenses or trips', matching the enum values, which gives minimal meaning. However, it does not explain how the family value affects the audit output or what exactly 'family' represents beyond those categories.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('read-only account audit') and a clear resource scope ('events, expenses or trips'), lists concrete outputs (source hashes, rollback payloads, review queue), and explicitly distinguishes itself from the sibling cleanup_apply. An agent can understand what this tool does and how it relates to the cleanup workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit usage instruction: 'Review the exact candidate set before cleanup_apply.' This clearly positions the tool as a pre-apply review step. It does not name alternative tools or state when not to use it, but the read-only preview framing and 30-minute expiry provide enough context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commit_life_updateCommit Life UpdateBInspect
Owner approve+commit via payload_hash + owner_session_id (flagged; off by default). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | No | ||
| proposal_id | Yes | ||
| payload_hash | Yes | ||
| idempotency_key | No | ||
| owner_session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | No | |
| message | No | |
| assertionIds | No | |
| graphVersion | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses three behavioral traits the structured fields do not: the feature flag is off by default, an API key is required, and each call costs $0.10. That is exactly the kind of operational context annotations cannot convey, though it omits whether a commit is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight fragments with parenthetical qualifiers — the gating facts (flag, cost, auth) are front-loaded and nothing is padded. The telegraphic style borders on cryptic, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the cost/flag/auth profile is covered. Still missing for a write/commit tool: whether the operation is idempotent or reversible, and what payload_hash must match — a material gap given three required parameters with no schema documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, and the description only gestures at two of them (payload_hash, owner_session_id) without explaining format, provenance, or purpose. proposal_id, request_id, and idempotency_key are left entirely undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names a specific action ('Owner approve+commit') and the key credentials involved (payload_hash, owner_session_id), which implies it finalizes a proposal created by propose_life_update. But 'life update' is never defined and the verb phrase 'approve+commit' is compressed jargon, so an agent must infer the resource being mutated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'flagged; off by default' and 'API key required' give real gating conditions for when this call is permitted. However, it never names propose_life_update as the prerequisite step or explains when an owner should choose to commit versus leave a proposal pending.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_livesCompare Two LivesARead-onlyInspect
Side-by-side notable packs for two slugs (life_in_days + day_number timelines). One call instead of two notable_pack. Example: elon-musk vs steve-jobs. ($0.08)
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD target date for both packs | |
| peers | No | ||
| slug_a | Yes | First person slug | |
| slug_b | Yes | Second person slug | |
| similar | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| a | Yes | First notable-person knowledge pack. |
| b | Yes | Second notable-person knowledge pack. |
| pack | Yes | |
| compare | Yes | Computed comparison fields and URLs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so no contradiction exists. The description adds useful behavioral context beyond the annotations: it packages what would be two notable_pack calls into one, notes the timeline format, and discloses the $0.08 cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise semantic units in one sentence: what it returns, why it is preferable to calling notable_pack twice, and a concrete example. No filler words or redundant restatements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with only two required parameters, the description plus the input schema and annotations gives an agent everything needed to call it correctly. It also includes enough comparison-specific context to choose this over notable_pack, and the cost and timeline details remove the main remaining unknowns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
slug_a and slug_b have schema descriptions, and the example reinforces what a slug looks like. However, the description adds nothing about date, peers, or similar, and peers/similar are not described in the schema either, so the 40% schema-description gap is left uncompensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear operation: produce side-by-side notable packs for two slugs. It names the resource (notable packs with life_in_days + day_number timelines) and explicitly differentiates itself from notable_pack by noting it replaces two calls. The elon-musk vs steve-jobs example grounds the abstraction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names notable_pack as the alternative and frames compare_lives as the one-call version for comparing two people. It doesn't give formal when-not conditions, but the intended context is clear enough for an agent to decide when to pick this over a single notable_pack call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_contact_entityConvert Contact EntityAInspect
Convert a contact’s entity_type (same as classify_contact). Preserves FKs. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | No | ||
| person_id | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| target_type | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| person | No | |
| message | No | |
| change_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, so the description's job is to add behavioral detail beyond that. The description notes 'Preserves FKs', which is a useful behavioral guarantee that foreign keys are not broken, and mentions pricing ($0.10) and API key requirement, adding context not in annotations. However, it doesn't disclose whether the operation is reversible, what happens to existing relationships, or what the output looks like, though an output schema exists. The description does not contradict annotations, so no contradiction flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence with high information density: it states the action, its equivalence to a sibling, a key guarantee (preserves FKs), and operational details (pricing, API key). Every word earns its place, no fluff or redundancy. It's front-loaded with the core purpose before the parenthetical notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the schema has 5 parameters with low coverage, an output schema exists, and the operation is a simple conversion, the description is fairly complete. It covers the core action, equivalence, FK guarantee, and cost/auth details. However, it could be enhanced by clarifying the difference between entity_id and person_id and the allowed target_type values, but the output schema and annotations help. It's not fully complete but adequate for a straightforward mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description must compensate for undocumented parameters. The description mentions 'entity_type' which maps to 'target_type' parameter, but does not explain the meaning of 'target_type' values or the roles of 'entity_id' vs 'person_id'. It also hints at 'request_id' via idempotency context, but not fully. The description adds some value by referencing entity_type, but leaves ambiguity about which identity parameter to use and target enum values. Baseline is 3 due to moderate coverage, but description doesn't fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Convert') and resource ('a contact's entity_type'), which clearly conveys the operation. It also references a sibling tool 'classify_contact', noting they are the same operation, which helps distinguish it from other contact/property tools. However, it doesn't explicitly state the purpose beyond the action, like what conversion means in terms of the domain, but the verb and resource are clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions 'same as classify_contact', which signals to the agent that this tool is equivalent to a sibling, but does not provide explicit when-to-use vs alternatives or when NOT to use it. The mention of preserving FKs is a key usage hint, implying it's safe to convert without breaking relationships. However, it lacks clarity on conditions like whether the contact must be a person or company, or why you'd choose this over classify_contact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_personCreate ContactAInspect
Add a Dayze Contacts record; checks duplicates first. Advertised name create_person is stable; tools/call also accepts create_contact. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| tier | No | ||
| No | |||
| notes | No | ||
| phone | No | ||
| aliases | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| relationship | No | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| person | No | CRM person record. |
| created | No | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a non-read, non-destructive mutation, so the description adds value with duplicate-checking behavior, required API key, and cost. It does not specify what happens when a duplicate is found, but the stated behaviors go beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the primary purpose. The remaining sentences each add useful operational information: duplicate checking, name alias, cost, and auth requirement. No filler or redundant restating of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schemaable, the tool has nine parameters with mostly undocumented semantics and no usage guidance versus sibling contact tools. The description covers auth and duplicate checking but leaves too many gaps for reliable invocation in edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 22%, with request_id and idempotency_key already explained in the schema. The tool description adds no meaning for name, tier, email, notes, phone, aliases, or relationship, leaving the agent with only raw types and a required name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Add a Dayze Contacts record'. This clearly distinguishes create_person from siblings like create_place and add_person_alias. The duplicate-check note adds useful behavioral context without muddying the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not say when to use this tool versus alternatives such as update_person, merge_people, or add_person_alias. 'Checks duplicates first' hints at a creation workflow, but there is no explicit guidance about when not to use it or which sibling handles related cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_placeCreate Place CardAInspect
Save a venue card (business_contacts): address, opening_hours, affordability ($/$$/$$$), notes, tags. Idempotent by name or idempotency_key — does not create calendar notes. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | ||
| city | No | ||
| name | Yes | ||
| tags | No | ||
| hours | No | Alias for opening_hours | |
| notes | No | ||
| phone | No | ||
| address | No | ||
| country | No | ||
| website | No | ||
| category | No | restaurant|cafe|supermarket|shop|hawker|… (aliases mapped to business_contacts.category) | |
| latitude | No | ||
| longitude | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| description | No | ||
| price_level | No | Alias for affordability | |
| hours_source | No | agent | google_places | user | |
| affordability | No | $ | $$ | $$$ (or 1–3) | |
| opening_hours | No | ||
| phone_numbers | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| place | No | Saved place card. |
| created | No | |
| message | No | |
| place_id | No | |
| duplicate | No | |
| business_contact_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the non-read/non-destructive profile, so the bar is lower. The description adds genuinely useful context: idempotency behavior ('Idempotent by name or idempotency_key'), a cost signal ($0.10), and an auth requirement (API key required) — all beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the primary purpose front-loaded, then behavioral constraints. Efficient; slight density of parenthetical signals but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need not be explained, and annotations cover the safety profile. However, for a 21-param creation tool with 29% schema coverage, the description omits many parameter semantics and gives no explicit relationship to siblings like update_place or resolve_place.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29%, and the description only names a handful of fields (address, opening_hours, affordability, notes, tags) out of 21 params. It doesn't clarify the alias relationships (hours↔opening_hours, price_level↔affordability) that the schema does document, leaving substantial gaps the description does not compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Save a venue card') and enumerates the fields it holds (address, opening_hours, affordability, notes, tags). It is clearly a creation tool distinct from get_place/get_places/update_place siblings, but it does not explicitly name those siblings the way a 5 would.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'does not create calendar notes' implies when-not usage by exclusion, but there is no explicit guidance on when to use create_place versus resolve_place or enrich_place_from_google. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_eventDelete Event (calendar remove)AInspect
Reversibly archives one owned event. Required event_id and request_id. Returns the prior row in deleted for compatibility, changed, restore_id and life_state_rebuilt. All food, people and asset links are preserved. Restore with restore_event. Replays perform no additional action. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | UUID of a calendar event the authenticated user owns | |
| request_id | Yes | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes | A Dayze calendar event record. |
| event_id | Yes | |
| food_deleted_ids | Yes | |
| life_state_rebuilt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false. The description adds significant context: reversible (archives), preserves food/people/asset links, returns prior row for compatibility, idempotent replays, and includes cost/API-key requirements. This goes well beyond annotations and covers important behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero waste. The purpose is front-loaded, then required params, return values, preservation, restore, idempotency, and cost are each mentioned in order. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a reversible delete tool with an output schema, the description covers what is returned (prior row, changed, restore_id, life_state_rebuilt), what is preserved (links), idempotency, restore path, and cost/authentication. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes event_id and request_id as required, with idempotency_key as an alias. The description reiterates these but adds the 'replays' behavior tied to request_id, which is a slight extra. Since the schema carries the parameter meaning, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('archives') and resource ('one owned event'), and clarifies it is reversible. It distinguishes from siblings like archive_event and restore_event by framing it as a reversible delete that preserves links. The purpose is unambiguous and differentiates from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly points to restore_event for reversal and notes idempotency ('Replays perform no additional action'), which guides retry behavior. However, it does not explicitly contrast with archive_event or other delete tools, leaving some ambiguity about when to prefer this over a plain archive. The restore guidance is clear, so a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_foodDelete Food (Food Diary remove)ADestructiveInspect
MUTATES by removing one Food Diary row the authenticated user owns and its mirrored calendar event. Required: food_id (UUID). Prefer this over delete_event for meals logged via log_food. Unknown or other-user food_id returns an error. Rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| food_id | Yes | UUID of a Food Diary row the authenticated user owns | |
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes | Deleted food diary row. |
| food_id | Yes | |
| event_id | No | |
| life_state_rebuilt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, and the description adds substantial behavior: it removes the mirrored calendar event, rebuilds life_state, returns an error for unknown/other-user food_id, and notes that share tokens cannot write. This goes far beyond the annotations, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: the mutating effect, required param, sibling routing, error behavior, side effect, auth requirements, and cost. Front-loaded with 'MUTATES' and sized appropriately for the information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, target, side effects, error conditions, auth, and cost. With output schema present, return values need no explanation. Complete for a destructive single-object deletion tool with 3 parameters and rich annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates that food_id is required and is a UUID, but adds no extra semantics for request_id or idempotency_key beyond what the schema already provides. It is adequate but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('removing'), resource ('Food Diary row'), ownership scope ('the authenticated user owns'), and the mirrored calendar event side effect. The title and description together make it clear this is the food-diary deletion tool, and it explicitly differentiates from delete_event via the 'prefer this over delete_event' note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative (delete_event) and provides the condition for choosing this tool ('for meals logged via log_food'). Also states error conditions for unknown/other-user food_id and gives auth prerequisites, which helps the agent decide when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dismiss_clarificationDismiss ClarificationBInspect
Dismiss a pending entity clarification (not_person, etc.). ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. | |
| clarification_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| dismissed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by disclosing the API key requirement and the $0.05 cost. It does not contradict the annotations, but it also does not explain the effect of dismissal, whether it is reversible, or what happens to the entity afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the core action and adds only the essential cost/auth caveat. It is appropriately sized, though a bit more context about related tools would improve it without bloating it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations and output schema, the description is mostly adequate for a simple dismissal action, but it leaves gaps around when to use bulk vs single dismissal and what the optional reason parameter is for. The presence of an output schema means return values need not be explained, but alternative routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, covering request_id and idempotency_key, but the required clarification_id and the optional reason are undocumented in the schema. The description does not explain how to supply or format any parameter, so it adds little beyond the tool name and schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Dismiss'), the resource ('pending entity clarification'), and gives a concrete example type ('not_person'). It is distinguishable from siblings like resolve_clarification and bulk_dismiss_clarifications, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose this tool over the related bulk_dismiss_clarifications or resolve_clarification siblings. The phrase 'pending entity clarification' implies when it is applicable, but the description does not state exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enrich_place_from_googleEnrich Place from GoogleAInspect
Optional Google Places fill for a saved place card (hours/address/phone/website). Defaults to fill_empty_only — does not overwrite agent-supplied fields. ($0.15; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| place_id | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| fill_empty_only | No | ||
| idempotency_key | No | Alias for request_id. | |
| business_contact_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| place | No | Saved place card. |
| message | No | |
| enriched | No | |
| place_id | No | |
| applied_fields | No | |
| business_contact_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety basics (readOnlyHint=false, destructiveHint=false), and the description adds genuinely new behavioral context: the default non-overwrite policy, a $0.15 per-call cost, and an API-key requirement. It does not describe rate limiting, failure modes when Google has no match, or interaction between place_id and business_contact_id; note also that openWorldHint=false sits uneasily with a documented external Google API dependency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses: what it fills, the non-overwrite default, and the cost/auth note. Nothing is redundant, though the parenthetical field list and price note are packed densely into one sentence rather than separated for scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, with five parameters and zero required, the definition should say which identifier (place_id or business_contact_id) the caller must supply and what happens if neither is given; that gap leaves the agent unable to construct a valid call from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40% (request_id and idempotency_key are documented; place_id, fill_empty_only, business_contact_id are not). The description compensates partially by stating the default for fill_empty_only, but it never explains the role of place_id versus business_contact_id or whether either is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('enrich ... saved place card') plus the fields it fills (hours/address/phone/website) and the external source (Google Places). This clearly separates it from sibling mutators like update_place, which edit a place card without an external data source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use: it is 'optional', defaults to non-overwriting behavior ('fill_empty_only — does not overwrite agent-supplied fields'), and carries a cost/auth requirement. It does not explicitly name alternative tools (e.g., update_place) or state when to prefer manual editing, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_factExplain FactARead-onlyInspect
Return evidence/provenance for a claim: polaris_learned_facts, life_events / life_event_relationships when present, then memories. Use when the agent must cite why it believes something — do not invent sources. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| fact | No | Alias for query | |
| limit | No | Max evidence rows 1–20, default 8 | |
| query | Yes | Fact or phrase to explain |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| message | No | |
| evidence | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses the source lookup order, the API-key requirement, the $0.10 cost, and an important integrity constraint against inventing sources. This adds substantial behavioral context that the annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences: function, usage guidance, and cost/auth. Every sentence earns its place, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover safety, the description provides everything else an agent needs: the provenance strategy, when to invoke it, and operational constraints like API key and cost. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters well. The description reinforces the notion of a 'claim' but does not add significant additional parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Return evidence/provenance for a claim.' It goes further by naming the exact source types to consult and their precedence, which clearly distinguishes this tool from siblings like get_memories or get_life_graph.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger condition ('Use when the agent must cite why it believes something') and a clear negative behavior ('do not invent sources'). However, it does not explicitly name alternative tools or describe when NOT to use this tool beyond that one negative instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_identity_candidatesFind Identity CandidatesARead-onlyInspect
Compact identity resolution candidates by person_id or query (alias/name/payment signals). Prefer over bulk get_people. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| person_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| candidates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context beyond the annotations: the result is 'compact' candidates, there is a $0.05 cost, and an API key is required. These details help an agent anticipate side effects and requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact two-sentence definition with no filler. The primary action and scope are front-loaded, and the routing hint, cost, and auth requirement are each given in clearly minimal phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value documentation is covered, and annotations cover the safety profile. The description adds cost, auth, and a sibling preference. The only completeness gap is the undefined limit parameter, but overall the agent has enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains that person_id is a direct lookup key and that query can include alias/name/payment signals, giving meaning to two of the three parameters. The limit parameter is left unexplained, which is the only gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: finding compact identity resolution candidates by person_id or query, and enumerates the query signals (alias/name/payment signals). It explicitly distinguishes itself from the bulk get_people sibling, which is exactly the kind of differentiation an agent needs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives direct routing guidance: 'Prefer over bulk get_people.' It also identifies the two input modes (person_id or query), making the intended use context reasonably clear. It does not exhaustively contrast with related search/resolve tools, but the explicit sibling preference is strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetGet AssetARead-onlyInspect
Fetch one asset by asset_id with signed_url for download/processing. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | ||
| include_signed_url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | No | |
| count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only safety, and the description adds meaningful behavioral context: the operation costs $0.05 and requires an API key, which is beyond the structured annotations. It also discloses that the output can include a signed_url for download/processing, clarifying a key behavioral detail not present in the schema. No contradiction with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact two-sentence definition with no filler. The primary action and resource are front-loaded, and the cost/api-key caveat is appended economically without disrupting the core message.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low parameter count and existing output schema, the description provides the key context needed to call the tool: what it returns, the lookup method, cost, and authentication requirement. It falls slightly short only because it does not clarify the include_signed_url parameter's behavior, which is important for accurate invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description must carry parameter meaning, but it only explicitly mentions asset_id and the concept of a signed_url. The optional boolean include_signed_url is not named or explained, leaving its effect ambiguous. This is a notable gap for an otherwise simple two-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch'), a clear resource ('one asset'), and the lookup key ('asset_id'), making the tool's core purpose unambiguous. It also states the return context ('signed_url for download/processing'), distinguishing it from sibling list-type tools like get_entity_assets or update-oriented tools like update_asset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Fetch one asset by asset_id' gives a clear and direct when-to-use scenario: retrieve a single asset when you have its ID. It also adds practical usage conditions, noting the $0.05 cost and API key requirement. However, it does not explicitly name alternatives or exclusion cases, such as when to use get_entity_assets instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cities_visitedCities VisitedBRead-onlyInspect
Canonical cities from confirmed/completed trips only (excludes soft pins / status=possible). Inference requires category=travel + structured location — not todo titles. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| cities | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the bar is lower; the description still adds real behavioral context by disclosing cost ($0.10), an API-key requirement, and the trip-status filter that governs what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed clauses with no filler; the scope constraint is front-loaded and the operational caveats (cost, auth) trail appropriately. Dense but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the inclusion rules plus cost/auth caveats are well covered. The gap is the two undocumented parameters, which leave the range arguments entirely unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the two parameters (to, from) and the description never mentions them or their expected format, so an agent gets no added meaning about the range semantics beyond the bare names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (canonical cities) and its derivation scope (confirmed/completed trips only), which lets an agent distinguish it from the coarser get_countries_visited. It never says plainly that it returns a list, but the resource and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives inclusion/exclusion rules ('excludes soft pins / status=possible') and a data-derivation precondition (category=travel + structured location), which implies when the tool is populated. However it never names an alternative such as get_countries_visited or get_travel_history, nor states when to prefer this over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_context_packLife Context PackARead-onlyInspect
Life Context Protocol (LCP) pack for the authenticated user: identity, pulse, who_matters, whats_next, memories, quiz_results. Pass include_relationships/include_memories/include_quiz_results false to omit those sections; location and money stay opt-in. Spec: https://dayze.com/docs/life-context ($0.20; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | Optional focus hint echoed in the pack (e.g. places, travel, people) | |
| query | No | Optional focus query for semantic memories | |
| include_money | No | Include the private cashflow summary | |
| include_trips | No | Include recent/upcoming trips from completed travel history | |
| include_places | No | Include recent canonical places (venue-level, no GPS points) | |
| include_location | No | Include city/country label; never returns a precise address | |
| include_memories | No | Include recent memories (default true). A query always enables focused memories. | |
| include_quiz_results | No | Include latest quiz results (slug, result_type, result_data). Default true. | |
| include_relationships | No | Include who_matters (inner-circle, relationship health, reach-out). Default true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| error | No | Present when life state is unavailable. |
| focus | No | |
| pulse | Yes | |
| query | No | |
| trips | No | Recent trips when include_trips=true. |
| places | No | Recent canonical places when include_places=true. |
| partial | No | |
| identity | Yes | |
| memories | No | |
| protocol | Yes | Life Context Protocol metadata. |
| sections | No | Per-section ok/error status for partial packs. |
| whats_next | Yes | |
| who_matters | No | |
| generated_at | No | |
| preferred_tool | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds useful context beyond that: it operates on the authenticated user, requires an API key, costs $0.20, and keeps location/money opt-in. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, front-loading the pack's purpose and sections before adding usage and pricing details. Every sentence earns its place, though the spec URL and pricing are packed into the last sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich input schema, an output schema, and read-only annotations, the description covers authentication, cost, opt-in behavior, and section composition. The main gap is not explaining how this compares to get_life_context, given the overlapping name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters well. The description adds only light grouping around a few include flags and a general opt-in note, but no significant new parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool returns: a Life Context Protocol pack for the authenticated user with specific sections (identity, pulse, who_matters, whats_next, memories, quiz_results). It is a specific verb+resource definition, but it does not explicitly differentiate from the similar sibling get_life_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on how to shape the response by passing include_relationships/include_memories/include_quiz_results as false, and clarifies that location and money are opt-in. It does not, however, state when to prefer this pack over sibling tools or individual getters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_countries_visitedCountries VisitedBRead-onlyInspect
Canonical countries from completed trips (not other people travel). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No | ||
| include_residence | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| countries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable context beyond that: the data is canonical, derives from completed trips, excludes other people's travel, costs $0.10 per call, and requires an API key. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely compact and front-loaded, with the core meaning first and the cost/auth note parenthesized. All words carry value, though the phrase 'not other people travel' is grammatically awkward and 'canonical' is undefined. Overall it is efficient, not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three optional and completely undocumented parameters, the description does not give the agent enough to call the tool correctly. The output schema and read-only annotations help, but the missing parameter semantics and the lack of explicit date-range/format guidance make this under-specified for a tool with multiple optional inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented 'to', 'from', and 'include_residence' parameters. It does not mention or explain any of them. The agent is left to guess whether 'from'/'to' are dates, ids, or something else, and what residence inclusion means.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (countries) and the source scope (completed trips), and adds a distinguishing 'not other people travel' note. It does not use an explicit verb, but 'canonical countries from completed trips' is unambiguous enough for an agent to infer a retrieval operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when the ask concerns canonical countries visited on completed trips, not cities or individual trips) but does not name any alternative tool or state explicit exclusions. Sibling tools like get_cities_visited or get_travel_history are present but not referenced, leaving routing to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_statesCurrent StatesCRead-onlyInspect
Permitted assertion states for a person (flagged life-graph; off by default). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| known_at | No | ||
| valid_at | No | ||
| people_id | No | CRM people.id UUID | |
| person_id | No | Alias for people_id | |
| predicates | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| states | No | |
| enabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the cost ($0.10) and API key requirement, which are useful operational constraints, but says nothing about what 'states' are, how they are filtered, or output behavior beyond what the output schema likely covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the resource and includes cost/auth details. It is efficient, though the parenthetical may be too terse to be useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, but the description fails to explain the core concept of 'permitted assertion states' or how the temporal parameters affect results. For a tool with five parameters and 40% schema coverage, the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, and the description provides no information about the five parameters (known_at, valid_at, people_id/person_id alias, predicates). Two parameters have schema descriptions (people_id and person_id alias), but the temporal and predicate parameters are undocumented, and the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource ('assertion states for a person') and implies a retrieval action, but the verb is not explicit and the phrase 'flagged life-graph; off by default' is ambiguous. It is distinguishable from siblings like get_life_graph or get_person_links only by the specialized 'states' concept, which is not clearly defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_life_graph, get_context_pack, or get_life_context. The parenthetical about being off by default suggests limited availability but does not give actionable conditions for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entity_assetsGet Entity AssetsARead-onlyInspect
List assets linked to an entity (role, signed_url, versions). entity_type inventory_item → inventory. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| asset_type | No | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| assets | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive behavior, and the description's 'List' wording is consistent. It goes beyond annotations by disclosing that an API key is required and that the call costs $0.10, which is operationally useful for an agent deciding whether to call it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with no filler; the main verb is front-loaded and the cost/auth constraint is efficiently appended. The arrow notation is terse but packs useful parameter semantics into very few words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Cost, authentication, read-only intent, and some asset-type scope are covered, and an output schema exists so return format need not be described. However, with three un-described parameters, no enums, and many sibling tools, the description leaves enough ambiguity around entity_type values and the inventory mapping that invocation still requires inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain parameters, and it partially does: the parenthetical likely enumerates asset_type values and 'entity_type inventory_item → inventory' adds domain mapping. But it leaves entity_id implicit and does not enumerate valid entity_type values, so the compensation for low schema coverage is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('List assets linked to an entity') and gives concrete asset-type examples (role, signed_url, versions), so an agent can tell what the tool returns. It does not explicitly contrast this with get_asset or get_inventory, so it misses the highest sibling-differentiation bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by 'List assets linked to an entity,' and the 'entity_type inventory_item → inventory' hint is context-specific. However, there is no explicit guidance about when to choose this over get_asset/get_inventory or when it should not be used, which is noticeable given the large sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entity_linksGet Entity LinksARead-onlyInspect
List graph edges for an event, trip, place, or person. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| links | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable context by stating the cost ($0.05) and auth requirement (API key), which are behavioral constraints not present in the structured metadata. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of about 13 words with no filler. The core action and scope are front-loaded, with cost and auth appended parenthetically. Every token earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, two required params, and an existing output schema, the description covers the purpose, entity types, cost, and auth requirement. The term 'graph edges' is somewhat technical but the output schema presumably defines the return shape. The only notable gap is lack of usage guidance, but that is covered by another dimension.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It partially does by enumerating the allowed entity_type values (event, trip, place, person) and implying entity_id is the identifier of that entity. However, it does not describe what IDs look like or the exact meaning of entity_id beyond that implication.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a specific resource ('graph edges') and names the valid entity types (event, trip, place, person). This clearly differentiates it from sibling tools like get_entity_assets or get_person_connections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use the tool by scoping it to a specific entity type and graph edges, but it does not explicitly say when to use it over alternatives like get_life_graph or get_person_connections. There is no when-not-to-use guidance or mention of complementary tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eventsCalendar EventsARead-onlyInspect
Authenticated user's calendar events. Prefer explicit from/to (YYYY-MM-DD). Shortcuts: today|week|month|year (calendar year)|decade. Browsing noise excluded by default. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Inclusive YYYY-MM-DD | |
| from | No | Inclusive YYYY-MM-DD (preferred over range) | |
| kinds | No | Filter event_kind e.g. ["life_event","todo"] | |
| limit | No | ||
| range | No | ||
| cursor | No | ||
| include_archived | No | ||
| include_browsing | No | Include extension "Browsed domain · Xm" auto-events (default false) | |
| include_calendar_blocks | No | Include Focus Time / calendar_block rows (default false) |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | Inclusive YYYY-MM-DD upper bound; null for all records. |
| cap | Yes | |
| from | Yes | Inclusive YYYY-MM-DD lower bound; null for all records. |
| range | Yes | |
| total | No | |
| events | Yes | |
| has_more | No | |
| ordering | No | |
| truncated | Yes | |
| expires_at | No | |
| next_cursor | No | |
| server_time | No | |
| snapshot_at | No | |
| snapshot_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds value by disclosing default exclusions (browsing noise excluded, archived excluded via include_archived flag), the range shortcut semantics (calendar year vs trailing), and the API key requirement plus cost. These behaviors go 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences pack significant behavioral detail: authentication scope, date preferences, shortcut semantics, default exclusions, cost, and API key requirement. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and read-only annotations, the description covers the key operational aspects: date format, defaults, cost, auth, and filtering. It lacks explicit pagination guidance for the cursor parameter, which would matter for large result sets, but the overall tool complexity is handled well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 56%, so the description carries partial burden. It adds meaning for 'from' (preferred over range), 'range' shortcuts (calendar year clarification), and 'include_browsing' default. However, it doesn't explain 'cursor' pagination or 'kinds' acceptable values beyond the example in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as retrieving calendar events for the authenticated user, with specific filtering behavior. It clearly separates this from add/update/delete event siblings by using 'get' and specifying read semantics, though it doesn't explicitly name a sibling alternative like get_context_pack or get_memories that might overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: prefer explicit from/to dates, suggests shortcut range values, and explains that browsing noise is excluded by default. It doesn't explicitly state when not to use this tool versus alternatives, but the instruction to prefer explicit dates and the default exclusions give clear operational context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_expensesExpense SummaryARead-onlyInspect
Authenticated user cashflow summary: spend, income, net, and top spend categories. Requires OAuth or a supported scoped credential. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| net | No | |
| usd | No | Totals converted to USD (approximate FX). |
| count | No | |
| spend | No | |
| income | No | |
| period | Yes | |
| currency | No | |
| by_currency | No | |
| period_days | No | |
| multi_currency | No | |
| top_categories | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only safety profile is covered. The description adds useful behavioral context beyond annotations: authentication requirements ('OAuth or a supported scoped credential'), API key requirement, and cost ($0.10). This is meaningful additional operational information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with the core purpose front-loaded and the authentication/cost details appended compactly. Every sentence carries useful information with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter tool with output schema present and annotations covering safety, the description is largely complete: it names the returned summary components, authentication requirements, and cost. The only minor gap is that it does not specify the time period or scope of the cashflow summary (e.g., all-time vs. current period), though this may be covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema offers no parameter documentation burden. Per the baseline for 0-parameter tools, a score of 4 is appropriate. The description adds no parameter details because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns an 'Authenticated user cashflow summary' with specific components: spend, income, net, and top spend categories. This gives a specific resource and output scope. It does not explicitly distinguish itself from siblings like get_transactions or get_money_between_people, but the summary purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for the authenticated user's own cashflow summary and notes OAuth/scoped credential requirements. However, it does not explicitly state when to use this tool over alternatives, nor does it mention exclusions or alternative tools, leaving some usage inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inventoryGet InventoryARead-onlyInspect
Browse owned inventory with filters. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and non-destructive behavior. The description adds useful context by disclosing a $0.10 cost and API key requirement, which are behavioral constraints beyond the annotations. It does not mention pagination or filter specifics, but the annotations lower the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that communicates purpose, filtering capability, cost, and authentication requirement without any filler. It is efficiently front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple browse operation with no required parameters, an output schema, and read-only annotations, the description is mostly sufficient. The main gap is that the available filters are not enumerated, but this does not prevent a basic invocation and the overall context is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, so the baseline is 4. The description adds that filters are supported, which is meaningful even though the schema is empty and allows additional properties. It does not list filter names, but with no required parameters this is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Browse owned inventory') and mentions filters, making the core purpose clear. It does not explicitly differentiate itself from get_inventory_item or search_inventory, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus siblings like search_inventory or get_inventory_item. The phrase 'with filters' implies a browsing use case, but there are no explicit use conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inventory_itemGet Inventory ItemBRead-onlyInspect
Full item with valuations, people links, assets. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| inventory_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | Inventory item record. |
| assets | No | |
| valuations | No | |
| people_links | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, so the description is not burdened with safety disclosure. It adds meaningful context beyond annotations: the call costs $0.10, requires an API key, and returns a full item with related valuations, people links, and assets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the most important functional information, followed by cost and auth requirements in parentheses. Every phrase earns its place, though the content is sparse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and read-only annotations present, the description is adequate for a simple single-id retrieval: it states what is returned, the cost, and the API key requirement. It is not fully complete because it fails to distinguish this from the sibling list/get tools, which is relevant given the large sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention inventory_id at all. Although the parameter name and type are self-explanatory, the description provides no added meaning about what value is needed or how it maps to the returned item.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource as a single inventory item and specifies what it contains ('valuations, people links, assets'), which is clear and useful. It does not explicitly name a sibling alternative, so it stops short of full differentiation from get_inventory or get_inventory_valuations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over the many related siblings like get_inventory, get_inventory_valuations, or get_entity_assets. It mentions API key requirement but does not state 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.
get_inventory_valuationsGet Inventory ValuationsARead-onlyInspect
Chronological valuation history for an item. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| inventory_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| valuations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a safe read operation. The description adds useful behavioral context by disclosing the $0.10 cost and required API key, and by noting the chronological ordering of results. These details go beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with a useful parenthetical for cost/auth. There is no fluff or redundant repetition of the tool name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter, an output schema, and read-only annotations, the context is mostly sufficient. The description adds cost/auth and ordering behavior, though it could be more explicit about the inventory_id parameter and when to use this tool over siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for the undocumented inventory_id parameter. It only refers to 'an item,' which provides minimal semantic context and does not explain the ID format, source, or relationship to get_inventory_item. The parameter name helps, but the description leaves most of the burden unmet.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool returns a 'Chronological valuation history for an item,' which is a clear resource and scope. It does not explicitly contrast with siblings like get_inventory_item or add_inventory_valuation, but the word 'history' distinguishes it reasonably well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: an agent needing valuation history for an inventory item would choose this tool. However, there is no explicit guidance about when to prefer it over related tools such as get_inventory_item or add_inventory_valuation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_life_contextLife Context SnapshotARead-onlyInspect
Get a snapshot of the authenticated user's current life context (identity, today/upcoming events, pulse, trackers). Relationships and memories are included by default; pass include_*=false to omit. Location is opt-in. Requires an authenticated Dayze account via OAuth; scoped API keys are also supported for direct clients. ($0.15; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| include_location | No | Include city/country label; never returns a precise address | |
| include_memories | No | Include recent memory summaries (default true; set false to omit) | |
| include_relationships | No | Include inner-circle and relationship summaries (default true; set false to omit) |
Output Schema
| Name | Required | Description |
|---|---|---|
| identity | Yes | Account identity and timezone. |
| mood_score | No | |
| energy_score | No | |
| inner_circle | No | |
| pulse_streak | No | |
| social_edges | No | |
| today_events | Yes | |
| active_trackers | No | |
| recent_memories | No | |
| upcoming_events | Yes | |
| pending_responses | No | |
| relationship_health | No | |
| pending_responses_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive, and the description adds meaningful context: authentication requirements via OAuth or scoped API keys, cost, and default inclusion behavior. This goes beyond the structured annotations and aligns with them, with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences that front-load the purpose and then cover defaults and auth/cost. Every sentence adds useful information without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with zero required parameters, an output schema, and safe annotations, the description adequately covers defaults, opt-in location, and authentication. It is slightly thin on routing to more granular sibling tools, but an agent has enough to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three boolean parameters are already documented with defaults. The description reinforces the include_*=false pattern and the opt-in nature of location, but adds little new meaning beyond the structured schema. This fits the baseline where schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and names a composite resource ('snapshot of the authenticated user's current life context') with enumerated contents: identity, today/upcoming events, pulse, trackers. It also clarifies the optional relationship, memory, and location buckets. It does not explicitly differentiate from sibling tools like get_context_pack, so it is clear but not maximally distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that relationships and memories are included by default and can be omitted via include_*=false, and that location is opt-in. This gives practical call-construction guidance but no explicit when-to-use versus alternatives such as get_memories, get_events, or get_trackers. Usage is implied by 'snapshot' rather than stated with exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_life_graphLife Graph ExportARead-onlyInspect
Explicit private life-graph export: favorites/VIP plus people with edges or recent event tags. Pass full=true for a larger capped list. Optional event–people links. Requires OAuth or a supported scoped credential. ($0.25; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Include additional people by last interaction, up to max_people | |
| max_people | No | ||
| event_links_limit | No | ||
| include_event_links | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| hot | Yes | |
| edges | Yes | |
| nodes | Yes | |
| edge_count | Yes | |
| node_count | Yes | |
| event_people_links | No | |
| max_people_requested | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to reassert safety. It adds valuable behavioral context by disclosing the private export scope, the cap behavior behind full=true, optional event-people links, the OAuth/scoped-credential requirement, and the $0.25 cost. This goes beyond what the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first clause states what the tool exports, followed by the key flag, optional links, and auth/cost note. Every sentence earns its place, and there is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema, annotations, and the tool's simple parameter structure, the description covers essential invocation details: scope, the full flag, optional links, auth, and cost. The only notable gaps are explicit guidance around the max_people/event_links_limit caps and alternatives, but these are not critical for a successful call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage, the description must compensate for underdocumented parameters. It explicitly mentions full=true and 'Optional event-people links,' but it never names or explains max_people or event_links_limit, and 'larger capped list' is vague about the actual cap. This is only partial compensation for four parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('export') and the object ('private life-graph'), and it enumerates the graph's contents: favorites/VIP plus people with edges or recent event tags. It does not explicitly contrast with sibling tools like get_life_context or get_people, but the name and content make the purpose distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through phrases like 'Explicit private life-graph export' and 'Pass full=true for a larger capped list,' and it states an authentication requirement. However, it never explicitly says when to choose this tool over related siblings such as get_people or get_life_context, nor does it state exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_location_contextLocation ContextARead-onlyInspect
Likely current or at-time place with confidence and provenance. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ISO timestamp |
Output Schema
| Name | Required | Description |
|---|---|---|
| at | No | |
| place | No | Canonical place record. |
| confidence | No | |
| provenance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive. The description adds useful behavioral context beyond those annotations: the result is a 'likely' estimate, includes confidence and provenance, requires an API key, and costs $0.10 per call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence conveys the core purpose, uncertainty, provenance, cost, and authentication requirement without any filler. The most important information is front-loaded and every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one optional parameter fully documented in the schema, an output schema, and read-only annotations, the description covers the essential operational facts including cost and API key requirement. No critical information needed to invoke the tool correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the only parameter, 'at', as an ISO timestamp with 100% coverage. The description adds meaning by distinguishing 'current' vs 'at-time', which clarifies that omitting the parameter yields the current estimate and providing it yields an estimate for that time.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the resource, a place estimate at the current or a specified time, with confidence and provenance. It is understandable, though it lacks an explicit verb and does not distinguish itself from sibling tools like get_life_context or get_location_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrasing 'current or at-time place' implies this tool is for point-in-time location estimation, but the description does not explicitly say when to use it over alternatives or when not to use it. Cost and API key requirements are practical prerequisites, but not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_location_historyLocation HistoryBRead-onlyInspect
Normalized visit history (venue-level by default). Merges GPS location_visits + place_visits (MCP/Uber digs). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| city | No | ||
| from | No | ||
| place | No | ||
| country | No | ||
| precision | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| visits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds genuinely useful operational context beyond that: a $0.10 cost and requirement of an API key. It still says nothing about result volume, pagination, or the merge/deduplication behavior implied by 'Merges'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core purpose; the cost/auth parenthetical is efficient. It is telegraphic rather than wasteful, though the fragment style ('MCP/Uber digs') is an in-joke that consumes space without adding meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format need not be described, and the safety profile is covered by annotations. The remaining gap is the six entirely undocumented filter parameters, which leaves an agent guessing about how to scope a query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so six parameters (to, from, city, place, country, precision) are documented nowhere. The description only hints at the precision dimension via 'venue-level by default'; it never explains what the date, city, place, or country filters do or how they combine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Normalized visit history') and adds scope detail (venue-level by default) plus the data sources it merges (GPS location_visits + place_visits), which helps separate it from get_place_visits. It does not explicitly name the sibling alternatives, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus get_place_visits, get_travel_history, get_location_context, or get_cities_visited, all of which sit adjacent in the sibling list. The only usage signal is the implied default granularity (venue-level), which is not framed as a selection criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_memoriesAgent MemoriesARead-onlyInspect
Authenticated user memories from Dayze Agent. Pass query for semantic/keyword retrieval. Prefer search for event-first trip and calendar titles. Requires OAuth or a supported scoped credential. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows 1–50, default 20 | |
| query | No | Semantic focus (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| query | No | |
| events | No | |
| people | No | |
| memories | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds value beyond annotations by disclosing OAuth/scoped credential and API key requirements and the $0.10 cost. No behavioral trait contradicts 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by usage guidance, alternative routing, and requirements in a compact form. Every clause contributes new information; no filler or redundant elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With the input schema covering both parameters and an output schema present, the agent has all return and parameter details. The description fills the remaining gaps: when to prefer search, authentication needs, API key, and cost. This is complete for a read-only retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
schema_description_coverage is 100%, so schema already documents both optional parameters. The description adds meaning to 'query' by stating it supports both semantic and keyword retrieval, which goes beyond the schema's 'Semantic focus' label. Limit semantics are left to the schema, which is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific action and resource: retrieving authenticated user memories from Dayze Agent. It also distinguishes itself from sibling search by noting when search is preferred for event-first trip and calendar titles. This is more than a restatement of the name or title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs passing a query for semantic/keyword retrieval and tells the agent to prefer search for event-first trip and calendar titles. It also discloses credential and API key prerequisites. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_money_between_peopleMoney Between PeopleARead-onlyInspect
Same as get_person_transactions: authenticated user ↔ one contact via expenses FKs. Prefer get_person_transactions; this alias exists for agent discoverability. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Inclusive YYYY-MM-DD filter | |
| from | No | Inclusive YYYY-MM-DD filter | |
| name | No | Surface name if person_id unknown | |
| limit | No | Max rows 1–200, default 50 | |
| person_id | No | CRM people.id |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| model | No | |
| totals | No | |
| entries | No | |
| person_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior. The description adds valuable operational traits beyond annotations: cost ($0.10), API key requirement, and the precise scoping 'authenticated user ↔ one contact via expenses FKs.' 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it establishes the relationship to get_person_transactions first, then adds the alias rationale and cost constraints. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema parameter coverage, an output schema, safety annotations, and an explicit pointer to the sibling tool, the description is nearly complete. It could directly restate the return behavior instead of relying on 'Same as get_person_transactions,' but the alias framing makes this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even without extra parameter details in the description. The description's scoping phrase 'one contact via expenses FKs' gives some context for person_id/name, but it does not add meaningful syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's function via 'Same as get_person_transactions: authenticated user ↔ one contact via expenses FKs,' which clearly specifies a verb, resource, and scope. It also distinguishes itself from the sibling by explicitly naming get_person_transactions and framing this as an alias, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit selection guidance: 'Prefer get_person_transactions; this alias exists for agent discoverability.' This tells the agent when not to use this tool and points to the preferred alternative, leaving no ambiguity about routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_peopleDayze ContactsARead-onlyInspect
List the authenticated user's Dayze Contacts (private CRM; table people). Each contact includes avatar_url, photo_count, and has_photos; use get_person_photos(person_id) for the full gallery. Notes omitted by default (has_notes flag); pass include_notes=true for progressive fetch (credential/secret spans are redacted server-side). Supports limit (default 100, max 500) and offset; returns total and truncated. Distinct from public notable People at /people. Advertised name get_people is stable; tools/call also accepts get_contacts / list_contacts. Requires OAuth or a supported scoped credential. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (default 100, max 500) | |
| cursor | No | ||
| offset | No | Skip N rows (default 0) | |
| include_notes | No | When true, include notes (server-redacted). Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| limit | Yes | |
| total | Yes | |
| offset | Yes | |
| people | Yes | |
| has_more | No | |
| ordering | No | |
| truncated | Yes | |
| expires_at | No | |
| next_cursor | No | |
| server_time | No | |
| snapshot_at | No | |
| snapshot_id | No | |
| include_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description discloses OAuth/scoped credential requirements, server-side redaction of credential/secret spans, pagination behavior (limit/offset, total, truncated), and stable alias names. None of these contradict the annotations, and they add substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core purpose and primary alternative. Every sentence carries useful information, though the block crams many distinct details (aliases, auth, pricing, redaction, pagination) together. It is appropriately sized but slightly encyclopedic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and annotations, the description covers intent, filtering, pagination, auth, and naming alternatives well. The main gap is cursor-based pagination: the schema exposes a cursor parameter but neither it nor the description explains how cursor interacts with offset/limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 75% schema coverage, the schema already documents limit, offset, and include_notes. The description adds value by giving default/max values, explaining progressive-fetch semantics for include_notes, and noting redaction. However, the cursor parameter is undocumented in both the schema and description, preventing a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('List') on a specific resource (the authenticated user's Dayze Contacts, table people). It explicitly distinguishes itself from public notable People at /people and from get_person_photos, so an agent can tell it apart from siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use guidance: use get_person_photos(person_id) for the full gallery, pass include_notes=true for progressive fetch, and avoid confusing this with public notable People. It also mentions supported aliases and authentication requirements, leaving little ambiguity about invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_people_cleanup_resultGet People Cleanup ResultARead-onlyInspect
Fetch start_people_cleanup result by cleanup_id. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| cleanup_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| cleanup_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and destructiveHint annotations already establish this is a safe read operation. The description adds meaningful extras beyond the annotations: a $0.05 cost and the API key requirement. It 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence that front-loads the core action, then adds essential operational details (cost and API key). Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with an output schema and safety annotations, the description covers the key operational details: action, identifier, cost, and auth. It does not explicitly mention whether the cleanup may still be running, but the output schema and straightforward nature of the tool make this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes cleanup_id only as a required string with no additional semantics, and schema description coverage is 0%. The description ties cleanup_id to start_people_cleanup, which adds some meaning, but it does not explain where the ID comes from or its expected format. Some compensation for the schema gap exists, but it is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and a precise resource ('start_people_cleanup result by cleanup_id'). It clearly differentiates this from the sibling start_people_cleanup by indicating it retrieves the outcome of that operation rather than starting a new one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended context is clear: after a cleanup has been started, call this with the cleanup_id to retrieve its result. It does not explicitly list exclusions or alternative tools, but the relationship to start_people_cleanup gives the agent enough context to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_people_linksGet People LinksBRead-onlyInspect
Alias of get_person_connections — list graph edges for one CRM person. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| person_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| person | No | |
| connections | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate safety. It adds useful context beyond annotations by disclosing the cost ($0.05) and the API key requirement, and by clarifying that the tool is an alias rather than an independent operation. It does not describe error behavior, but for a simple read-only lookup this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence and front-loads the core meaning. The parenthetical cost and API key requirement are efficient additions. Every part earns its place, and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup tool with an output schema present, the description is mostly sufficient: it names the operation, scope, cost, and auth requirement. It could be more complete by defining what graph edges represent or how to source a person_id, but those gaps are minor given the simplicity of the tool and the existing output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the only parameter, person_id, has no schema description. The phrase 'for one CRM person' gives minimal semantic context that person_id refers to a CRM person, but the description does not explain the expected format, where the id comes from, or any constraints. With no schema-level documentation, this is insufficient compensation for the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action ('list graph edges') and the resource ('one CRM person'), which is concrete and scoped. It also identifies itself as an alias of get_person_connections, giving an agent a clear anchor, though it never defines what a 'graph edge' is and does not distinguish itself materially from the sibling it aliases. This is clear but not maximally distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent this is an alias of get_person_connections but gives no guidance on when to choose this tool over alternatives like get_entity_links, get_people, or get_person_neighborhood. There is no explicit when-to-use, when-not-to-use, or prerequisite information beyond 'API key required.' The agent must infer most usage decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_person_aliasesPerson AliasesARead-onlyInspect
List canonical aliases (nicknames) for a CRM person. Pass person_id or name (resolved via aliases). Requires OAuth or a supported scoped credential. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Surface name if person_id unknown | |
| person_id | No | CRM people.id |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| aliases | No | |
| person_id | No | |
| candidates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation read-only, and the description adds useful behavioral context: name resolution via aliases, OAuth/scoped credential requirement, and API key cost. No contradiction 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste. The core purpose is front-loaded, and the credential/cost details are compactly appended.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations and an output schema present, the description covers the essential behavioral and operational details. It could be slightly clearer that at least one of person_id or name should be supplied, since the schema marks both as optional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds semantic value by explaining the relationship between person_id and name, and that name is resolved through aliases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List canonical aliases (nicknames) for a CRM person.' It clearly specifies the operation and distinguishes it from broader person tools like get_people or resolve_person.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context by saying to pass either person_id or name, which tells the agent how to invoke it. It does not explicitly compare against sibling tools, but the intended use is apparent enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_person_connectionsGet Person ConnectionsARead-onlyInspect
List graph edges for one CRM person. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| person_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| person | No | |
| connections | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by noting the $0.05 cost and the API key requirement, which are not present in annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with zero filler. It front-loads the core action and resource, then appends the only two operational caveats (cost and API key) in a brief parenthetical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with an output schema, the description covers the essential information: what it lists, the scope, cost, and auth. It does not mention usage trade-offs against sibling graph-related tools, but this is a minor gap given the simple interface and existing annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds that the tool operates on 'one CRM person,' giving some meaning to person_id. However, it does not clarify the expected format of person_id or how it relates to other person identifiers in sibling tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'List graph edges for one CRM person.' It is specific about operating on a single person's graph edges, though it does not explicitly distinguish itself from sibling tools like get_entity_links or get_life_graph, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for one CRM person' implies the tool is for retrieving the graph connections of a specific person, and the mention of API key required and cost gives operational context. However, there is no explicit guidance on when to use this tool versus alternatives such as get_life_graph or get_person_interactions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_person_interactionsPerson InteractionsARead-onlyInspect
Relationship timeline for one CRM person: interactions rows (message/call/meeting/note + extended kinds like visit/gift/stayed_over encoded in summary) plus co-tagged calendar events. Prefer this over dumping people.notes for “when did I last see X?”. Pass person_id or name. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Inclusive YYYY-MM-DD filter | |
| from | No | Inclusive YYYY-MM-DD filter | |
| kind | No | Optional filter: meeting, visit, gift, stayed_over, met, … | |
| name | No | ||
| limit | No | Max rows 1–100, default 40 | |
| person_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| count | No | |
| events | No | |
| person_id | No | |
| truncated | No | |
| matched_via | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior, so the description correctly focuses on more useful behavioral details: 'extended kinds like visit/gift/stayed_over encoded in summary' and inclusion of 'co-tagged calendar events'. These reveal data-modeling quirks beyond what readOnlyHint and destructiveHint communicate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences: purpose, usage guidance, and invocation essentials. No filler or redundant restatement of the schema. The main purpose is front-loaded and every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema and read-only annotations, the description covers the core inputs, the interaction-kinds semantics, the calendar-event inclusion, and the cost/auth caveat. It could slightly improve by stating what happens if neither person_id nor name is supplied, but it is otherwise sufficiently complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, leaving name and person_id bare. The description compensates by stating 'Pass person_id or name,' which clarifies that these are mutually acceptable identifiers. It also reinforces the kind parameter by listing extended kinds like visit/gift/stayed_over, adding meaning beyond the bare schema examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific product: 'Relationship timeline for one CRM person' and enumerates the exact contents (interactions rows, extended kinds, co-tagged calendar events). It is clearly distinct from siblings like get_person_transactions or get_people. This is a strong, specific verb-resource-scope statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to prefer this tool: 'Prefer this over dumping people.notes for "when did I last see X?"'. It also tells the agent how to identify the person: 'Pass person_id or name.' This gives a concrete usage directive and names an alternative approach to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_person_neighborhoodPerson NeighborhoodARead-onlyInspect
Subgraph around one user-owned person_id — profile (avatar_url, photo_count, has_photos) plus declared connections. Use get_person_photos for the full gallery. Notes omitted unless include_notes=true (redacted). Requires OAuth or a supported scoped credential. ($0.15; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| person_id | Yes | UUID | |
| include_notes | No | When true, include center.notes (server-redacted). Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| center | Yes | A Dayze person or contact record. |
| connections | Yes | |
| include_notes | No | |
| connection_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description adds meaningful behavioral context: notes are redacted and omitted unless include_notes=true, an OAuth or supported scoped credential is required, and an API key is needed. It also clarifies the returned data scope and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: function is front-loaded, the alternative is named, notes behavior is clarified, and auth/pricing are included. No sentence is wasted and it remains easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description does not need to explain return values. It covers the person_id scoping, the include_notes behavior, authentication requirements, and the distinction from a sibling. Nothing essential is missing for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is a 3. The description adds extra meaning by specifying person_id must be user-owned and by explaining include_notes affects whether redacted notes are returned. These details go beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a subgraph around one user-owned person_id, including profile fields and declared connections. It also differentiates from the sibling get_person_photos by directing that tool for the full gallery, leaving no ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use get_person_photos for the full gallery,' which tells the agent when not to use this tool and which alternative to choose. It also clarifies authentication requirements and pricing, giving enough context for appropriate selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_person_photosPerson PhotosARead-onlyInspect
Gallery image URLs for a CRM contact. Returns photos[{ id, url, is_primary, created_at }] plus inline MCP image attachments for chat render. Accepts person_id. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| person_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| photos | No | |
| person_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description goes beyond annotations by disclosing the exact return structure (photos array with id, url, is_primary, created_at), the fact that inline MCP image attachments are included for chat rendering, and the cost/auth requirements ($0.10; API key required). This adds meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core function, then provides the return format, attachments, and cost/auth in a compact parenthetical. Every piece of information earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, clear purpose) and the presence of an output schema, the description covers everything an agent needs: it states what it does, what it returns, the input, and even cost/auth. It is complete for correct invocation and interpretation of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It says 'Accepts person_id,' which is minimal but does imply person_id refers to the CRM contact from the opening. However, it does not elaborate on the type, format, or constraints beyond what the schema already states, so it only marginally adds meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves gallery image URLs for a CRM contact, which is a specific verb+resource. It also describes the return shape and the input parameter, making the purpose unambiguous and differentiating it from sibling tools like get_photos_for_event or get_photos_for_place by the explicit 'CRM contact' context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage context by stating it is for a CRM contact, but it does not explicitly name alternatives or give conditions for when to use this tool versus other photo-related tools such as search_photos or get_photos_for_event. There is no direction on exclusions 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.
get_person_transactionsPerson TransactionsARead-onlyInspect
Me↔contact money ledger from expenses (paid_to_person_id / income_from_person_id). Pass person_id or name. Returns entries + per-currency totals. Reuses existing expenses — no parallel ledger table. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Inclusive YYYY-MM-DD filter | |
| from | No | Inclusive YYYY-MM-DD filter | |
| name | No | Surface name if person_id unknown | |
| limit | No | Max rows 1–200, default 50 | |
| person_id | No | CRM people.id |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| count | No | |
| totals | No | |
| entries | No | |
| person_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable non-obvious context beyond annotations: it reuses existing expense records rather than maintaining a parallel ledger, and it notes cost and API key requirements. No contradiction 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core purpose, inputs, outputs, data source, cost, and authentication requirement with no filler. The information is front-loaded and every clause carries meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full input schema, complete parameter descriptions, read-only annotations, and an output schema available, the description covers the remaining important context: data derivation, required identifier style, return shape, and operational considerations. Nothing critical for invoking the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantic guidance by connecting person_id/name to the ledger concept and explaining the data source ('paid_to_person_id / income_from_person_id'), which helps an agent understand how parameters relate to the domain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool as a 'Me↔contact money ledger' built from expense fields, which is a specific verb+resource. It also states what it returns ('entries + per-currency totals') and distinguishes it from a generic expense query by focusing on person-related transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: pass person_id or name to get person-to-person money movement. It does not explicitly name alternatives like get_transactions, search_transactions, or get_money_between_people, nor does it state when not to use this tool, but the 'person ledger' framing strongly implies the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_photoGet PhotoARead-onlyInspect
Single photo metadata + secure URL. Returns inline MCP image attachment when available. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| photo_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| photo | No | Photo or entity asset metadata. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful context beyond the annotations: it returns a secure URL, may include an inline MCP image attachment, requires an API key, and has a $0.10 cost. This is valuable operational information without contradicting 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence covering the core behavior, followed by a compact parenthetical with cost and auth requirements. Every clause contributes meaningful information; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only lookup, the description covers the return content, security property, attachment availability, cost, and authentication. An output schema exists, so enumerating metadata fields is unnecessary. Minor gaps include error handling and not-found behavior, but they are not essential for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain photo_id at all—it doesn't state where the ID comes from, expected format, or how it relates to other photo endpoints. With only one parameter, the description should compensate for the missing schema docs, but it doesn't.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Single photo metadata + secure URL,' which states a specific resource and operation. The 'Single photo' phrasing clearly distinguishes it from collection-oriented siblings like get_person_photos and search_photos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for retrieving one photo by ID, but it never states when to choose it over related siblings such as get_photos_for_event or get_photos_for_place. There is no explicit when/when-not guidance; the agent must infer usage from the tool name and the word 'Single.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_photos_for_eventPhotos For EventDRead-onlyInspect
Assets linked to an event. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| photos | No | |
| event_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context: cost ($0.10) and the requirement for an API key. However, it does not explain behavior beyond that, such as what the returned 'assets' represent or any pagination/limits. With annotations carrying the safety burden, the added cost/auth info earns a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, so it is concise in length, but it is not front-loaded with the most critical information. The core purpose is vague ('Assets linked to an event'), and the useful cost/API key details come after. It is under-specified rather than effectively concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though the tool is simple (one parameter) and has an output schema, the description is far from complete. It fails to clarify what 'assets' means, does not mention event_id, and does not provide enough context for an agent to correctly invoke the tool or distinguish it from similar tools like get_photos_for_place. The description is wholly inadequate for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the event_id parameter at all. The agent is left to infer that event_id identifies an event, but no format, semantics, or relationship to other tools is provided. The description adds no value for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Assets linked to an event.' is a noun phrase, not an explicit action like 'Retrieve' or 'Get'. It is vague about what 'assets' means (photos? other files?) and does not differentiate from siblings such as get_entity_assets or get_photos_for_place. The name suggests photos, but the description says assets, adding confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description only provides cost and API key requirements, which are not usage guidelines. No mention of scenarios, exclusions, or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_photos_for_placePhotos For PlaceCRead-onlyInspect
Assets linked to a canonical place. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| place_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| photos | No | |
| place_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read nature is covered. The description adds useful extra context with the $0.10 cost and API-key requirement, and it scopes behavior to 'canonical place' assets, but it discloses little beyond those points.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and includes both cost and auth context in a single sentence. However, it reads as a noun phrase rather than a complete operational description, so it is concise but slightly under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and an output schema, and annotations cover the read-only safety profile. Still, the description omits any usage context or parameter clarification, so the agent is left to infer details that could help correct invocation, especially among many similar photographic and place-related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented place_id parameter, but it never mentions place_id or explains what canonical place ID format is expected. While the parameter name is somewhat self-evident, the description adds no semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a resource scope ('Assets linked to a canonical place') but lacks an explicit verb such as 'retrieves' or 'returns'; the operation is mostly carried by the tool name. It also does not distinguish this from sibling tools like get_photos_for_event, get_person_photos, or get_place_visits, so an agent must infer what makes this tool unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives. The only added context is cost and API-key requirements, which do not help an agent choose between get_photos_for_place, get_photos_for_event, or search_photos. No exclusions or conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_placeGet Place CardARead-onlyInspect
Fetch one saved place card (business_contacts) by place_id — address, opening hours, affordability, notes. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| place_id | No | ||
| business_contact_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| place | No | Saved place card. |
| message | No | |
| place_id | No | |
| business_contact_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive, closed-world). The description adds pricing ($0.05) and API-key requirement, which are useful quirks beyond the annotations. But it names place_id as the key while the schema exposes three optional identifiers, an unresolved behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, em-dash summary of return fields, parenthetical cost and auth. Front-loaded verb+resource with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return-value detail is not required. But with 0% schema description coverage and three interchangeable-looking ID params, the description should clarify the parameter contract; naming only place_id is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with 3 undocumented params. The description compensates by naming place_id as the lookup key, but is silent on id and business_contact_id, leaving ambiguity about which parameter actually selects the record.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch one saved place card) plus resource (business_contacts) and enumerates the returned fields (address, opening hours, affordability, notes). Clear against siblings like get_places (list) and get_place_visits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage (single-record lookup by place_id) is clear, but no when-to-use vs get_places, resolve_place, or enrich_place_from_google. The cost and auth note hint at a paid/authenticated path but don't route between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_placesList PlacesBRead-onlyInspect
Known venues: visit-graph places plus saved place cards (saved_places from business_contacts) with address, opening_hours, and affordability ($/$$/$$$). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| area | No | ||
| city | No | ||
| near | No | Filter saved cards by area/tag/notes (e.g. Madeira). | |
| limit | No | ||
| country | No | ||
| affordability | No | $ | $$ | $$$ |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| places | No | |
| saved_count | No | |
| saved_places | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description usefully adds non-obvious operational context the annotations do not: the $0.10 cost and the API key requirement, plus disclosure of the two underlying data sources. Only minor gaps remain (e.g. pagination or default limit behavior).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence front-loads the data sources and fields, with the cost/auth note trailing. There is little waste, though the source-qualified phrasing (`saved_places` from business_contacts) is denser than an agent needs for selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover safety. However, for a 7-parameter, 0-required tool with only 29% schema coverage, the description leaves filtering behavior and usage context underspecified, making it only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29%, and with 7 parameters (tag, area, city, near, limit, country, affordability) the description documents essentially none of them beyond restating the affordability format ($/$$/$$$) already in the schema. It does not compensate for the large coverage gap, leaving filtering semantics for tag/area/city/country/limit unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resources clearly ('visit-graph `places` plus saved place cards') and what fields accompany them (address, opening_hours, affordability), which lets an agent understand this is a listing of known venues. It stops short of distinguishing itself from siblings like get_place, get_place_visits, or resolve_place, so it is clear but not disambiguating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no mention of alternatives, and no stated conditions or prerequisites beyond the cost/API-key note. An agent cannot tell from this text when to prefer get_places over get_place or a search tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_place_visitsPlace VisitsBRead-onlyInspect
When was I at a venue — merges place_visits, location_visits, and event locations. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No | ||
| place | Yes | ||
| place_id | No | ||
| person_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| place | Yes | |
| visits | Yes | |
| confidence | No | |
| people_present | No | |
| matching_events | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and non-destructive behavior, so the description adds value by disclosing the multi-source merge, the $0.10 cost, and the API-key requirement. It does not cover rate limits or failure behavior, but for a read-only tool with annotations present this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one tight sentence that leads with the user-facing purpose and packs scope, cost, and auth requirement into minimal space. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter tool with zero schema descriptions, the description is too thin to let an agent construct a correct call. The output schema may cover return values, but input semantics for place_id vs place, person_ids, and from/to are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only implies that 'place' refers to a venue and that from/to relate to a time interval. The distinction between place and place_id, the meaning of person_ids, and expected date formats are all left unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description's opening, 'When was I at a venue,' clearly conveys the query intent, and 'merges place_visits, location_visits, and event locations' defines the resource scope. However, it does not name or contrast sibling tools such as get_location_history or get_travel_history, so a 5 is not warranted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case of retrieving venue visits is implied by 'When was I at a venue,' and the data-source merge helps an agent know what the tool covers. There is no explicit guidance on when to prefer this over related tools or any exclusions, so the guidance remains 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.
get_residencesList ResidencesARead-onlyInspect
Home / residence history separate from trips: trips with metadata.kind=residence (from log_travel) plus optional life_eras. Use for Boylston / Madeira / current home cards. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No | ||
| limit | No | ||
| include_eras | No | Include life_eras rows (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| eras | No | |
| count | Yes | |
| residences | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds genuinely useful behavior: a $0.10 cost and API-key requirement, plus the data derivation path. It does not mention rate limits or pagination, keeping it just below top marks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight, front-loaded sentences with no filler; the core scope comes first and operational details (cost/auth) are appended compactly. Slightly dense but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. The description is adequate on purpose, cost, and auth, but with low parameter coverage it leaves the to/from/limit inputs unexplained, falling short of fully complete for a 4-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only include_eras is documented, matching the 'optional life_eras' mention). The description adds nothing about to/from date semantics or limit behavior, so it fails to compensate for the large documentation gap on three of four parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (home/residence history) and explicitly distinguishes it from trips, even disclosing how it is derived (trips with metadata.kind=residence from log_travel plus life_eras). An agent can tell it apart from get_trips/get_travel_history without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an implied usage cue ('Use for Boylston / Madeira / current home cards') and notes it is separate from trips, but names no explicit alternatives or when-not-to-use conditions relative to get_trips or get_location_history. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sleepGet SleepCRead-onlyInspect
Sleep: list typed sleep/nap records with duration_minutes. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| sleeps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by disclosing the cost ($0.05) and the API key requirement, which are not in the annotations. However, it does not explain behavioral details like date range semantics or pagination, and the phrase 'typed' is ambiguous. Overall it adds some context but leaves important behavioral aspects unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose. It efficiently includes cost and auth information without fluff. The structure is clean and easy to scan, though it could benefit from a clearer separation of cost/auth and operational details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three parameters and zero schema coverage, the description must compensate by explaining how to use the parameters. It fails to do so, leaving critical context (e.g., default date ranges, limit behavior) unspecified. The presence of an output schema mitigates return-format ambiguity, but the overall description is incomplete for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the lack of parameter documentation. It does not explain what 'to', 'from', or 'limit' represent. The mention of 'duration_minutes' is a result field, not a parameter. The description provides minimal help in understanding the parameters, leaving users to guess their meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and the resource (typed sleep/nap records) and mentions a key field (duration_minutes). It is specific and informative, though it does not explicitly differentiate from the sibling get_sleep_summary, which likely serves a different purpose. The word 'typed' hints at detailed records rather than a summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_sleep_summary. It does not state whether this is for individual records or aggregated data, nor does it mention any exclusions or preferred contexts. Users must infer usage from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sleep_summarySleep SummaryARead-onlyInspect
Sleep: day/week/month totals and averages. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| range | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| range | No | |
| nights | No | |
| total_minutes | No | |
| average_minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds operational details beyond annotations: a $0.05 cost and the need for an API key. This is valuable transparency for an agent deciding whether to invoke the tool. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tight sentence that front-loads the core function ('Sleep: day/week/month totals and averages') and then adds cost and auth requirements. There is no fluff; every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only summary tool with one parameter and an output schema, the description covers the essential context: operation, time ranges, and operational constraints (cost, API key). Return format is delegated to the output schema, which exists. It is complete enough for an agent to call correctly without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'range' has an enum (day, week, month). The description indirectly references this via 'day/week/month totals and averages', giving context to the parameter. However, with 0% schema description coverage, the description carries the burden, and it adds minimal detail beyond the enum values themselves. Adequate but not rich.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific function: retrieving sleep totals and averages for day, week, or month ranges. It implies a summary view, distinguishing it from sibling get_sleep (likely raw logs) and log_sleep (write), though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like get_sleep or log_sleep. The only contextual hints are cost and API key requirements, which are operational constraints rather than usage guidance. The description does not specify conditions for choosing summary over raw data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trackersHabit TrackersARead-onlyInspect
Authenticated user live trackers only; expired countdowns and inactive streaks are omitted. Sobriety/streak trackers remain visible at day 0 after a reset. Merges event-backed trackers with the trackers table when present. Requires OAuth or a supported scoped credential. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| trackers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnly and non-destructive, and the description goes further by revealing specific filtering rules, merge logic with event-backed trackers, day-0 visibility after reset, and credential requirements. It also discloses cost ('$0.10'), which is valuable. No contradiction with annotations; the description enriches transparency substantially.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core scope, then exclusions, an exception, merge behavior, and finally auth/cost. It packs valuable info without excess verbosity, though it is a bit dense with multiple clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and zero params, the description covers all necessary behavioral context: filtering, merging, auth, and cost. Nothing critical is missing for an agent to call this correctly. It is complete for a read-only getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the description does not need to add parameter meaning. The empty input schema is clear, and the description's auth mention is not parameter-related. The baseline for zero parameters is 4, and the description does not detract from it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (authenticated user's trackers) and the scope (live only, with exclusions). The verb 'get' is implied but name makes it clear. It distinguishes this from other get_* tools by specifying unique filtering and merging behavior, though no sibling specifically competes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys when to use this tool by defining what is included and excluded (expired countdowns and inactive streaks are omitted), and states the authentication requirement. It does not explicitly contrast with alternatives, but no direct alternative exists among siblings. The contextual detail about reset behavior adds practical usage nuance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionsGet TransactionsARead-onlyInspect
List expense/income/transfer rows (includes tags, payment_method). Filter with tag=project:… or project=… ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| tag | No | Exact tag, e.g. project:max-soko-poker-venture or rail:zelle | |
| from | No | ||
| type | No | ||
| limit | No | ||
| cursor | No | Continue the same immutable one-hour snapshot; other filters remain frozen. | |
| project | No | Project label or slug → project:{slug} | |
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| transactions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds non-obvious behavioral context: the $0.10 cost, the API key requirement, and that rows include tags and payment_method. This goes beyond what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the purpose, then gives the key filter, cost, and auth requirement. Every phrase earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Core list behavior, the main tag/project filter, cost, and auth are present, and annotations plus output schema handle safety and return shape. However, with 8 parameters and low schema coverage, the absence of guidance on common filters like type, limit, and include_archived makes the definition incomplete for non-basic calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 38%, so the description should compensate for undocumented parameters. It only explains the tag/project filter pattern, partially duplicating the schema's tag/project descriptions, while leaving to, from, type, limit, cursor, and include_archived without meaningful guidance in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'List expense/income/transfer rows' and clarifies included fields ('tags, payment_method'). It is concrete and informative. It does not explicitly distinguish this tool from siblings like search_transactions or get_expenses, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage for listing transactions with tag/project filters and adds cost/API key context. However, it provides no explicit guidance about when to choose this over search_transactions, get_expenses, or get_person_transactions, and no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_travel_historyTravel HistoryBRead-onlyInspect
Completed/confirmed travel only. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| trips | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and non-destructive behavior, so the description adds value by disclosing the $0.10 cost, API key requirement, and the data scoping to completed/confirmed travel. This gives an agent useful operational and semantic context beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with every element earning its place: the scope qualifier, cost, and authentication requirement. It is front-loaded and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the presence of annotations and an output schema, the description fails to explain the two parameters, leaving an agent unable to construct a correct request. The simple nature of the tool and safety annotations are positives, but the complete absence of parameter semantics makes it insufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention 'to' or 'from' at all. An agent has no guidance on what these parameters mean (e.g., date range, location bounds) or what format to provide them in, which is a critical gap for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name 'get_travel_history' combined with the description's scope qualifier 'Completed/confirmed travel only' clearly identifies this as a retrieval operation for a specific subset of travel records. It is not a tautology and adds meaningful clarification, though it does not explicitly differentiate from sibling tools like get_trips or get_location_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool ('completed/confirmed travel only'), which suggests it is not for planned or in-progress travel. However, it does not name specific alternatives or provide explicit when-to-use versus when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tripGet TripARead-onlyInspect
Single trip with linked places and people. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| trip_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| trip | No | |
| people | No | |
| places | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful behavioral context beyond annotations by stating the $0.10 cost and API key requirement. It does not describe rate limits or error behavior, but the read-only annotations reduce the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently front-loaded with the core result, followed by a compact parenthetical covering cost and authentication. Every word contributes necessary information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and an output schema, the description conveys the essential result and operational requirements. It is slightly thin on parameter details and tool differentiation, but the output schema and annotations fill most gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single required trip_id parameter with no description, and schema description coverage is 0%. The description does not mention trip_id or clarify its format or provenance, so the agent must infer meaning from the parameter name alone. The description fails to compensate for the absent schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as a 'Single trip' and specifies its contents as 'linked places and people.' This distinguishes it from the sibling tool get_trips, which returns multiple trips. The action verb is implied by the title rather than stated in the description, keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when a single trip with associated places and people is needed, but it provides no explicit when-to-use guidance or comparison with alternatives like get_trips. The selection is left mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tripsList TripsARead-onlyInspect
User trips with status filter (planned/completed/etc.). Residences also appear here with metadata.kind=residence — prefer get_residences for home history. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No | ||
| limit | No | ||
| cursor | No | Continue the same immutable one-hour snapshot; other filters remain frozen. | |
| status | No | ||
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| trips | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that results are not pure trips—residences are mixed in with metadata.kind=residence—and adds real-world call constraints ($0.10 cost, API key). These details go beyond the readOnly/destructive annotations and help the agent plan the call and interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose, followed by the residence caveat and cost/auth note. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for selection and covers the main caveat, cost, and auth, and an output schema exists. But with six parameters and only 17% schema coverage, the unclear from/to/limit/include_archived semantics keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 17%, the description needed to clarify the five undocumented parameters. It only explains status (and only with 'planned/completed/etc.'), leaving to, from, limit, and include_archived unexplained. The cursor semantics are already in the schema, so that parameter is covered, but the remainder is not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The definition clearly identifies the resource (user trips) and the primary capability (status filtering), and the phrase 'prefer get_residences' distinguishes it from the closest sibling. The title 'List Trips' supplies the verb, so an agent can tell what calling it returns even before examining the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete when-not-to-use rule: residences appear in the results but home history should be fetched via get_residences. It doesn't explicitly state when to choose this over other list tools like get_travel_history, but the use case is strongly implied by 'User trips with status filter.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_uber_gmailImport Uber GmailAInspect
Search connected Gmail for Uber trip receipts and write log_place_visit rows with sources gmail:uber-{gmail_id} (idempotent). Optional dry_run, max_results, query, account. ($0.15; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| query | No | Override Gmail search (default from:uber.com receipt/trip) | |
| account | No | ||
| dry_run | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| max_results | No | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| results | Yes | |
| scanned | Yes | |
| skipped | Yes | |
| imported | Yes | |
| duplicates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations say readOnlyHint=false, destructiveHint=false — a writes-somewhere-but-not-destructive operation. The description adds valuable behavioral detail: idempotency, the exact upsert target and source key format, and cost/auth requirements ($0.15, API key). It stops short of describing rate limits or conflict behavior on re-runs beyond 'idempotent'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the action and target, cost/auth in parentheses at the end. Every phrase carries information; nothing is wasted, though the parenthetical is terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values needn't be explained. For a 7-param write tool, the description covers the critical behavior (idempotency, write target, cost, auth) but leaves several params and the dry_run control unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 43%, so the description compensates partially by naming dry_run, max_results, query, account. But email, request_id, and idempotency_key are not covered, and dry_run's semantics (preview without writing) are not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (search) + resource (Gmail for Uber receipts) + explicit write target (log_place_visit rows with sources gmail:uber-{gmail_id}). Directly distinguishable from sibling import_venmo_gmail and search_gmail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for Uber-receipt ingestion and mentions 'optional dry_run' but does not state when to prefer search_gmail / read_gmail_message / log_place_visit directly, nor when to use dry_run vs a real run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_venmo_gmailImport Venmo GmailAInspect
Search connected Gmail for Venmo receipts and write log_transaction rows with external_id=venmo-gmail-{gmail_id} (idempotent). Optional dry_run, max_results, query, mirror_event, account. Prefer this over calendar-only Money · digs. ($0.15; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| No | Alias for account | ||
| query | No | Override Gmail search (default from:venmo.com paid/payment) | |
| account | No | Mailbox email or connection id | |
| dry_run | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| max_results | No | ||
| mirror_event | No | Also create Money · calendar annotations | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| results | Yes | |
| scanned | Yes | |
| skipped | Yes | |
| imported | Yes | |
| duplicates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful context beyond the annotations: idempotency via the external_id scheme, an explicit dry_run option, a price ($0.15), and an API-key requirement. Annotations already establish it is a non-destructive write, so the description correctly focuses on the traits annotations can't convey, though it doesn't describe what dry_run actually returns versus a real run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and the output contract, then packs options and routing into a tight second sentence. Slightly dense with parenthetical asides (idempotent, cost, API key), but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained. For an 8-parameter write tool the description covers identity/idempotency, cost, auth, and routing, leaving only minor gaps like the effect of mirror_event and the dry-run behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description names five of the eight parameters (dry_run, max_results, query, mirror_event, account) without adding format or default detail beyond the schema. The remaining params (email, request_id, idempotency_key) are left to the schema, so this sits at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search Gmail for Venmo receipts) and the concrete output resource (log_transaction rows with a defined external_id format). The scoping to Venmo and the write target distinguish it clearly from siblings like import_uber_gmail, search_gmail, and log_transaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes away from an alternative with 'Prefer this over calendar-only Money · digs,' giving a clear selection condition. It does not, however, contrast with the closest sibling import_uber_gmail or explain when a plain search_gmail pass would suffice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_entitiesLink EntitiesBInspect
Link Trip→Stay→Place / Event→Person (graph, not prose). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| to_id | Yes | ||
| from_id | Yes | ||
| to_type | Yes | ||
| from_type | Yes | ||
| link_type | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| linked | No | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful operational context beyond the annotations: it costs $0.10 and requires an API key, and it clarifies that the output is graph-structured rather than prose. It does not disclose whether duplicate links are ignored, whether existing links are replaced, or whether entity IDs must already exist, but the annotations already cover read-only and destructive intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler, and the primary purpose is front-loaded. The cost and API-key requirement are placed at the end, and each segment earns its place, though the arrow notation is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The required parameters are represented in the arrow notation, and the idempotency keys are documented in the schema, with an output schema available for return values. However, with eight parameters and no enums, the description still leaves link_type semantics, notes, and ID sourcing unexplained, making it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description needed to compensate for required parameters like from_type, to_type, link_type, and notes. The arrow notation gives clues about valid endpoint type values, but it does not explain ID formats, the meaning of link_type, or how notes should be used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Link') and resource ('entities'), and the arrow notation 'Trip→Stay→Place / Event→Person' scopes the operation to particular graph relationships. It is clear enough to distinguish from sibling tools like link_people and link_inventory_person, though it does not fully define what a 'Stay' is or enumerate every valid endpoint combination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The allowed edge pattern implies when this tool should be used, and the 'graph, not prose' note suggests the intended output model. However, there is no explicit when-not-to-use guidance or alternative routing to sibling tools like link_people or unlink_people, so an agent must infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_inventory_personLink Inventory PersonCInspect
Provenance link e.g. inherited_from, gifted_by. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| person_id | Yes | ||
| request_id | No | Client idempotency key (retries return original result). | |
| inventory_id | Yes | ||
| relationship | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only and not destructive. The description adds useful operational context: a $0.10 cost and API key requirement. However, it does not state whether the link is created idempotently, whether existing links are replaced, or what failure modes might occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the core concept and examples, but it is under-specified for a tool with five parameters and no guidance on usage behavior. The brevity is efficient but not sufficiently informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple purpose and an output schema, so return-value details are not required. However, the description leaves out required parameter semantics, allowed relationship values, idempotency behavior, and any guidance on selecting this tool over linking siblings, making it incomplete for correct autonomous invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, and the three required parameters (inventory_id, person_id, relationship) have no schema descriptions. The description provides helpful relationship examples, which partially clarifies the relationship parameter, but it does not explain the semantics of inventory_id or person_id, nor does it specify allowed relationship values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description together communicate a specific operation: linking an inventory item to a person with a provenance relationship, with concrete examples 'inherited_from, gifted_by'. It is distinguishable from generic siblings like link_entities or link_people by the inventory-person scope, though it does not explicitly state the verb 'creates' or define the exact link behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as link_entities, link_people, or unlink_people. There is no mention of prerequisites, conflicts, or cases where another linking tool should be chosen instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_peopleLink PeopleAInspect
NON-DESTRUCTIVE: create/update a person_connections edge between two distinct people (friends/family/knows/…). Both contacts remain. Do not use for duplicate cleanup — use merge_people. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| source | No | ||
| direction | No | ||
| person_id | Yes | ||
| confidence | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. | |
| other_person_id | Yes | ||
| relationship_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| linked | No | |
| message | No | |
| connection | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false), and the description reinforces it ('NON-DESTRUCTIVE', both contacts remain) while adding context the annotations do NOT carry: cost ($0.10) and API-key requirement. It stops short of describing side effects on existing edges or upsert-vs-create behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the most decision-relevant information (non-destructive, what it links, the alternative, cost/auth) front-loaded and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need no explanation, and the description covers safety, alternative routing, cost and auth. The remaining gap is parameter-level detail for the seven undocumented fields, which is a real but bounded omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 22% across 9 parameters, so the description must compensate and largely does not. It hints at relationship_type values ('friends/family/knows/…') but adds nothing for direction, confidence, source, notes, or the create-vs-update semantics of person_id/other_person_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('create/update a person_connections edge between two distinct people') and immediately distinguishes itself from the sibling merge_people. An agent can tell it apart from merge_people/unlink_people without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the when-not case ('Do not use for duplicate cleanup — use merge_people') and the alternative tool. The non-destructive framing plus 'both contacts remain' also clarifies the intended scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clarificationsList ClarificationsBRead-onlyInspect
Ranked clarification queue: only person-typed mentions + duplicate CRM people. Non-person junk (places, orgs, media, command fragments) is auto-dismissed. Existing contacts auto-link. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Optional: entity_mention | duplicate_people | |
| limit | No | Max rows 1–50, default 15 | |
| auto_cleanup | No | Auto-dismiss non-person / auto-link existing (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| message | No | |
| truncated | No | |
| clarifications | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly discloses auto-dismissal and auto-linking behavior, plus cost and API key requirements. However, these behaviors contradict the readOnlyHint=true annotation: auto-dismissing non-person junk and auto-linking existing contacts imply state modification. This is an annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, covering scope, ranking, filtering, side effects, cost, and authentication in just two sentences. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list-oriented tool with a full input schema and output schema, the description covers scope, behavior, cost, and prerequisites well. The main gap is the conflict between the described auto-cleanup side effects and the readOnlyHint annotation, which undermines the completeness of the tool's metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented. The description adds context like 'ranked' and reinforces the auto-cleanup behavior, but does not add substantial new meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List clarifications' as a ranked queue, and narrows scope to 'only person-typed mentions + duplicate CRM people'. It clearly explains what the tool returns, but it does not explicitly name sibling tools like dismiss_clarification or bulk_dismiss_clarifications to distinguish itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this is the ranked clarification queue for person mentions and duplicate people, and the API key requirement is stated. However, it does not explicitly say when to prefer this over sibling tools 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.
list_gmail_accountsList Gmail AccountsARead-onlyInspect
List connected Gmail mailboxes for the authenticated user (id, email, is_default). Use account on search_gmail / read_gmail_* / import_*_gmail to pick a mailbox. Connect another inbox at /integrations (multi-mailbox after migration). Share tokens cannot call. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| accounts | Yes | |
| connect_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false. Beyond that, the description adds auth constraints ('share tokens cannot call', 'API key required'), a cost signal ($0.05), and a migration caveat for multi-mailbox behavior — real context not present in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, followed by tightly packed usage, connection, auth, and pricing notes in a few short clauses. Dense but each clause carries information; minor parentheses-packed pricing note is the only slight clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read tool with a rich output schema, the description covers purpose, downstream usage, auth limits, connection path, and cost. The only gap is that the '/integrations (multi-mailbox after migration)' clause is terse and slightly ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero input parameters, so the baseline is 4. The description instead documents the shape of the result (id, email, is_default), which is meaningful even though an output schema already exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List connected Gmail mailboxes for the authenticated user') and even enumerates the returned fields (id, email, is_default). An agent can distinguish it from search_gmail or read_gmail_message without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: use the returned account identifier on search_gmail / read_gmail_* / import_*_gmail, and points to /integrations for connecting another inbox. It gives clear context for calling this first, though it never states an explicit 'when not to use' case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_eventLog Event (calendar write)AInspect
MUTATES the authenticated user calendar. Use for non-food days — funeral, cremation, appointment, dinner, anything that is not a food log. Do not store this as a chat memory. Example (funeral tonight): log_event({ title: "Funeral service — Mr Goh Choo Taw", date: "2026-08-29", time: "8pm", location: "Multi Purpose Hall, Blk 661 Jurong West St 64", category: "funeral" }). Example (Sunday cremation): log_event({ title: "Cremation — Mr Goh Choo Taw", date: "2026-08-30", location: "Mandai Crematorium", category: "funeral" }). Required: title + event_date (YYYY-MM-DD, YYYY-MM, or YYYY; alias date). Soft dates expand to first-of-period and set metadata.date_precision (day|month|year|approx). Optional: event_time (8pm or 20:00; alias time), end_date, end_time, location / city+country, description, category, external_url, visibility (private|friends|public), image_url, timezone, date_precision, share_with (Dayze handles e.g. ["boof"]), people / with / person_ids, idempotency_key (recommended; retries reuse the first write). For trips/residences prefer log_travel({ city, country, start_date, kind }). Unknown people names do not fail the write. Public events return share_url (/e/{id}) for Explore + social. Inserts public.events, optional event_people / shared_events, then rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| event | Yes | A Dayze calendar event record. |
| people_tagged | Yes | |
| unresolved_people | Yes | |
| life_state_rebuilt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description goes well beyond by disclosing the write path (public.events, optional event_people/shared_events, then rebuilds life_state), auth requirements (API key or OAuth with scope context; share tokens cannot write), idempotency semantics, that unknown people names do not fail the write, that public events return a share_url, and the $0.10 cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and exclusions are correctly front-loaded, and the two examples earn their place by showing the anyOf date/alias split concretely. However, the mid-paragraph inventory of optional fields (end_date, end_time, location/city+country, description, category, external_url, visibility, image_url, timezone, date_precision, share_with, people, idempotency_key) largely restates a schema that is already 100% documented, making the block longer than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with an output schema and full annotation coverage, everything an agent needs is present: required fields and their alias forms, auth and cost constraints, idempotency behavior, side effects on downstream state (event_people, shared_events, life_state rebuild), and the public-visibility return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the parameters and the baseline would be 3. The description still adds meaning beyond it: soft dates expand to first-of-period and set metadata.date_precision (day|month|year|approx), accepted time formats, alias pairs, and a worked example call for each of the two anyOf branches.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('MUTATES the authenticated user calendar') and immediately carves out its domain: non-food days such as funeral, cremation, appointment, dinner. It is clearly distinguishable from log_food, log_travel, and log_transaction, which it names outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('non-food days'), explicit when-not-to-use ('anything that is not a food log', 'Do not store this as a chat memory'), and explicit alternatives ('For trips/residences prefer log_travel', 'Prefer log_transaction / import_venmo_gmail for cashflow-first digs'). Nothing about routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_expenseLog ExpenseAInspect
Create an outgoing expense only. For money received (Venmo/Cash App/PayPal/Zelle) use log_transaction with direction=from and type=income. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| notes | No | ||
| amount | Yes | ||
| category | No | ||
| currency | No | ||
| merchant | No | Payee name (defaults when omitted) | |
| request_id | No | Client idempotency key (retries return original result). | |
| description | No | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| expense | No | Expense/income transaction row. |
| message | No | |
| expense_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful operational context beyond the annotations: each call costs $0.10 and requires an API key. The 'Create' action also correctly implies a write operation consistent with readOnlyHint=false. It does not fully describe side effects, but the annotations already cover the basic safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that deliver purpose, scope, the key alternative, and cost/authentication. No filler or redundant restatement of the schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the critical selection criterion, cost, and auth, and an output schema exists so return values need not be explained. However, with nine parameters and low schema coverage, the lack of guidance on how to populate amount, category, currency, and notes leaves some ambiguity for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description does not compensate by explaining amount, date, category, currency, or notes. The only parameter-related value is the direction/income distinction, which is more about tool selection than parameter semantics. Most parameters remain underdocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Create an outgoing expense only.' It clearly differentiates the tool from log_transaction, which handles incoming money. The scope is precise and immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool versus the main alternative: for money received via Venmo/Cash App/PayPal/Zelle, use log_transaction with direction=from and type=income. This gives the agent an unambiguous routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_favorite_songLog Favorite Song (music write)AInspect
MUTATES the authenticated user favorite tracks list at /music. Use when they favorite or save a song — do not store this as a chat memory or in music_preferences. Example: “Henry Mancini - Piano And Strings (1995 Remastered)” → log_favorite_song({ track: "Henry Mancini - Piano And Strings (1995 Remastered)" }) or title + artist. Optional year_note, source_url. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Alias for source_url | |
| title | No | Track title (required unless track blob parses) | |
| track | No | Optional "Artist - Title (year remaster)" blob | |
| artist | No | Artist name (required unless track blob parses) | |
| year_note | No | Optional year or remaster note | |
| request_id | No | Client idempotency key (retries return original result). | |
| source_url | No | Optional https link | |
| remaster_note | No | Alias for year_note | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| track | Yes | Saved favorite-track record. |
| created | Yes | True when a new favorite was created. |
| message | Yes | |
| track_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though readOnlyHint=false already signals a write operation, the description explicitly states it MUTATES the favorite tracks list, which removes any ambiguity. It adds valuable behavior beyond annotations: authentication requirements, share-token write restrictions, and a $0.10 cost. This is exactly the kind of context annotations do not capture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense and front-loaded with the key action word 'MUTATES'. The example is helpful rather than padding. However, the final parenthetical '($0.10; API key required)' partially repeats the earlier 'Requires API key' statement, introducing minor redundancy. Overall itearns a 4 for efficiency with a small deduction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters, no required fields, an output schema, and various potential edge cases, the description covers purpose, routing, example usage, optional parameters, authentication, restrictions, and cost. The input schema and output schema handle parameter-level and response details, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds crucial semantic meaning that the schema alone does not convey: the two acceptable input forms ('track' blob OR title+artist) and a concrete example showing the blob format. It also correctly highlights optional year_note and source_url. This goes beyond merely restating property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'MUTATES' plus the resource 'authenticated user favorite tracks list at /music' states exactly what the tool does. It is clearly distinguished from sibling logging tools by targeting a specific music write operation, and the title 'music write' reinforces this differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when they favorite or save a song — do not store this as a chat memory or in music_preferences' gives explicit when-to-use and when-not-to-use guidance. It also names alternatives (chat memory, music_preferences) and provides authentication prerequisites ('Requires API key or OAuth with scope context. Share tokens cannot write.').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_foodLog Food (diary write)AInspect
MUTATES the authenticated user Food Diary and calendar. Use when they ate or drank — do not store this as a chat memory. Example: “I had Mee Pok for late lunch with my parents” → log_food({ what: "Mee Pok", kind: "meal", meal_period: "late lunch", with: ["my parents"] }). Optional: place/merchant, amount, consumed_at (ISO). Resolves with/Mum/Dad via person aliases; unknown names do not fail the food write. Tags companions on the mirrored event. Rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| what | Yes | What they ate or drank (required). Example: Mee Pok | |
| with | No | Companion names, aliases, ids, or group tokens. "my parents" / Mum / Dad resolve via aliases; "family" expands to CRM rows with family relationship labels | |
| notes | No | ||
| place | No | Venue or location | |
| amount | No | Price if mentioned | |
| paid_by | No | Who paid (name or alias) | |
| currency | No | ISO currency, e.g. SGD | |
| merchant | No | Restaurant, stall, or shop | |
| person_ids | No | Owned person UUIDs to tag (user-scoped) | |
| request_id | No | Client idempotency key (retries return original result). | |
| consumed_at | No | ISO 8601 datetime; wins over meal_period | |
| meal_period | No | Spoken period when consumed_at is omitted, e.g. "late lunch" | |
| people_names | No | Alias for with | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| food_id | Yes | |
| message | Yes | |
| event_id | Yes | |
| food_log | Yes | Saved Food Diary row. |
| people_tagged | Yes | |
| unresolved_people | Yes | |
| life_state_rebuilt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals mutation, side effects ('Tags companions on the mirrored event', 'Rebuilds life_state'), alias resolution behavior, unknown-name tolerance, and authentication constraints ('Requires API key or OAuth... Share tokens cannot write'). These are meaningful behavioral facts not inferable from readOnlyHint/destructiveHint alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: mutation warning, trigger condition, worked example, optional fields, side effects, auth limitations, and pricing. The key information is front-loaded and the later sentences are short and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutating tool, the description, combined with a rich input schema and output schema, is complete. It provides a worked example, side-effect model, authentication requirements, and enough parameter semantics to make a correct call without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 87%, so the schema already documents most parameters. The description adds real value by mapping an utterance to what/kind/meal_period/with, noting the optional place/merchant/amount/consumed_at fields, and explaining alias resolution and non-failure for unknown names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with 'MUTATES the authenticated user Food Diary and calendar,' naming the exact action and resource, then supplies a concrete natural-language example. The title '(diary write)' plus 'Use when they ate or drank' clearly separates it from sibling tools like log_event and update_food.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use when they ate or drank — do not store this as a chat memory,' giving both a positive trigger and a negative instruction. It does not directly name sibling alternatives such as log_event, update_food, or delete_food, but the food/meal trigger makes the intended selection clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_incomeLog IncomeAInspect
Record money received (Stripe, refunds, payroll, Venmo). Alias of log_transaction with type=income and direction=from. Use external_id for Stripe/Gmail idempotency. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| notes | No | ||
| amount | Yes | ||
| source | No | ||
| currency | No | ||
| merchant | No | ||
| person_id | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| external_id | No | ||
| payment_method | No | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| message | No | |
| event_id | No | |
| direction | No | |
| duplicate | No | |
| expense_id | No | |
| transaction | No | Expense/income transaction row. |
| transaction_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-destructive write with openWorldHint=false. The description adds material behavior beyond that: a per-call cost ($0.10), an API-key requirement, and the idempotency semantics of external_id. It stops short of describing what happens on duplicate detection or how fixed fields interact with supplied ones.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what the tool does and the alias relationship, then idempotency guidance and operational caveats. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description covers cost, auth, idempotency, and alias semantics, leaving only the many undocumented input fields as a gap relative to the tool's 11-parameter complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 18% (request_id and idempotency_key are the only documented properties), so the description must compensate across 11 params. It explains external_id's idempotency role and clarifies that type/direction are set implicitly, but leaves source, merchant, person_id, payment_method, currency, date, notes, and amount with no meaning beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Record money received') and grounds it with concrete trigger examples (Stripe, refunds, payroll, Venmo). It also clarifies its relationship to the sibling tool log_transaction by naming itself as an alias with fixed type=income and direction=from, so an agent can distinguish it from log_expense and log_transaction without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when this applies (money received from the listed sources) and a specific directive to use external_id for Stripe/Gmail idempotency. It does not explicitly state when to prefer log_income over calling log_transaction directly, but the alias disclosure implies they are interchangeable, which is adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_place_visitLog Place VisitAInspect
MUTATES place_visits for map/history digs (Uber dropoff, address evidence). Required: place (or place_id) + arrived_at/date. Optional: departed_at, source (uber|mcp|…), evidence_expense_id (idempotent), city/country/address. Prefer this over stuffing streets only into expenses. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| date | No | Alias for arrived_at | |
| name | No | Alias for place | |
| place | No | ||
| source | No | ||
| address | No | ||
| country | No | ||
| place_id | No | ||
| arrived_at | No | ISO or YYYY-MM-DD | |
| confidence | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| departed_at | No | ||
| idempotency_key | No | Alias for request_id. | |
| evidence_event_id | No | ||
| evidence_expense_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| place | No | Canonical place record. |
| visit | No | Normalized place visit. |
| message | No | |
| place_id | No | |
| duplicate | No | |
| created_place | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm readOnlyHint=false, so 'MUTATES' is consistent and the description adds real operational context: required fields, aliases, idempotency behavior for evidence_expense_id, and cost/auth ('$0.10; API key required'). Those cost and auth details are the kind of info annotations cannot carry. It stops at 4 because it doesn't say what happens on conflict or what the output returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single dense sentence: mutation + scope + required/optional params + steering + cost/auth, all front-loaded. No filler; every clause carries an instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not explain returns, and it covers mutation, required params, aliases, idempotency, and cost. It is nearly complete for invocation, though full parameter semantics for the remaining untyped params are still absent on both sides.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (15 params, most undocumented), so the schema gets a 3 baseline and the description must compensate. It does list required vs optional fields, alias relationships (date/arrived_at, name/place, idempotency_key/request_id), and enum-ish source values (uber|mcp), which adds usable meaning. But several parameters (confidence, evidence_event_id, request_id) are left to the schema, so it only partially closes the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('MUTATES place_visits') and gives concrete examples of what qualifies (Uber dropoff, address evidence), which distinguishes it from read siblings like get_place_visits. It does not explicitly name the mutation alternative it replaces (e.g., 'use instead of log_event for location records'), so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear positive criterion (map/history digs) and one explicit steering rule: 'Prefer this over stuffing streets only into expenses,' which routes the agent away from a plausible wrong sibling. The condition is implied rather than fully spelled out with when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_sleepLog SleepAInspect
Sleep: log overnight or nap. Cross-midnight OK (e.g. 14:00→03:00 = 13h / 780m). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| source | No | ||
| quality | No | ||
| ended_at | Yes | ISO end | |
| timezone | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| sleep_type | No | ||
| started_at | Yes | ISO start | |
| timezone_end | No | ||
| timezone_start | No | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| sleep | No | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the cost ($0.10) and API key requirement, which are relevant operational details. It does not contradict the annotations (readOnlyHint=false, destructiveHint=false) and adds context about the operation's side effects without being misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a single sentence with a helpful example and cost note. Every part earns its place, and it avoids redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple logging tool, the description is adequate to understand the core purpose and cross-midnight handling. However, it omits explanations for optional parameters and does not clarify the output or error behavior, leaving some gaps for an agent invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 36% (4 of 11 parameters described). The description implicitly references started_at and ended_at via the example but leaves notes, source, quality, timezones, idempotency keys, and other fields unexplained. Since coverage is low, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (log) and the resource (sleep), and specifies it covers overnight and nap. It also provides a concrete cross-midnight example, distinguishing it from other log_* tools that handle different domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives practical usage guidance via the cross-midnight example (14:00→03:00 = 13h / 780m), which clarifies how to handle overnight periods. However, it does not explicitly mention when to use this versus alternative tools like get_sleep or update_sleep, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_transactionLog TransactionAInspect
Income/expense/transfer write. direction=from + type=income for Venmo/Stripe/refunds received. Positive amount; external_id dedupes imports. Optional project/tags. Zelle always USD. Optional mirror_event creates a calendar Money · annotation (ledger is still the source of truth for /money). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| tags | No | Optional tags. Prefer project: / ext: / rail: grammar. | |
| type | No | ||
| notes | No | ||
| amount | Yes | ||
| source | No | ||
| project | No | Venture/project label → stored as project:{slug} tag (e.g. Max Soko poker venture) | |
| currency | No | ||
| merchant | No | ||
| direction | Yes | ||
| person_id | No | ||
| account_id | No | Stable provider account identity for imported payments. | |
| message_id | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| external_id | No | ||
| mirror_event | No | Also insert optional Money · calendar event (default false) | |
| payment_method | No | ||
| idempotency_key | No | Alias for request_id. | |
| extractor_version | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | |
| message | No | |
| event_id | No | |
| direction | No | |
| duplicate | No | |
| expense_id | No | |
| transaction | No | Expense/income transaction row. |
| transaction_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral detail beyond the annotations: it declares write semantics, external_id deduplication, Zelle currency constraints, mirror_event behavior with the ledger as source of truth, and the $0.10/API key requirements. This is valuable context that the minimal boolean annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and packs many necessary constraints into short, scannable clauses. There is no filler or repetition; every clause adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers essential constraints and edge cases like deduplication, currency, mirror events, cost, and auth. Given the tool's high parameter count and low schema coverage, some parameter meaning is still missing, though the presence of an output schema likely reduces the need to describe return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 32% schema description coverage, the description compensates for several key parameters: direction/type combos, positive amount, external_id deduping, optional project/tags, currency, and mirror_event. However, many of the 19 parameters remain undocumented in both the schema and the description, so the compensation is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a strong verb and resource ('Income/expense/transfer write'), and enumerates the record types and key use cases like Venmo/Stripe/refunds. It does not explicitly name sibling tools like log_income or log_expense, so it is clear but does not explicitly differentiate from those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete situational guidance, such as 'direction=from + type=income for Venmo/Stripe/refunds received', 'external_id dedupes imports', and 'Zelle always USD', which help an agent decide how to invoke it. However, it does not explicitly state when NOT to use it or which sibling tool to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_travelLog TravelAInspect
MUTATES trips (+ optional calendar travel event). Prefer this over free-text log_event for map/history. Required: city + start_date. Optional: country, end_date, kind (trip|residence|soft_pin), confidence (confirmed|likely|possible), evidence, title, mirror_event. Soft pins default to status=possible and stay off cities/map until confidence=confirmed. Zelle/Venmo money belongs in log_transaction — not here. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | ||
| date | No | Alias for start_date | |
| kind | No | ||
| title | No | ||
| country | No | ||
| end_date | No | ||
| evidence | No | Source note (Gmail id, address, etc.) | |
| confidence | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| start_date | No | YYYY-MM-DD | |
| mirror_event | No | Also insert category=travel calendar event (default true) | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | No | |
| note | No | |
| trip | No | |
| message | No | |
| event_id | No | |
| confidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/non-destructive/closed-world profile, but the description adds real behavioral context beyond them: soft_pin defaulting to status=possible and staying off cities/map until confirmed, the optional mirror calendar event, the $0.10 cost, and the API-key requirement. Return format is not described, but an output schema exists to cover it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the mutation fact and the routing preference before enumerating parameters and edge cases; the compressed, clause-heavy style is efficient though dense. Nearly every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 12 parameters, an output schema, and existing annotations, the description covers routing, required/optional inputs, special-case semantics, cost, and auth. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema description coverage, the description compensates by listing required (city + start_date) and optional fields and explaining the meaning of the kind and confidence enums and mirror_event's role. It omits the date/idempotency_key aliases and request_id, and its 'Required: city + start_date' slightly conflicts with the schema listing only city as required, but overall semantic value is well above the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (MUTATES trips) plus the optional calendar side effect, so the resource and scope are unambiguous. It explicitly names sibling tools (log_event, log_transaction) it should be preferred over or kept separate from, letting an agent distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: 'Prefer this over free-text log_event for map/history' and 'Zelle/Venmo money belongs in log_transaction — not here.' Both the positive condition and the exclusion are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_peopleMerge PeopleADestructiveInspect
Apply a reviewed durable preview atomically; undo_contact_change accepts restore_id for 30 days if unchanged. Fold duplicate CRM contact(s) into primary_person_id (same human, spelling variants). Prefer score_people_duplicates first. Not for “X knows Y” — use link_people for relationships. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| preview_id | Yes | Durable preview_id returned by merge_people_preview; review the 30-day restore window before applying. | |
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. | |
| primary_person_id | Yes | ||
| duplicate_person_ids | Yes | ||
| restore_window_acknowledged | Yes | Must be true — confirms the 30-day restore window was reviewed before apply. |
Output Schema
| Name | Required | Description |
|---|---|---|
| person | No | CRM person record. |
| message | No | |
| restore_id | No | |
| reversible | No | |
| merged_person_ids | No | |
| restore_expires_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, it discloses atomic application, the 30-day restore window via undo_contact_change with restore_id, cost, and API key requirement. These are meaningful behavioral facts for a destructive operation, and nothing contradicts 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences convey the action, prerequisites, exclusions, rollback, cost, and auth requirement without fluff. The core behavior is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Combined with the input schema, annotations, and output schema, the description covers prerequisites, exclusions, rollback, and cost. The agent has enough to decide when and how to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds meaning for primary_person_id and duplicate_person_ids by explaining the fold semantics. It also clarifies preview_id's durable, reviewed role, though it does not describe every parameter in detail; the schema handles most remaining fields adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: applying a reviewed durable preview atomically and folding duplicate CRM contacts into primary_person_id. It clearly differentiates from link_people for relationships and from score_people_duplicates as a precursor, so an agent can distinguish it among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage direction: prefer score_people_duplicates first, and explicitly excludes 'X knows Y' cases by routing to link_people. This is direct when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_people_previewMerge People PreviewAInspect
Save a durable restore snapshot without modifying contacts before merge_people. Returns resulting name/aliases, preserved counts, field conflicts, safe_to_merge. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | No | Client idempotency key (retries return original result). | |
| field_choices | No | ||
| idempotency_key | No | Alias for request_id. | |
| primary_person_id | Yes | ||
| duplicate_person_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| manifest | No | |
| warnings | No | |
| preview_id | No | |
| reversible | No | |
| safe_to_merge | Yes | |
| resulting_name | No | |
| field_conflicts | No | |
| photos_preserved | No | |
| primary_person_id | Yes | |
| resulting_aliases | No | |
| restore_window_days | No | |
| graph_edges_preserved | No | |
| interactions_preserved | No | |
| transactions_preserved | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false, and the description reinforces that it does not modify contacts. It adds valuable context: the snapshot is durable and restorable, and it notes a cost of $0.05 and API key requirement—details beyond annotations that help the agent assess side effects and prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed sentence that front-loads the core purpose and includes return fields, cost, and authentication. No filler or redundancy—every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return details are covered. The description adds useful behavioral context (snapshot, no modification) and cost/auth. It does not explicitly detail when to choose this over merge_people, but the 'before merge_people' hint and sibling presence make it adequate. Missing parameter explanations are a minor gap given the schema, but overall it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40% (2 of 5 params described), and the description provides no parameter-level guidance. It does not explain primary_person_id, duplicate_person_ids, field_choices, or the request_id/idempotency_key aliases. With low coverage, the description should compensate but does not, leaving agents to guess parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('save a durable restore snapshot') and explicitly notes it does not modify contacts, distinguishing it from merge_people. It also lists the return fields (name/aliases, preserved counts, field conflicts, safe_to_merge), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before merge_people' clearly positions this as a precursor to the actual merge, and the mention of a restore snapshot implies it should be used for safe preview. It does not explicitly state when not to use it or list alternatives, but the context is strong enough for an agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_people_applyNormalize People ApplyAInspect
Apply a normalize_people_preview by preview_id. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| preview_id | Yes | ||
| request_id | Yes | ||
| candidate_hash | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| applied | No | |
| message | No | |
| change_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds cost and API-key requirements, but it does not describe what 'applying' actually changes or whether the operation is reversible. This is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence front-loads the core operation and then adds cost and authentication in a compact parenthetical. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not needed, but the tool has three required parameters and only one is semantically clarified. The missing meaning of candidate_hash and request_id leaves an agent without enough information to confidently construct a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, and the description only clarifies preview_id ('by preview_id'). The required candidate_hash and request_id parameters remain unexplained, and the description does not compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Apply'), a specific object ('normalize_people_preview'), and a specific lookup key ('by preview_id'). This clearly distinguishes it from the sibling preview tool and tells an agent exactly which operation is being performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'By preview_id' implies the prerequisite of an existing preview, so the basic usage context is present. However, the description never explicitly names normalize_people_preview as the way to create that preview, nor does it say when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_people_previewNormalize People PreviewARead-onlyInspect
Preview whitespace/phone/handle normalization changes (no title-case of stylized names). ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| rules | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| changes | Yes | |
| preview_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive. The description adds useful behavioral context beyond those annotations: it specifies the exact transformation categories covered, excludes title-casing of stylized names, and discloses cost and authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It states the core action first, then adds the scope exclusion and the cost/auth caveat, all in about twelve words of useful content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema reduces the need to describe return values, and the annotations cover the safety profile. However, the description leaves the 'rules' parameter unexplained and does not connect this preview tool to its natural sibling normalize_people_apply, so an agent may not know how to call it correctly in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only shows a single optional 'rules' array of strings with no descriptions, and schema description coverage is 0%. The description does not explain what values 'rules' accepts, what happens if it is omitted, or how rules shape the preview, leaving the agent to guess at the parameter's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Preview') and a clear resource ('whitespace/phone/handle normalization changes'), with an explicit scope exclusion ('no title-case of stylized names'). It reads clearly as a dry-run/preview operation, though it does not explicitly name or contrast with normalize_people_apply or other siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'Preview' implies this is a dry-run tool, and the mention of cost and API key requirement gives some operational context. However, it does not explicitly state when to use this tool instead of normalize_people_apply, nor does it say 'run this before applying changes' or exclude any alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notable_packNotable Knowledge PackARead-onlyInspect
DEFAULT for who is X: profile + life_in_days (age/day_number) + similar people + birthday peers. Timeline events include day_number. Prefer this over notable_profile. Example: albert-einstein. ($0.05)
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD target date | |
| slug | Yes | Person slug, e.g. albert-einstein | |
| peers | No | ||
| similar | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| profile | No | Public notable-person profile. |
| timeline | No | |
| life_in_days | No | Age and current day-number calculations. |
| birthday_peers | No | |
| similar_people | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint, openWorldHint, and destructiveHint annotations already cover safety, so the bar is lower. The description adds useful behavioral context: the response includes life_in_days with age/day_number, similar people, birthday peers, and timeline events including day_number. It also discloses a $0.05 cost, which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact, information-dense line. It front-loads the default usage, then packs the key response components, the sibling preference, an example, and pricing without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, an existing output schema, and annotations covering safety, the description covers the essential context: primary use case, response composition, preferred alternative, example, and cost. It does not explain all edge cases, but it provides enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, leaving peers and similar without schema descriptions. The description compensates by mapping 'similar people' and 'birthday peers' to the likely similar and peers parameters. It also gives an example slug, albert-einstein, reinforcing the slug parameter's expected format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as the default 'who is X' knowledge pack and lists what it contains (profile, life_in_days, similar people, birthday peers). It distinguishes itself from notable_profile with 'Prefer this over notable_profile.' It lacks a strict verb like 'retrieve' but is still unambiguous 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool: 'DEFAULT for who is X.' It also names the alternative, notable_profile, and directs the agent to prefer this tool over it. This is direct routing guidance that leaves little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notable_profileNotable Person ProfileARead-onlyInspect
Bio-only profile JSON by slug (no life-in-days, similar, or birthday peers). Prefer notable_pack for “who is X / age in days / peers”. Example: taylor-swift. ($0.02)
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Person slug, e.g. albert-einstein |
Output Schema
| Name | Required | Description |
|---|---|---|
| bio | No | |
| name | Yes | |
| slug | Yes | |
| about | No | |
| handle | No | |
| sources | No | |
| timeline | No | |
| image_url | No | |
| birth_date | No | |
| death_date | No | |
| occupation | No | |
| profile_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it returns only bio data, excludes peer/life-in-days content, and costs $0.02. No contradiction with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is compact and front-loaded: core behavior first, exclusions and routing second, then a concrete example and pricing. Every clause earns its place with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with an output schema and clear sibling routing, the description is complete. It tells the agent what the tool returns, what it excludes, when to use a different tool, and even cost. No critical context for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single slug parameter with 100% coverage. The description reinforces that the lookup is by slug and provides a concrete example, but it does not add substantially new semantic information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: returning a bio-only profile JSON by slug. It explicitly differentiates itself from notable_pack by listing what it does not include (life-in-days, similar, birthday peers), so an agent can immediately understand its narrow purpose versus siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to prefer notable_pack for 'who is X / age in days / peers', giving a clear when-not-to-use condition and naming the alternative. The slug-based lookup and example 'taylor-swift' further clarify the intended invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notable_searchSearch Notable PeopleARead-onlyInspect
Search the public Dayze notable-people catalog by name, occupation, or slug. Use when you need to find a person before fetching a pack. Example slug: albert-einstein. ($0.01)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Number of matches returned. |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds extra behavioral context: the catalog is public, a cost of $0.01 is associated with the call, and the example slug illustrates accepted input format. This goes beyond the annotation set without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: one main sentence plus a use-case sentence and a short example/cost note. It front-loads the verb and resource, and every clause adds information. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema and annotations that cover the read-only, non-destructive nature, the description covers all necessary invocation context: what to search, when to use it, an example, and the cost. The anyOf schema's q/query alias confusion is not addressed, but the schema already documents it, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying that q accepts a name, occupation, or slug and provides a concrete example (albert-einstein), which the schema's 'Primary search query' does not convey. This extra semantic context justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb 'Search' and names the exact resource: the public Dayze notable-people catalog. It enumerates the search dimensions (name, occupation, slug), which differentiates it from sibling tools like notable_profile, notable_pack, and generic search. It is unmistakable what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: 'Use when you need to find a person before fetching a pack.' This gives the agent a clear trigger condition. It does not, however, state when not to use it or name alternative search tools, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_life_updatePropose Life UpdateBInspect
Propose assertion create/correct without committing (flagged; off by default). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | ||
| client_id | No | ||
| people_id | No | ||
| person_id | No | ||
| predicate | No | ||
| operations | No | ||
| request_id | No | ||
| source_text | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | No | |
| message | No | |
| proposal_id | No | |
| payload_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=false, destructiveHint=false, and openWorldHint=false. The description adds useful non-schema behavior: the operation does not commit, is flagged and off by default, costs $0.10, and requires an API key. No contradiction 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences and front-loads the core action before adding availability, cost, and auth details. It is compact and avoids repetition, though the phrasing is somewhat cryptic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, nested-object tool with zero schema description coverage, the description omits critical invocation context: what a proposal contains, how it relates to commit_life_update, and what the parameters mean. The output schema reduces the need to explain return values, but parameter guidance is essentially absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 9 parameters with 0% description coverage, so the description carries the full burden of explaining them. It provides no parameter-level meaning beyond the vague phrase 'assertion create/correct,' leaving parameters such as value, operations, predicate, source_text, and idempotency_key entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (propose assertion create/correct) and immediately distinguishes it from committing by saying 'without committing.' It implies the contrast with commit_life_update without naming the sibling, so it is clear but not fully differentiated from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without committing (flagged; off by default)' implies when the tool is relevant: when staging a proposal rather than finalizing one. However, it never explicitly names commit_life_update or states when to use this versus committing, so usage remains inferred rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_gmail_attachmentRead Gmail Attachment (read-only)ARead-onlyInspect
Download one Gmail attachment by message_id + attachment_id (from read_gmail_message.attachments). Returns utf-8 text for text/csv/vcf/vcard; binary types return filename/mime/size + a note (no base64 dump). Optional account. Read-only. Share tokens cannot call. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| account | No | ||
| message_id | Yes | ||
| attachment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| attachment | Yes | |
| message_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses non-obvious behavior beyond annotations: text formats return utf-8, binary types return metadata only with no base64 dump, share tokens are blocked, and there's a cost ($0.10). These are exactly the operational details annotations don't cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense, front-loaded single paragraph covering purpose, sourcing, output behavior, auth, and cost. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return format needn't be explained, yet the description still clarifies format-dependent behavior. Auth constraints, cost, and ID sourcing are all present, making it fully complete for a 4-param read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains message_id and attachment_id sourcing (from read_gmail_message.attachments), which is critical since the schema provides no descriptions. Optional account/email aren't clarified, but the core required parameters are well-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (download) plus resource (Gmail attachment) with exact identifying parameters. The reference to read_gmail_message.attachments explains where the IDs come from, distinguishing it from search_gmail and read_gmail_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit prerequisites: needs message_id + attachment_id from read_gmail_message.attachments. Names the auth conditions: share tokens cannot call, API key required. An agent can determine eligibility without trial-and-error.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_gmail_messageRead Gmail Message (read-only)ARead-onlyInspect
Read one Gmail message by id from search_gmail. Returns subject, from, date, snippet, plain-text body (truncated), and attachments[] metadata (attachment_id, filename, mime_type, size). Use read_gmail_attachment for text/csv/vcf contents. Optional account when multiple mailboxes. Read-only. Share tokens cannot call. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Alias for message_id | |
| No | Alias for account | ||
| account | No | Mailbox selector (email or connection id) | |
| message_id | Yes | Gmail message id from search_gmail |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/destructiveHint=false, so safety is covered. The description adds real behavioral context beyond that: body is truncated, attachment metadata shape, share-token restriction, and cost/auth ('$0.10; API key required'). Missing only things like rate limits or truncation size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then return shape, then the alternative-tool routing, then constraints. Dense but almost every clause earns its place; the parenthetical output list runs slightly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need no expansion, yet the description still summarizes them helpfully. Combined with annotations, cost/auth notes, and sibling routing, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds meaning: message_id comes 'from search_gmail' and account is an optional mailbox selector for multi-mailbox cases. The id/email aliases are handled by the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one Gmail message by id') plus the source of the id ('from search_gmail'). It explicitly differentiates from the sibling read_gmail_attachment, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative 'read_gmail_attachment for text/csv/vcf contents', explains when 'account' matters ('when multiple mailboxes'), and states a hard exclusion ('Share tokens cannot call'). Conditions for use and non-use are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_purchaseRecord PurchaseAInspect
Atomic expense + optional inventory item creation. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| name | Yes | ||
| amount | Yes | ||
| currency | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| expense_id | No | |
| transaction | No | Expense/income transaction row. |
| inventory_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the transactional guarantee ('Atomic'), the $0.10 cost, and the API key requirement, none of which are present in the annotations. It aligns with readOnlyHint=false by indicating a write effect and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the functional effect comes first, followed by cost and auth requirements in parentheses. Every part earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema reduces the burden of describing return values, and required parameters are visible in the schema. However, the agent still has to infer when to use this tool relative to siblings and receives no help understanding the optional parameters, leaving clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description does not explain what name, amount, date, or currency mean or how they map to the expense/inventory fields. The description fails to compensate for the schema's low parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation as an expense record with optional inventory item creation, and the word 'Atomic' signals a single combined effect. It helps distinguish from siblings like log_expense and add_inventory_item, though it does not explicitly use the word 'purchase' in the description body.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Optional inventory item creation' implies the tool should be used when both an expense and an inventory item are needed, but it does not explicitly name alternatives like log_expense or add_inventory_item. The usage context is implied rather than clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_saleRecord SaleAInspect
Mark inventory sold + record sale proceeds with gain/loss. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| sold_at | No | ||
| currency | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| inventory_id | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| expense_id | No | |
| inventory_id | No | |
| realized_gain_loss | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate non-read-only and non-destructive, so the description adds meaningful behavior: it mutates inventory state, records financial proceeds, computes gain/loss, and requires an API key at a $0.10 cost. It does not mention idempotency or what happens if the inventory is already sold, but those are partially covered by schema fields and the added context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences. Every phrase earns its place: the core action, the financial outcome, the cost, and the auth requirement. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating financial/inventory tool with six parameters, the description covers the essential action and operational cost but leaves ambiguity around optional parameters, currency defaults, and preconditions such as whether the inventory item must exist and be unsold. The presence of an output schema reduces the need to explain return values, but the missing parameter context prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, with amount, sold_at, currency, and inventory_id undocumented. The description clarifies amount as sale proceeds and inventory_id as the item to mark sold, but it does not explain currency format, sold_at meaning, or whether amount is gross proceeds. This is insufficient to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('record') with a clear resource ('sale') and states the core effects: marking inventory sold and recording sale proceeds with gain/loss. This distinguishes it from sibling tools like record_purchase and log_transaction without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Mark inventory sold' clearly establishes when to use this tool, and the cost/API-key note adds operational context. However, it does not explicitly state when not to use it or name alternatives such as record_purchase or log_transaction, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_person_aliasRemove Person AliasADestructiveInspect
Remove one alias from a CRM person. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| person_id | Yes | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| alias | No | |
| message | No | |
| removed | No | |
| change_id | No | |
| person_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and readOnlyHint=false, and the description aligns with those. It adds useful operational context beyond the annotations: the $0.05 cost and API key requirement, while clearly identifying the mutation target.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: 'Remove one alias from a CRM person' states the action and object immediately. The cost and auth details are appended in a short parenthetical without unnecessary prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive operation, the annotations, output schema, and description together cover safety, cost, and auth. The main missing piece is usage/alternative guidance and edge-case behavior, but the low complexity and structured metadata reduce the burden on the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 50% schema description coverage, only request_id and idempotency_key are documented in the schema. The description partially compensates by mapping 'alias' and 'CRM person' to the two required parameters, but it does not clarify expected formats or that the alias must already exist on the person.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove'), a specific resource ('alias'), and a clear scope ('one ... from a CRM person'). It is immediately distinguishable from sibling tools like add_person_alias, update_person_alias, and get_person_aliases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, such as inspecting aliases first with get_person_aliases or modifying them with update_person_alias. The intended usage must be inferred from the name and verb rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_trackerReset Streak TrackerARead-onlyInspect
MUTATES a sobriety/streak tracker for the authenticated user (sets current value to 0 and restarts the clock). Prefer tracker_id from get_trackers, or tracker_title fuzzy match. Optional reset_at (ISO) and note. Rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note stored in tracking history | |
| title | No | Alias of tracker_title | |
| reset_at | No | ISO datetime of the reset (default now) | |
| request_id | No | Client idempotency key (retries return original result). | |
| tracker_id | No | Event UUID of the tracker | |
| tracker_title | No | Title match when id unknown | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| error | No | |
| message | No | |
| reset_date | No | |
| reset_time | No | |
| tracker_id | No | |
| invalidates | No | |
| previous_days | No | |
| tracker_title | No | |
| life_state_rebuilt | No | |
| tracker_reset_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations claim readOnlyHint=true and destructiveHint=false, but the description explicitly says 'MUTATES' and 'sets current value to 0', which contradicts those annotations. The description is transparent about the mutation, but the contradiction with annotations is a serious issue. However, the description adds behavior context beyond annotations: rebuilds life_state, requires auth, share tokens cannot write, and cost ($0.10). I flag the contradiction and score low due to the conflict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with high information density. Key action and scope are front-loaded. Each piece adds value: purpose, selection criteria, optional parameters, side effects, auth requirements, and constraints. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a complex mutation: it explains side effects (rebuilds life_state), auth requirements, token restrictions, cost, and parameter usage. Despite zero required parameters, it provides all necessary context. The presence of an output schema covers return details, so the description doesn't need to explain that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents all parameters. The description adds value by clarifying the usage of tracker_id vs tracker_title ('prefer tracker_id from get_trackers, or tracker_title fuzzy match'), and mentions reset_at and note semantics. It also hints at idempotency via request_id. This goes beyond schema basics, though parameters are fully described in schema, so a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it mutates a sobriety/streak tracker by setting value to 0 and restarting the clock. This distinguishes it from sibling tools like get_trackers (read-only) and update_event (generic mutation), though it doesn't explicitly name siblings. The verb 'MUTATES' is explicit and the resource (tracker) is identified. It is concise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it tells the agent to prefer tracker_id from get_trackers or use tracker_title as a fallback. It also clarifies required authentication (API key or OAuth with scope context) and warns that share tokens cannot write. This directly aids selection and invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_clarificationResolve ClarificationBInspect
Link a clarification surface to an existing person. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| person_id | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| person_name | No | ||
| idempotency_key | No | Alias for request_id. | |
| clarification_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| resolved | No | |
| person_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds cost ($0.10) and authentication context (API key required), which is useful beyond the annotations. However, it does not disclose what happens to the clarification surface after linking, whether the operation is reversible, or how failures are handled, so behavioral transparency is only partially addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the core action front-loaded and the cost/auth caveat appended compactly. There is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is incomplete for a 5-parameter tool with low schema coverage. It misses guidance on parameter selection, clarification resolution semantics, and behavioral edge cases, leaving an agent under-informed for a reliable call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 40% schema description coverage, the description needed to compensate for the undocumented person_id, person_name, and clarification_id fields. It does not explain how those parameters relate or which identifier should be used to identify the existing person, leaving real ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Link') and a clear resource ('a clarification surface') with a target ('an existing person'), which makes the tool's job immediately identifiable. It also differentiates from sibling tools like dismiss_clarification and create_person by implying resolution through association rather than dismissal or creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. The description does not mention alternatives or conditions under which resolving via linking is preferred over dismissing a clarification or creating a person first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_personResolve ContactARead-onlyInspect
Resolve a nickname or surface name to a Dayze Contacts row via person_aliases → exact name → slug → unique substring. Returns avatar_url, photo_count, has_photos, and photos[{url,is_primary}] preview; use get_person_photos for full gallery. Notes omitted unless include_notes=true (redacted). Prefer this before money or relationship tools when the agent only has a nickname. Advertised name resolve_person is stable; tools/call also accepts resolve_contact. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nickname or display name to resolve | |
| query | No | Alias for name | |
| include_notes | No | Include redacted notes (default false) |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | No | |
| person | No | |
| aliases | No | |
| resolved | No | |
| candidates | No | |
| matched_via | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds substantial behavioral context: the resolution order, the limited preview nature of the response, notes being redacted unless include_notes=true, the $0.05 cost, API key requirement, and the stable/alternate tool name. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: purpose, resolution order, return shape, gallery alternative, notes behavior, usage preference, naming compatibility, cost, and auth requirement. It is front-loaded with the core purpose and remains structured and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema, annotations, and rich sibling context, the description is complete for an agent to decide when and how to invoke it. It covers the resolution algorithm, return preview, notes behavior, alternatives, cost, and API key requirement, leaving no critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by explaining that 'name' is a nickname or surface name, that the lookup follows a specific resolution sequence, and that notes are omitted/redacted unless include_notes=true. The query parameter is acknowledged as an alias for name, adding practical semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource: 'Resolve a nickname or surface name to a Dayze Contacts row' and even spells out the lookup chain (person_aliases → exact name → slug → unique substring). It clearly distinguishes itself from siblings like get_person_photos and get_person_aliases by stating exactly what it returns and what it is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Prefer this before money or relationship tools when the agent only has a nickname,' giving a direct when-to-use rule. It also names get_person_photos as the alternative for a full gallery, and the notes redaction behavior tells the agent when include_notes matters. This is clear usage guidance with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_placeResolve PlaceBRead-onlyInspect
Canonicalize a venue name via place aliases and fuzzy match. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| place | No | ||
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| place | No | Canonical place record. |
| query | Yes | |
| resolved | Yes | |
| candidates | No | |
| matched_via | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and non-destructive behavior. The description adds meaningful context beyond those annotations, including the API key requirement, a $0.10 cost, and the fuzzy-match mechanism. This helps an agent anticipate side conditions before invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one compact sentence that front-loads the core purpose and includes the most critical operational caveats (cost and API key). There is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and safety annotations, the description leaves a major gap: with three optional parameters and no parameter descriptions, an agent cannot confidently determine which input to provide. The description is too sparse to support correct invocation in all plausible cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the roles of 'name', 'place', or 'query'. Although 'venue name' hints that 'name' is likely the core input, it is unclear how the three parameters relate and when each should be supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Canonicalize a venue name via place aliases and fuzzy match.' This clearly conveys the operation, though it does not explicitly contrast with sibling tools such as resolve_person, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like get_places, resolve_person, or search. The only usage-related details are the API key requirement and cost, which are prerequisites rather than selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_cleanuprestore cleanupAInspect
Restore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | ||
| restore_id | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| changed | No | |
| expires_at | No | |
| preview_id | No | |
| restore_id | No | |
| server_time | No | |
| candidate_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: it discloses that intervening edits are refused and that repeats are no-ops, which is critical for an agent to understand idempotency and conflict handling. It also notes authentication requirements. There is no contradiction with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the action, followed by requirements and key behavioral notes. The 'Requires restore_id and request_id' sentence somewhat duplicates the schema, but overall the description is tight and free of unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool, the description covers essential semantics like idempotency, refusal of intervening edits, and authentication, and an output schema exists. However, it does not define what an 'archive or normalization receipt' is, and the lack of parameter semantics leaves gaps that could prevent correct invocation without external context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema description coverage, the description needed to explain what restore_id and request_id mean, but it merely repeats their names and required status. It does not clarify which ID corresponds to the archive/receipt versus the request, and idempotency_key is only explained in the schema, not the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Restore') and a specific resource ('archive or normalization receipt'), which differentiates it from sibling restore tools like restore_event and restore_expense. It is not a tautology condition, but the tool name 'cleanup' is left undefined, so some ambiguity remains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the resource type and states prerequisites ('Requires restore_id and request_id'), but it does not explicitly say when to use this tool versus alternatives. No when-not-to-use guidance or alternative tool names are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_eventrestore eventAInspect
Restore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | ||
| restore_id | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| changed | No | |
| expires_at | No | |
| preview_id | No | |
| restore_id | No | |
| server_time | No | |
| candidate_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses meaningful behavior: it refuses when edits have intervened, repeats are idempotent, it costs $0, and an API key is required. These details add value the annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: scope, required inputs, behavioral edge cases, and authorization/cost are all covered in three short sentences with no filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return-value details are not required. The description covers required inputs, key behavioral edge cases, and auth/cost context. The phrase 'archive or normalization receipt' could be clearer, but overall the agent has enough to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (33%), and the description only says that restore_id and request_id are required without explaining what each identifier means or how they relate. The idempotency_key is documented as an alias in the schema, but the two key parameters remain semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb and object ('Restore an archive or normalization receipt') and the title identifies the resource as event-related. It is clear about the action but does not explicitly differentiate restore_event from sibling tools like restore_expense, restore_trip, or restore_cleanup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states required parameters and important invocation constraints such as 'Refuses intervening edits; repeats are no-ops.' However, it gives no explicit when-to-use guidance or alternatives, leaving sibling selection mostly to inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_expenserestore expenseBInspect
Restore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | ||
| restore_id | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| changed | No | |
| expires_at | No | |
| preview_id | No | |
| restore_id | No | |
| server_time | No | |
| candidate_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so this is a write operation, but the description adds valuable behavior: 'Refuses intervening edits; repeats are no-ops.' This discloses idempotency and failure conditions. It also adds cost and authentication context ('$0; API key required'). No contradictions with annotations. The description goes beyond the structured fields and provides useful operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely efficient: three short sentences that front-load the purpose, then requirements, then behavioral details. No wasted words. It is structured with the most critical information first, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose, required parameters, key behaviors, and auth/cost. It lacks usage guidance relative to siblings and does not explain parameter semantics, but the output schema exists and would cover return values. For a tool that is part of a large family of restore_* operations, missing when-to-use guidance is a notable gap, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only idempotency_key has a description). The description merely repeats that restore_id and request_id are required, without explaining what they represent or how they relate to the restore operation. It does not clarify the meaning of 'restore_id' or 'request_id' or how they differ. With low schema coverage, the description should compensate, but it does not add substantive parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and object: 'Restore an archive or normalization receipt.' This clearly indicates what the tool does and distinguishes it from other restore_* tools that restore events or trips. It could be slightly more explicit about the expense context, but the tool name 'restore_expense' and the mention of 'receipt' make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its many restore_* siblings. It does not mention any conditions, prerequisites, or alternative tools. The statement 'Requires restore_id and request_id' is a parameter requirement, not usage context. Given the large sibling set (restore_cleanup, restore_event, restore_trip, etc.), this is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_triprestore tripBInspect
Restore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | ||
| restore_id | Yes | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | |
| changed | No | |
| expires_at | No | |
| preview_id | No | |
| restore_id | No | |
| server_time | No | |
| candidate_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses non-obvious behavior: it refuses intervening edits and treats repeats as no-ops, which goes beyond the annotations (readOnlyHint=false, destructiveHint=false). It also notes the API key requirement and cost. This adds meaningful context that the annotations do not provide, with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core purpose and required parameters. It avoids redundancy and wastes no words, though it packs multiple ideas into a short string.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description covers some essentials (requirements, idempotency, refusal behavior) but leaves ambiguities: what counts as an 'intervening edit'? What exactly does 'archive or normalization receipt' mean? It also fails to explain when to use this tool over sibling restore tools. These gaps make it only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (idempotency_key has a description), but the description merely lists that restore_id and request_id are required without explaining their semantics or format. It does not compensate for the low coverage, and it doesn't clarify how idempotency_key relates to request_id beyond the schema's alias note. The description adds almost no parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Restore') and targets 'an archive or normalization receipt', which is clear enough for a restore operation. However, it doesn't tie the purpose to the 'trip' resource implied by the name, and it doesn't differentiate from sibling restore tools like restore_event or restore_expense, so it's not fully distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as restore_cleanup, restore_event, or restore_expense. The description mentions 'Refuses intervening edits' and 'repeats are no-ops' but these are behavioral traits, not usage context. It doesn't explain the scenario that calls for this specific restore operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_people_duplicatesScore People DuplicatesARead-onlyInspect
Score likely CRM duplicate pairs before merge_people. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| person_id | No | Score against one person; omit for global scan. | |
| min_probability | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| candidates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations by mentioning the $0.05 cost and API key requirement, which are important for an agent deciding whether to invoke the tool. It does not contradict the read-only/destructive hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the core action and includes essential cost/auth details without padding. Every element earns its place, and the structure makes the tool's purpose immediately scannable. No redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for understanding the tool's role and the fact that it is a non-destructive, paid, API-key-gated scoring step. However, it leaves limit and min_probability unexplained, which is a real gap given the sparse schema coverage. The output schema and annotations soften the omission, but parameter behavior is still under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%; only person_id has a description. The tool description does not compensate by explaining limit or min_probability, leaving their semantics undocumented. The phrase 'score likely CRM duplicate pairs' adds no specific parameter meaning, so the description falls short on parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('score'), a clear resource ('likely CRM duplicate pairs'), and a sequencing relationship ('before merge_people'). This distinguishes it from merge_people and makes the tool's role immediately understandable. The title reinforces the same purpose without adding ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before merge_people' provides clear workflow context, indicating this tool is a pre-merge step. It does not explicitly name alternatives or say when not to use it, but the intended placement in the duplicate-handling flow is clear. This meets the 'clear context, no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSemantic Life SearchARead-onlyInspect
Search the authenticated user life graph. Deterministic routing first: food + relative dates (e.g. "what did I eat yesterday?"); timeline/current-context; money+person; who-is → resolve_person. Otherwise semantic/keyword search. Event hits include event_date and food_id when mirrored from Food Diary. Browser-history titles are excluded. Credential/secret spans are redacted. Requires OAuth or a supported scoped credential. ($0.15; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| intent | No | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and non-destructive, and the description goes further by disclosing deterministic routing, event-hit enrichment with event_date and food_id, exclusion of browser-history titles, redaction of credential/secret spans, auth requirements, cost, and API-key necessity. This is rich behavioral 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every clause earns its place: scope, routing, output hints, exclusions, redaction, auth, and cost are packed into five dense sentences. The core action is front-loaded before the conditional routing details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a broad search tool with an output schema, the description provides all necessary operational context: what it searches, how queries are routed, what fields event hits include, what is excluded/redacted, and what credentials are required. No important calling decision is left unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The context reports zero parameters and 100% schema description coverage, so the baseline is 4; nothing is left unclear. The description's example query supports the query semantics, and the schema itself already documents q, query, and limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search the authenticated user life graph.' It then details deterministic routing categories and a fallback, which clearly distinguishes this broad life-graph search from siblings like search_gmail, search_photos, and search_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers concrete routing guidance: food plus relative dates, timeline/current-context, money+person, and who-is, explicitly delegating who-is to resolve_person. It does not, however, explicitly state when to prefer targeted sibling search tools over this generic search, so it lacks formal when-not-to-use exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gmailSearch Gmail (read-only)ARead-onlyInspect
Search one of the authenticated user's connected Gmail inboxes (read-only). Reuses Integrations hub Gmail (service_connections provider=gmail). Optional account/email selects a mailbox when multiple are connected — call list_gmail_accounts first. Prefer Gmail operators: from:, subject:, is:unread, newer_than:7d, has:attachment. Returns id, subject, from, date, snippet only (no body). Follow up with read_gmail_message. Cannot send, archive, or delete. Never invent email contents. If Gmail is not connected, connect at /integrations. Requires API key or OAuth with scope context. Share tokens cannot call this tool. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Alias for query | |
| No | Alias for account | ||
| query | Yes | Gmail search query, e.g. "is:unread newer_than:7d", "from:airline subject:itinerary", "receipt newer_than:30d" | |
| account | No | Mailbox email, connection id, or Google subject (from list_gmail_accounts) | |
| max_results | No | Max messages to return (default 10, max 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| account | No | |
| messages | Yes | |
| result_size_estimate | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm the safe-read profile, and the description adds substantial context beyond them: the truncated return payload (id, subject, from, date, snippet — no body), the $0.10 cost, API-key requirement, and that share tokens are blocked. That is exactly the extra behavioral signal annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and scope, then routing, then constraints — each sentence carries information. It runs dense and repeats the read-only framing already in the title, but there is little waste and no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with an output schema and full annotation coverage, this is complete: it covers prerequisites, return shape, follow-up tool, hard limits, auth requirements, and cost. An agent needs nothing further to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the account/email parameter selects among multiple mailboxes and requires list_gmail_accounts, and it gives concrete Gmail operator syntax (from:, subject:, is:unread, newer_than:7d, has:attachment) that shapes how query should be written.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (search Gmail inboxes) with explicit scope: one connected inbox, read-only, reusing the Integrations hub Gmail connection. It clearly distinguishes itself from neighbors like read_gmail_message (follow-up), list_gmail_accounts (prerequisite), and the import_*_gmail siblings, which are message-pulling rather than search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when/when-not: call list_gmail_accounts first when multiple mailboxes exist, prefer Gmail operators, follow up with read_gmail_message for the body, and it cannot send/archive/delete. It even notes share tokens cannot call it and where to connect Gmail if absent — a full routing story.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_inventorySearch InventoryARead-onlyInspect
Search owned inventory by name/brand/model/notes. Returns photo_count, has_photos, cover_url; when empty, photo_hint explains upload_asset linkage. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | No | |
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, which is consistent with the description. The description adds valuable context beyond annotations: it mentions the cost ($0.10) and API key requirement, which are critical for the agent to know before invocation. However, it doesn't detail what happens if the query is empty or handle errors, but the openWorldHint=false indicates limited scope, making this adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose incl. fields, followed by return value summary and then the cost/auth note. Every sentence serves a purpose, no fluff. Minor deduction for lack of explicit structure to break out cost and auth, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema presentchers, the description doesn't need to explain returns, but it does touch on key return fields. However, the lack of parameter elaboration and alternative routing makes it less complete for a search tool that has nuances like 'owned inventory' vs other search scopes. Adequate for a simple search but missing edge cases like empty query behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, and the description does not elaborate on the 'query' parameter beyond what the name implies. With only one parameter, this is a significant gap—the agent gets no guidance on format, examples, or what constitutes a valid query. The description's mention of searching by fields gives some implicit meaning, but it's insufficient for a tool that relies heavily on the query parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function: searching owned inventory by specific fields (name, brand, model, notes). This not only states the verb and resource but also distinguishes it from siblings like 'get_inventory' which likely returns all inventory, and 'search' which is broader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching within owned inventory, but does not explicitly state when to use this over alternatives like 'get_inventory' or broader 'search'. The context of 'owned inventory' and the fields mentioned give clear context, but no explicit when-not or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_photosSearch PhotosBRead-onlyInspect
Search person photos and entity assets by query/metadata. Returns inline MCP image attachments. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No | ||
| query | No | ||
| place_id | No | ||
| person_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | No | |
| photos | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds genuinely useful behavioral context: it returns inline MCP image attachments, costs $0.10 per call, and requires an API key. This goes beyond what annotations provide. It does not cover limits or pagination, but the added cost/auth/return-format info is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise, information-dense segments: the main behavior and a parenthetical with cost/auth. Every word earns its place, and the core purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description leaves too much unresolved for a 5-parameter, all-optional search tool: parameter meanings are absent, usage guidance is absent, and no pagination or filtering behavior is described. The cost and return-format notes help, but they do not make the definition complete enough for an agent to confidently construct a correct search call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only says searchable 'by query/metadata.' It does not explain what 'to', 'from', 'place_id', or 'person_ids' mean, how they combine, or which are most useful. With zero parameter documentation in the schema, the description should carry much more semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search person photos and entity assets by query/metadata.' This is clear and distinguishes it from generic search tools like 'search' or 'search_gmail'. However, it does not explicitly differentiate it from photo-specific siblings like 'get_person_photos', 'get_photos_for_event', or 'get_photos_for_place', so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus the many photo-related alternatives. It does not mention e.g. 'use get_person_photos when you already have a person_id' or 'use get_photos_for_place for a specific place.' The only implied usage is via 'query/metadata,' which is not enough to route the agent correctly among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_transactionsSearch TransactionsARead-onlyInspect
Keyword search over merchant/description/category, or exact tag query (project:/ext:/rail:). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No | ||
| query | No | ||
| cursor | No | Continue the same immutable one-hour snapshot; other filters remain frozen. | |
| project | No | ||
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | No | |
| transactions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds value by disclosing the cost ($0.10) and API key requirement, and by specifying the tag query syntax (project:/ext:/rail:). These go beyond annotations, though it does not mention pagination or result limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with a parenthetical for cost/requirements. It front-loads the core purpose and keeps all information essential, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters and low schema coverage, the description covers the main search modes but omits explanations for several parameters (limit, project, include_archived) and does not mention pagination behavior. An output schema exists, so return format is not required, but the description is not fully complete for an agent to use all parameters correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (only cursor is described). The description adds meaning for 'query' (keyword search over fields) and 'tag' (exact tag query with prefixes), but leaves 'limit', 'project', 'include_archived', and 'cursor' unexplained. It partially compensates for low coverage but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('keyword search' and 'exact tag query') and the resource (transactions), specifying the fields searched (merchant/description/category). It is distinct from sibling tools like get_transactions by focusing on search semantics, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for searching transactions rather than listing them, but does not explicitly contrast with get_transactions or other search tools. It mentions prerequisites (API key, cost) which help usage decisions, but no when-to-use vs when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_primary_person_nameSet Primary Person NameAInspect
Rename a CRM contact’s canonical name and refresh slug. By default preserves the old name as a former_name alias. Prefer this over create+merge for spelling fixes. Dayze is the context layer — bounded mutation only. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| person_id | Yes | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. | |
| preserve_old_name_as_alias | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| person | No | CRM person record. |
| message | No | |
| change_id | No | |
| previous_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description adds real behavior: the name change 'refresh[es] slug' and 'by default preserves the old name as a former_name alias.' It also discloses operational constraints, '$0.10; API key required,' and classifies the mutation as 'bounded.' No conflict 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description wastes no words: purpose, default behavior, and alternative preference are packed into four short sentences. The most important scoping information is front-loaded, with cost/auth appended as a parenthetical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation with an output schema and annotations, the description covers purpose, side effects, alternative workflows, default behavior, auth, and cost. Nothing required to invoke it correctly is missing; the output schema can explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, with descriptions only for request_id/idempotency_key. The description compensates for the main optional flag by explaining the default for preserve_old_name_as_alias, and it clarifies that the supplied name is the new canonical name. It leaves person_id and request_id semantics implicit, but those are largely inferable from tool name and schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and target: 'Rename a CRM contact’s canonical name and refresh slug,' which is clearly distinct from adding an alias or merging people. It also contrasts with the create+merge workflow, making the tool's specific job unambiguous among siblings like add_person_alias, update_person, and merge_people.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit condition: 'Prefer this over create+merge for spelling fixes,' which tells an agent when this tool is the right choice. The default-preservation behavior also signals that rename is the intended lightweight operation rather than a destructive merge. This is sufficient routing guidance given the surrounding sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_people_cleanupStart People CleanupCInspect
Server-side read-only cleanup audit. Returns a review queue; never automatically merges contacts. Use normalize_people_preview/apply for reversible normalization. ($0.15; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| checks | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. | |
| auto_merge_threshold | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| message | No | |
| cleanup_id | No | |
| auto_merged_count | No | |
| items_needing_approval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims 'read-only' while the annotations explicitly set readOnlyHint to false, a direct contradiction. It does add useful context with 'never automatically merges contacts,' but the contradiction undermines the agent's trust in the stated safety model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the core purpose in the first sentence, then adds the key safety guarantee and the sibling alternative. The cost and API-key note are useful operational details with little wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is unnecessary, but the description leaves major gaps: two core parameters are undocumented and unexplained, there is no guidance for choosing between this and several cleanup/audit siblings, and the read-only claim conflicts with the annotation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents only request_id and idempotency_key; checks and auto_merge_threshold have no description. The tool description adds no parameter semantics at all, and the unexplained auto_merge_threshold is especially confusing given the claim that the tool never auto-merges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Server-side read-only cleanup audit. Returns a review queue.' It also distinguishes itself from normalize_people_preview/apply by explicitly saying it never auto-merges. However, it does not differentiate itself from similarly named sibling tools like cleanup_preview, audit_people, or get_people_cleanup_result.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one explicit routing instruction: use normalize_people_preview/apply for reversible normalization, implying this tool is for non-reversible audit/review. But it does not say when to prefer this over cleanup_preview, audit_people, or merge_people, nor does it give a when-not-to-use condition beyond normalization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_contact_changeUndo Contact ChangeAInspect
Reverse a reversible contact_mutations row (rename, alias, identity, classify, link). For merges, pass restore_id as change_id within 30 days. Restore rejects later edits rather than overwriting them. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| change_id | Yes | ||
| request_id | No | Client idempotency key (retries return original result). | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| undone | No | |
| message | No | |
| change_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses meaningful behavior: reversibility is limited to certain change types, merges have a 30-day limit, and later edits cause rejection rather than overwrite. It also surfaces cost and authentication requirements. This adds significant operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no filler. The core action is front-loaded, followed by the most important special case and safety behavior. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema is present, the description need not detail return values. It covers scope, constraints, success-relevant behavior (rejection vs overwrite), cost, and auth. This is sufficient for an agent to call and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema leaves change_id undocumented, but the description explains its role and provides a special-case mapping for merges. Since request_id and idempotency_key already have schema descriptions, the description compensates well for the main gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action—'Reverse a reversible contact_mutations row'—and enumerates the covered operations (rename, alias, identity, classify, link). This clearly distinguishes it from restore_* tools for events, expenses, trips, and cleanup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage context: how to handle merges (pass restore_id as change_id), the 30-day window, and the rejection behavior for later edits. It doesn't explicitly name alternatives or say when not to use it, but the scope and constraints are clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlink_peopleUnlink PeopleBDestructiveInspect
Remove a person↔person graph edge. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| person_id | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| connection_id | No | ||
| idempotency_key | No | Alias for request_id. | |
| other_person_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| unlinked | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal destructive/write behavior, and the description adds useful context: the edge is removed rather than the people themselves, an API key is required, and the operation costs $0.10. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with no filler; the action is front-loaded and the pricing/auth detail is compactly appended in parentheses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, paid tool with zero required parameters, the description leaves critical ambiguity about how to identify the graph edge and which parameters are needed. The output schema helps, but it cannot compensate for the missing usage and parameter-selection guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, and person_id, connection_id, and other_person_id are undocumented. The description's 'person↔person' phrasing only weakly implies the two person IDs and does not clarify how connection_id relates to them or whether both IDs are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the verb and resource: 'Remove a person↔person graph edge.' It distinguishes the tool's core action from nearby tools like link_people without explicitly naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus link_people, merge_people, or link_entities. The agent must infer the inverse relationship from sibling tool names, which is not reliable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_assetUpdate AssetAInspect
Patch role, metadata, description, or parent_asset_id (e.g. mark as processed). ($0.08; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | original | cover | thumbnail | … | |
| asset_id | Yes | ||
| filename | No | ||
| metadata | No | ||
| asset_type | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| description | No | ||
| idempotency_key | No | Alias for request_id. | |
| parent_asset_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | No | |
| message | No | |
| updated | No | |
| asset_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations identify only non-readOnly (mutation allowed) and non-destructive; the description adds that this is a partial 'Patch' (not full replace/delete), that the call costs $0.08, and that an API key is required. It doesn't mention idempotency or merge/replace behavior, but the schema already documents request_id/idempotency_key, so the added auth/cost/partial-update context earns credit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence front-loads the action and target fields, then appends cost and authentication requirements. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, a nested metadata object, and low schema coverage, the description leaves too much implicit: only asset_id is required, but several optional fields have no guidance and no usage condition is given. It is adequate for a simple role update but incomplete for correct general invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33%, so the description needed to compensate, but it merely lists four fields (role, metadata, description, parent_asset_id) without explaining semantics for metadata, parent_asset_id, filename, asset_type, or asset_id. It does add one useful clue ('mark as processed' for role), but that is not enough across 9 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Patch') with a clear resource (asset) and enumerates the updatable fields (role, metadata, description, parent_asset_id). This makes it distinct from the many sibling update_* tools, whose resources are named in their titles; the asset-specific scope is obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'e.g. mark as processed' example implies a common use case, but the description never states when to choose update_asset over siblings like upload_asset, attach_asset, or archive_asset, nor when not to use it. Usage must be inferred from the field list 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_current_locationUpdate Current LocationAInspect
MUTATES where the user is now: profiles.location + polaris current_city/country (same as in-app Dayze chat). Pass location ("The Madeira, Singapore") and/or city+country; optional place/venue + lat/lon records a fresh location_visits check-in so get_location_context returns is_current. set_home defaults true; check_in defaults true when place or coordinates are set. Does not invent GPS when omitted. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| place | No | Venue / residence name (e.g. The Madeira) | |
| venue | No | Alias for place | |
| address | No | ||
| country | No | ||
| check_in | No | Write a location_visits row when place or coordinates are set (default true in that case) | |
| latitude | No | ||
| location | No | Freeform “City, Country” or “Venue, City, Country” | |
| set_home | No | Also write profiles.location / home_location (default true) | |
| longitude | No | ||
| request_id | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| place | No | |
| context | No | Fresh get_location_context after write. |
| message | No | |
| updated | No | |
| check_in | No | |
| location | No | |
| set_home | No | |
| visit_id | No | |
| current_city | No | |
| current_country | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare a non-read-only write; the description goes well beyond by disclosing the exact persistent effects (profiles.location + polaris fields), the location_visits row written, that get_location_context will then return is_current, the defaults for set_home and check_in, the fact that GPS is not invented, plus cost ($0.10) and API-key requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the mutation intent and dense but relevant clauses; the conditional defaults and the 'does not invent GPS' caveat are placed near the params they govern. Slightly long, but nearly every clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers mutation semantics, defaults, and preconditions. Completeness is strong for a 12-param tool, though idempotency/request_id parameters are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 42% schema coverage, the description compensates meaningfully: it gives a format example for location ('The Madeira, Singapore'), clarifies city+country usage, and explains place/venue and the lat/lon trigger for check-in along with set_home/check_in defaults. Minor params (address, request_id, idempotency_key) remain unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (MUTATES) and resource (where the user is now), naming the exact fields touched (profiles.location, polaris current_city/country). It distinguishes itself from the many place/location siblings by tying the write to location_visits and get_location_context's is_current, so an agent can differentiate it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear invocation context: pass location and/or city+country, plus optional place/venue+lat/lon to record a check-in. It explains default behavior (set_home, check_in) so the agent knows what happens when omitted. It stops short of explicitly naming alternative tools or when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_eventUpdate Event (calendar patch)AInspect
MUTATES one existing calendar event the authenticated user owns. Required: event_id (UUID). Optional patch (same fields as log_event): title, date / event_date, time / event_time, end_date, end_time, location, description, category, external_url, people / with / person_ids. Unknown or other-user event_id returns an error and does not create a row. For food-diary meals, prefer update_food (it syncs the mirrored event). Rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Alias for event_date. | |
| time | No | Alias for event_time. | |
| with | No | Alias for people. | |
| title | No | Updated title (replaces). Cannot be empty. | |
| people | No | People names or person UUIDs to add (event_people role=with). Does not remove existing tags. | |
| category | No | e.g. funeral, family, work, travel. Stored as events.category and event_type. | |
| end_date | No | Optional end date YYYY-MM-DD (all-day multi-day). | |
| end_time | No | Optional end time (same formats as event_time). | |
| event_id | Yes | UUID of a calendar event the authenticated user owns | |
| location | No | Empty or null clears | |
| event_date | No | Start date YYYY-MM-DD, YYYY-MM, or YYYY. Alias: date. | |
| event_time | No | Start time: 8pm, 20:00, or 20:00:00. Empty or null clears. Alias: time. | |
| person_ids | No | Owned person UUIDs to tag (user-scoped). | |
| request_id | No | Client idempotency key (retries return original result). | |
| description | No | Empty or null clears | |
| person_name | No | ||
| external_url | No | ||
| people_names | No | ||
| date_precision | No | Soft date precision stored in metadata. | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| event | Yes | A Dayze calendar event record. |
| changed | Yes | Changed fields with before and after values. |
| people_tagged | Yes | |
| unresolved_people | Yes | |
| life_state_rebuilt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare non-readOnly, non-destructive. The description adds critical behavior the agent cannot infer: it errors instead of upserting/creating a row, it rebuilds life_state as a side effect, it requires API key or OAuth scope, share tokens are rejected, and it costs $0.10.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the mutation verb and required param, then layers patch fields, error semantics, side effects, and auth/cost. Field enumeration is long but information-dense; only the field list borders on restating the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 20-param mutation tool with an output schema (so return values need no explanation), the description still covers purpose, required param, error behavior, side effects, auth scopes, cost, and the sibling alternative. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 85%, and the schema itself documents the aliases, clearing semantics ('empty or null clears'), and formats. The description mostly re-lists those same field names ('title, date / event_date, time / event_time...'), adding modest framing ('same fields as log_event') but no syntax or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and scope ('MUTATES one existing calendar event the authenticated user owns'), which cleanly separates it from log_event (create), delete_event (remove), and update_food (meal sync). The required event_id is named up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes food-diary meals to update_food and states the failure condition for unknown or other-user event_id. Doesn't state a when-to-use contrast against log_event or commit_life_update, but the alternative routing plus the error semantics cover the main selection decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_expenseUpdate ExpenseCInspect
PATCH an expense row. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD expense_date | |
| tags | No | ||
| notes | No | ||
| amount | No | ||
| source | No | Alias of payment_method | |
| project | No | Venture label → project:{slug} tag | |
| category | No | ||
| currency | No | ||
| merchant | No | ||
| expense_id | Yes | ||
| request_id | No | Client idempotency key (retries return original result). | |
| description | No | ||
| external_id | No | Optional; merges ext:{source}:{id} into tags | |
| payment_method | No | e.g. venmo, cash, card | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| changed | No | |
| expense | No | Expense/income transaction row. |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-destructive and not read-only. The description adds the cost ($0.10) and auth requirement (API key), which are useful, but does not explain merge semantics implied by the schema (external_id merging into tags, source as alias of payment_method), whether unspecified fields are preserved, or idempotency behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse clauses front-load the action and immediately state cost and auth. Size is appropriate; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation tool with an output schema present, the description omits partial-update semantics, alias handling, and merge behavior that would prevent incorrect calls. It leaves consequential gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 47%, so the description must compensate and fails to. It does not explain that only expense_id is required and all other fields are optional partial updates, nor clarify alias relationships documented only inside the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (PATCH) and resource (expense row), which distinguishes it from log_expense/get_expenses. However, it does not differentiate from a specific alternative edit path beyond the verb choice, and the sibling set has several update_* tools without overlap here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or exclusions are present. The agent receives no signal about when to choose update_expense versus re-logging with log_expense, or whether partial updates are preferred over full replacement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_foodUpdate Food (diary patch)AInspect
MUTATES one existing Food Diary row the authenticated user owns. Required: food_id (UUID). Optional patch (same fields as log_food): what, kind, place, merchant, notes, append_notes (concat), consumed_at / meal_period (profile TZ civil wall-clock), amount, currency, paid_by / payment_method, with / people_names / person_ids. Example: add hot tea onto an existing Salmon Bento → update_food({ food_id, what: "Salmon Bento + hot tea" }). Unknown or other-user food_id returns an error and does not create a row. Syncs the mirrored calendar event and rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| what | No | Full updated dish/drink text (replaces, does not append). Example: Salmon Bento + hot tea | |
| with | No | Companion names, aliases, or ids to add (does not remove existing tags) | |
| notes | No | Replaces notes. Empty or null clears | |
| place | No | Venue or location. Empty or null clears | |
| amount | No | Price if mentioned | |
| food_id | Yes | UUID of a food diary row the authenticated user owns | |
| paid_by | No | Who paid (name or alias) | |
| currency | No | ISO currency, e.g. SGD | |
| merchant | No | Restaurant, stall, or shop. Empty or null clears | |
| person_ids | No | Owned person UUIDs to tag (user-scoped) | |
| request_id | No | Client idempotency key (retries return original result). | |
| consumed_at | No | ISO 8601 datetime; wins over meal_period | |
| meal_period | No | Spoken period when consumed_at is omitted, e.g. "late lunch" | |
| append_notes | No | Append text to existing notes (newline-separated) | |
| people_names | No | Alias for with | |
| payment_method | No | Alias of paid_by for expense-style agents | |
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| changed | Yes | Changed fields with before and after values. |
| food_id | Yes | |
| event_id | Yes | |
| food_log | Yes | Updated Food Diary row. |
| people_tagged | Yes | |
| unresolved_people | Yes | |
| life_state_rebuilt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint:false and destructiveHint:false, but the description adds significant behavioral detail beyond them: error handling for unknown/other-user food_id ('returns an error and does not create a row'), side effects ('Syncs the mirrored calendar event and rebuilds life_state'), authentication requirements ('Requires API key or OAuth with scope context. Share tokens cannot write'), and pricing/cost ('$0.10; API key required'). These are not available in annotations and are crucial for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, front-loaded with 'MUTATES' and the required parameter. Every sentence contributes useful information (error behavior, side effects, auth, cost). While it is long, it doesn't waste words; the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high schema coverage (94%), an existing output schema, and a complex tool (18 parameters), the description covers the key operational aspects: the mutation intent, required parameter, error/scoping behavior, side effects, auth and cost. It doesn't list every optional field, but that is already handled by the schema; the description adds the critical contextual details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 94%, so the schema already documents most parameters. The description still adds value by clarifying semantic nuances: 'append_notes (concat)' indicates concatenation behavior, 'consumed_at / meal_period (profile TZ civil wall-clock)' specifies timezone handling, and the example ('add hot tea onto an existing Salmon Bento') illustrates how to use the patch. This goes beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact verb ('MUTATES'), the resource ('one existing Food Diary row'), and the ownership condition ('the authenticated user owns'). It differentiates from siblings by referencing 'same fields as log_food' and explicitly stating it 'does not create a row', which separates it from log_food (creation) and delete_food (deletion).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage for updating existing entries (vs. creating with log_food or deleting with delete_food) through the phrase 'same fields as log_food' and the example of 'update_food' on an existing row. It also clarifies that unknown or other-user food_id returns an error and does not create a row, which indirectly tells the agent when not to use it. However, it does not explicitly name alternative tools for creation or deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_inventory_itemUpdate Inventory ItemBInspect
PATCH semantics — unspecified fields untouched. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | What the user naturally calls the item. | |
| tags | No | Replace tags array (sanitized against category mismatches). | |
| brand | No | ||
| model | No | ||
| notes | No | ||
| status | No | ||
| subtype | No | Specific subtype (sweatshirt, jacket, guitar). Alias: item_type. | |
| category | No | Broad type: clothing, instruments, electronics, … | |
| location | No | ||
| condition | No | ||
| item_type | No | Alias for subtype. | |
| request_id | No | Client idempotency key (retries return original result). | |
| inventory_id | Yes | ||
| serial_number | No | ||
| purchase_price | No | ||
| estimated_value | No | ||
| idempotency_key | No | Alias for request_id. | |
| reference_number | No | ||
| subtype_confidence | No | 0–1 confidence when subtype is uncertain (agent_inferred). |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | Inventory item record. |
| changed | No | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate the operation is not read-only and not destructive, leaving the description to carry the burden. The description adds meaningful behavior: PATCH semantics, cost per call, and the API-key requirement. It omits edge-case behaviors like not-found responses, but the main mutation risk is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence plus a parenthetical cost/auth note. Every word delivers value, and the key PATCH semantics are stated first. For what it attempts, it is optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 19-parameter mutation tool with low schema coverage, the description is insufficient. It lacks when-to-use guidance, required-parameter emphasis, alias handling, idempotency behavior, and error cases. The output-schema presence covers return values, but the input-side and usage context remain incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 42%, so the description needed to compensate for the many undocumented parameters. It does not: no parameter is mentioned, no aliases such as subtype/item_type or request_id/idempotency_key are explained, and the required inventory_id is not called out. The schema itself provides whatever little parameter meaning exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys PATCH semantics, which implies partial update of an inventory item, and the tool name supplies the resource. It clearly differentiates from add_inventory_item or archive_inventory_item by its update nature, though it does not explicitly name the resource or contrast siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'unspecified fields untouched' provides an important usage contract: this tool is for partial updates rather than a full overwrite. However, there is no explicit guidance about when to choose it over add_inventory_item or other update tools, and no prerequisites such as requiring an existing item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_notableUpdate Notable (catalog write)AInspect
MUTATES public notable_people. Superuser only. Patch by slug (bio, about, occupation, birth_place, birth_date, net_worth, residence, before_fame, trivia, family_life, zodiac, flag). Rejects unknown fields. No create/delete. Stamps last_updated_via=mcp. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| bio | No | ||
| flag | No | ||
| slug | Yes | Notable person slug (e.g. taylor-swift) | |
| about | No | ||
| trivia | No | ||
| zodiac | No | ||
| net_worth | No | ||
| residence | No | ||
| birth_date | No | YYYY, YYYY-MM, or YYYY-MM-DD. Null/empty clears | |
| occupation | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| before_fame | No | ||
| birth_place | No | ||
| family_life | No | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| person | Yes | Updated notable catalog row (name, slug). |
| changed | Yes | Changed fields with before and after values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, it discloses that the operation mutates data, requires superuser privileges and an API key, rejects unknown fields, forbids create/delete, stamps last_updated_via=mcp, and costs $0.10. This gives an agent a clear behavioral and side-effect profile without contradicting 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-ordered: mutation, scope, auth, operation type, allowed fields, validation behavior, side effect, and cost. Every clause adds decision-relevant information, and the core purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's 15 parameters and existing output schema, the description covers the critical invocation details: superuser-only access, API key requirement, slug-based patching, allowed field set, unknown-field rejection, no create/delete, and the last_updated_via stamp. An agent has enough context to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 27%, the description compensates by enumerating the exact patchable fields (bio, about, occupation, birth_place, birth_date, etc.) and by stating that unknown fields are rejected. It does not explain every field's meaning, but most names are self-descriptive, and schema descriptions cover birth_date and idempotency keys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'MUTATES public notable_people', a specific verb and resource, then clarifies the operation is a patch by slug. It also excludes create/delete, which distinguishes this write tool from read-only notable siblings and from creation/deletion tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for patching an existing notable person by slug and restricts to superusers, but it does not explicitly name alternatives or say when to choose this tool over notable_search, notable_profile, or create_person. 'No create/delete' is an exclusion, yet no positive routing guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_people_linkUpdate People LinkAInspect
Patch an existing person↔person graph edge (type/context/source/confidence). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| source | No | ||
| person_id | No | ||
| confidence | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| connection_id | No | ||
| idempotency_key | No | Alias for request_id. | |
| other_person_id | No | ||
| relationship_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| updated | No | |
| connection | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false. The description adds cost and API-key requirements but does not discuss side effects, validation behavior, idempotency, or what happens to the existing edge. It is minimally transparent but 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence and includes cost and API-key information efficiently. The primary function is front-loaded and nothing appears redundant or verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 optional parameters, no required fields, low schema coverage, and a graph-edge update operation, the description is too sparse to safely invoke the tool. It does not state which identifiers are needed to target an edge, how parameters combine, or what the response represents. The output schema exists, but that does not solve parameter-selection ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 22%, but the description does not compensate. It lists 'type/context/source/confidence' though the schema does not include a 'context' parameter and uses 'relationship_type' instead. It also fails to explain how to identify the edge via person_ids or connection_id, leaving most of the 9 undocumented parameters unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Patch') and a specific resource ('an existing person↔person graph edge'), and lists the key fields affected: type/context/source/confidence. The word 'existing' distinguishes it from create/delete edge tools like link_people or unlink_people in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through 'Patch an existing...' and gives operational context via 'API key required' and cost, but it does not explicitly state when to use this tool instead of siblings such as link_people, unlink_people, or get_people_links. There is no when-not guidance or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_personUpdate Contact (CRM write)AInspect
MUTATES Dayze Contacts. Patch one existing contact the user owns (person_id UUID required). Optional fields: name (renames + refreshes slug), is_favorite, tier (vip|normal|low), relationship, notes (replaces stored notes — read first if you need to append), birthday (YYYY|YYYY-MM|YYYY-MM-DD|MM-DD|--MM-DD or null to clear; MM-DD stores month_day precision). Rejects unknown fields. Does not create or delete contacts. Rebuilds life_state so the next get_context_pack inner_circle is fresh. Advertised name update_person is stable; tools/call also accepts update_contact. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Rename contact (also refreshes URL slug). Prefer this over create+merge for spelling fixes | |
| tier | No | Relationship priority. VIP stays in inner_circle even when not favorited | |
| notes | No | Replaces people.notes (does not append). Empty or null clears | |
| birthday | No | YYYY, YYYY-MM, YYYY-MM-DD, or MM-DD / --MM-DD (year unknown). Null/empty clears | |
| person_id | Yes | UUID of a person the authenticated user owns | |
| request_id | No | Client idempotency key (retries return original result). | |
| is_favorite | No | Favorite flag. Favorites (and VIP) appear in get_context_pack inner_circle | |
| relationship | No | Relationship label (friend, sister, …). Empty or null clears | |
| idempotency_key | No | Alias for request_id. | |
| preserve_old_name_as_alias | No | When renaming, keep the previous name as a former_name alias (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| person | Yes | A Dayze person or contact record. |
| changed | Yes | Changed fields with before and after values. |
| life_state_rebuilt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate a non-read-only, non-open-world, non-destructive operation. The description goes far beyond this by documenting side effects (slug refresh, life_state rebuild), replacement semantics for notes, birthday precision behavior, auth requirements, and pricing. No contradiction 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but every sentence carries operational value, from mutation warning to auth and cost. Front-loaded with the most important constraint and organized from action to fields to side effects to requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation with an output schema, the description covers ownership, required field, all parameter semantics, side effects, idempotency, auth scopes, and cost. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3, but the description adds essential behavior: name 'renames + refreshes slug,' notes 'replaces stored notes,' birthday format details and null-clearing, and tier/favorite effects on inner_circle. It also clarifies idempotency via request_id, adding meaning beyond the schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'MUTATES Dayze Contacts' and specifies 'Patch one existing contact the user owns,' naming both the action and the resource. It explicitly states what it does not do ('Does not create or delete contacts'), distinguishing it from sibling creation/deletion tools without needing their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the tool is for patching an existing owned contact and includes explicit exclusions: no creation/deletion, rejects unknown fields, and share tokens cannot write. This gives an agent clear conditions for selecting it over create_person or delete_event, even though those siblings are not named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_person_aliasUpdate Person AliasBInspect
Update alias_kind/source/display for an existing alias. ($0.05; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | ||
| source | No | ||
| person_id | Yes | ||
| alias_kind | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| alias_display | No | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| alias | No | |
| message | No | |
| change_id | No | |
| person_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the description is not required to restate those. The description adds the cost ($0.05) and API key requirement, which are useful behavioral context. However, it does not disclose whether the update is partial or full replacement, whether missing fields are cleared, or what happens if the alias does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action and fields, with the cost and auth requirement appended compactly. It is appropriately sized for a simple update tool, though it could add a brief note about idempotency without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered elsewhere. The description covers the core action, cost, and auth, but it lacks guidance on idempotency keys (request_id/idempotency_key), partial-update semantics, and error behavior for nonexistent aliases. For a mutation tool with 7 parameters and low schema coverage, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29%, so the description must compensate for undocumented parameters. It names three of the seven parameters (alias_kind, source, display) but does not explain the semantics of person_id, alias, request_id, idempotency_key, or alias_display. The description adds some meaning for the three named fields but leaves the rest to the schema, which is mostly undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and resource ('existing alias') and names the fields being updated (alias_kind/source/display). It is clear enough to distinguish from add_person_alias and remove_person_alias, though it does not explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating an existing alias, and the sibling list includes add_person_alias and remove_person_alias, which an agent could infer as alternatives. However, there is no explicit when-to-use guidance, no mention that the alias must already exist, and no exclusion of when to use add/remove instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_person_identityUpdate Person IdentityAInspect
Patch identity fields (legal/preferred name, pronouns, social handles, user_relationships[]). Never infer sensitive identity from appearance. Confirmed user_relationships are preserved unless force=true. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| aliases | No | ||
| website | No | ||
| pronouns | No | ||
| person_id | Yes | ||
| legal_name | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| preferred_name | No | ||
| social_handles | No | ||
| idempotency_key | No | Alias for request_id. | |
| user_relationships | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| person | No | |
| changed | No | |
| message | No | |
| change_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false, leaving room for the description to add value. The description discloses that confirmed user_relationships are preserved unless force=true, which is a critical non-obvious behavior. It also adds the policy constraint 'Never infer sensitive identity from appearance' and notes the $0.10 cost plus API key requirement. These go well beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the core purpose and field list front-loaded. The additional behavioral and cost/auth notes are appended at the end without redundancy. Every sentence earns its place, and there is zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, nested objects, an output schema), the description covers the key behavioral nuance about preserving user_relationships and the cost/auth requirements. However, it does not explain the shape of nested objects or provide any guidance on how to construct values for aliases, social_handles, or user_relationships. It also does not explicitly set expectations about the output, though an output schema exists. While not wholly inadequate, it leaves gaps for an agent that needs to build valid payloads.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 18% (only request_id and idempotency_key have descriptions). The description lists the field groups (legal/preferred name, pronouns, social handles, user_relationships) but does not explain the structure of nested objects like aliases, social_handles, or user_relationships beyond their names. It does clarify the semantics of the force parameter within the preserve/force=true note, which partially compensates, but with 11 parameters and heavy nesting, the description should provide more detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Patch identity fields' and then enumerates exactly what those fields are: legal/preferred name, pronouns, social handles, user_relationships[]. This is a specific verb+resource pairing that immediately distinguishes it from sibling tools like update_person or update_person_alias. The mention of 'identity fields' makes the scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the 'identity fields' phrasing, which suggests it is for identity-related updates rather than general person edits, but no explicit guidance is given about when to prefer this tool over update_person or update_person_alias. It also does not state when not to use it or mention alternatives. The behavioral note about force=true is a rule, not a usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_placeUpdate Place CardBInspect
Patch a saved place card by place_id / business_contact_id. Unspecified fields stay unchanged (hours, affordability, address, notes, …). ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| area | No | ||
| city | No | ||
| name | No | ||
| tags | No | ||
| hours | No | ||
| notes | No | ||
| phone | No | ||
| address | No | ||
| country | No | ||
| website | No | ||
| category | No | ||
| latitude | No | ||
| place_id | No | ||
| longitude | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| description | No | ||
| price_level | No | ||
| hours_source | No | ||
| affordability | No | ||
| opening_hours | No | ||
| phone_numbers | No | ||
| idempotency_key | No | Alias for request_id. | |
| business_contact_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| place | No | Saved place card. |
| message | No | |
| updated | No | |
| place_id | No | |
| business_contact_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (not read-only, not destructive, closed-world), and the description adds genuinely non-redundant context: partial-update semantics ('unspecified fields stay unchanged'), a per-call cost ($0.10), and an API-key requirement. It stops short of describing failure behavior for an unknown place_id or what the patch returns, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences plus a parenthetical, with the core action and identifier keys front-loaded and no filler. Every clause carries information the schema or annotations do not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the annotations plus cost/auth note give a reasonable behavioral picture. For a 24-parameter mutation tool with 0 required params, however, the definition is thin: it never explains that no parameters are mandatory, how to distinguish the idempotency_key/request_id aliases, or what errors to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 8% across 24 parameters, so the description carries most of the burden and largely fails to. It names the two identifier params and gives a few example updatable fields (hours, affordability, address, notes), but leaves roughly twenty other parameters — price_level, opening_hours, hours_source, tags, latitude/longitude, idempotency_key alias — undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Patch a saved place card' — and names the two identifier keys (place_id / business_contact_id), so it is distinguishable from create_place and get_place. It does not, however, differentiate itself from the adjacent sibling enrich_place_from_google, which is also a place-card mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no named alternative. The patch semantics hint at 'use this to modify an existing card,' but the agent gets no help deciding between this, create_place, enrich_place_from_google, or resolve_place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_sleepUpdate SleepAInspect
Sleep: patch an existing sleep record by sleep_id. ($0.10; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| quality | No | ||
| ended_at | No | ||
| sleep_id | Yes | ||
| timezone | No | ||
| request_id | No | Client idempotency key (retries return original result). | |
| sleep_type | No | ||
| started_at | No | ||
| idempotency_key | No | Alias for request_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| sleep | No | |
| message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's a write operation (readOnlyHint false). The description adds cost ($0.10) and API key requirement, which are not in annotations. It does not disclose behavior like error handling or side effects of missing fields, but the bar is lower with annotations present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the core action. It is not verbose, but it sacrifices necessary detail. The structure is efficient but lacks completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters and low schema coverage, the description is too brief. It does not explain parameter semantics, usage conditions, or potential pitfalls. The output schema exists, but the description is insufficient for an agent to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 22%, so the description should compensate. It only mentions sleep_id but does not explain its format or the meaning of other parameters like quality, timezone, or sleep_type. The description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (patch), the resource (sleep record), and the identifier (sleep_id). It distinguishes from siblings like log_sleep (create) and get_sleep (read) by specifying 'existing sleep record'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage for existing records, which separates it from creation tools. However, it does not explicitly name alternatives or state when not to use it. The context is clear but lacks explicit exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_assetUpload AssetAInspect
Upload image bytes to Dayze storage (WebP re-encode strips EXIF/AI metadata). Returns asset_id. For inventory item photos: pass entity_type=inventory, entity_id=inventory_id, role=photo, image_base64 from chat images. Or upload then attach_asset. ($0.15; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| role | No | original | cover | thumbnail | … | |
| filename | No | ||
| metadata | No | ||
| entity_id | No | ||
| mime_type | No | ||
| asset_type | No | photo | receipt | certificate | document | thumbnail | … | |
| request_id | No | Client idempotency key (retries return original result). | |
| description | No | ||
| entity_type | No | inventory_item maps to inventory | |
| image_base64 | No | ||
| idempotency_key | No | Alias for request_id. | |
| parent_asset_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | No | |
| message | No | |
| asset_id | No | |
| metadata_stripped | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a nontrivial side effect: 'WebP re-encode strips EXIF/AI metadata' – something not present in annotations. It also mentions the cost ($0.15) and API key requirement, which are operationally important. Annotations only indicate readOnlyHint=false and destructiveHint=false, so the description adds significant behavioral context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loads the core function, and efficiently includes usage recipe, alternatives, and cost/auth. It's appropriately sized for the tool's complexity, though it could be slightly more structured with the use-case as a separate sentence for even better scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters, low schema coverage, and an output schema, the description provides a concrete, actionable recipe for the most common scenario (inventory photos), mentions the return value (asset_id), and notes cost/auth. However, it doesn't cover other potential uses (e.g., uploading documents or receipts directly), nor does it explain the purpose of several less-common parameters. The tool's complexity warrants a more thorough description to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 38% with 13 parameters, so the description must compensate. While it highlights the key parameters for the inventory workflow (entity_type, entity_id, role, image_base64), it omits explanations for url, filename, metadata, mime_type, asset_type, parent_asset_id, etc. The single use-case recipe doesn't cover the full parameter space, leaving many parameters semantically undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Upload image bytes to Dayze storage' – a specific verb and resource. It also distinguishes the tool by noting the WebP re-encode behavior and returning asset_id, separating it from siblings like attach_asset and upload_photo. The concrete inventory use-case further clarifies the intended scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers explicit guidance for the primary use case (inventory photos with entity_type=inventory, entity_id, role=photo, image_base64) and suggests an alternative workflow ('Or upload then attach_asset'). However, it doesn't explicitly state when not to use this tool (e.g., if the caller has a URL instead of bytes, or if an upload_photo is more appropriate), leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_photoUpload PhotoAInspect
Upload a photo to a Life Graph entity. Accepts image_base64 or url (one required). Re-encodes via WebP (strips EXIF/AI metadata). Person uploads also write the CRM gallery (person_photos) and avatar when set_as_avatar=true. ($0.15; API key required)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| asset | No | |
| message | No | |
| asset_id | No | |
| photo_id | No | |
| optimized | No | |
| avatar_updated | No | |
| metadata_stripped | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behaior beyond what annotations provide: re-encoding via WebP, stripping EXIF/AI metadata, person uploads writing to the CRM gallery and avatar, plus pricing and API-key requirement. This gives the agent clear expectations about side effects before invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences cover the action, input constraint, transformation behavior, side effects, cost, and auth requirement without wasted words. The primary purpose is front-loaded and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the annotations already indicate this is a read-write operation, the description supplies the missing behavioral, side-effect, cost, and auth context. The agent has everything it needs to decide whether and how to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents most parameters, and the description reinforces the key constraint that exactly one of image_base64 or url is required. It also adds meaning for set_as_avatar by explaining the avatar side effect, which is not present in the schema property description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: upload a photo to a Life Graph entity. The description clearly establishes this as a photo-specific upload distinct from generic sibling tools like upload_asset, and adds meaningful scope by noting person-gallery behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Cleary states the main use case and the two acceptable input modes (image_base64 or url, one required). It also explains the person-upload side effect, giving an agent relevant context, though it does not explicitly name alternative sibling tools or state when not to use this tool.
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.
129 tool updates
v1.28.0- Added
add_inventory_item - Added
add_inventory_valuation - Added
add_person_alias - Added
archive_asset - Added
archive_event - Added
archive_expense - Added
archive_inventory_item - Added
archive_trip - Added
attach_asset - Added
audit_people - Added
bulk_dismiss_clarifications - Added
classify_contact - Added
cleanup_apply - Added
cleanup_preview - Added
commit_life_update - Added
compare_lives - Added
convert_contact_entity - Added
create_person - Added
create_place - Added
delete_event - Added
delete_food - Added
dismiss_clarification - Added
enrich_place_from_google - Added
explain_fact - Added
find_identity_candidates - Added
get_asset - Added
get_cities_visited - Added
get_context_pack - Added
get_countries_visited - Added
get_current_states - Added
get_entity_assets - Added
get_entity_links - Added
get_events - Changed
get_expenses1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "by_currency": { + "items": { + "additionalProperties": true, + "description": "Per-currency spend/income/net — never FX-converted.", + "type": "object" + }, + "type": "array" + }, + "count": { + "type": "number" + }, + "currency": { + "type": [ + "string", + "null" + ] + }, + "income": { + "type": "number" + }, + "multi_currency": { + "type": "boolean" + }, + "net": { + "type": "number" + }, + "period": { + "enum": [ + "month", + "year" + ], + "type": "string" + }, + "period_days": { + "type": "number" + }, + "spend": { + "type": "number" + }, + "top_categories": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "usd": { + "additionalProperties": true, + "description": "Totals converted to USD (approximate FX).", + "type": "object" + } + }, + "required": [ + "period" + ], + "type": "object" +}
- Added
get_inventory - Added
get_inventory_item - Added
get_inventory_valuations - Changed
get_life_context4 fields changed- added
Input schema / properties / include_locationAdded value: +{ + "default": false, + "description": "Include city/country label; never returns a precise address", + "type": "boolean" +} - added
Input schema / properties / include_memoriesAdded value: +{ + "default": true, + "description": "Include recent memory summaries (default true; set false to omit)", + "type": "boolean" +} - added
Input schema / properties / include_relationshipsAdded value: +{ + "default": true, + "description": "Include inner-circle and relationship summaries (default true; set false to omit)", + "type": "boolean" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "active_trackers": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "energy_score": { + "type": [ + "number", + "null" + ] + }, + "identity": { + "additionalProperties": true, + "description": "Account identity and timezone.", + "type": "object" + }, + "inner_circle": { + "items": { + "additionalProperties": true, + "description": "A Dayze person or contact record.", + "type": "object" + }, + "type": "array" + }, + "mood_score": { + "type": [ + "number", + "null" + ] + }, + "pending_responses": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "pending_responses_count": { + "type": "number" + }, + "pulse_streak": { + "type": [ + "number", + "null" + ] + }, + "recent_memories": { + "items": { + "additionalProperties": true, + "description": "A Dayze agent memory record.", + "type": "object" + }, + "type": "array" + }, + "relationship_health": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "social_edges": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "today_events": { + "items": { + "additionalProperties": true, + "description": "A Dayze calendar event record.", + "type": "object" + }, + "type": "array" + }, + "upcoming_events": { + "items": { + "additionalProperties": true, + "description": "A Dayze calendar event record.", + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "identity", + "today_events", + "upcoming_events" + ], + "type": "object" +}
- Added
get_life_graph - Added
get_location_context - Added
get_location_history - Added
get_memories - Added
get_money_between_people - Changed
get_people5 fields changed- added
Input schema / properties / cursorAdded value: +{ + "type": "string" +} - added
Input schema / properties / include_notesAdded value: +{ + "description": "When true, include notes (server-redacted). Default false.", + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "description": "Page size (default 100, max 500)", + "type": "number" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Skip N rows (default 0)", + "type": "number" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "expires_at": { + "type": "string" + }, + "has_more": { + "type": "boolean" + }, + "include_notes": { + "type": "boolean" + }, + "limit": { + "type": "number" + }, + "next_cursor": { + "type": [ + "string", + "null" + ] + }, + "offset": { + "type": "number" + }, + "ordering": { + "type": "string" + }, + "people": { + "items": { + "additionalProperties": true, + "description": "A Dayze person or contact record.", + "type": "object" + }, + "type": "array" + }, + "server_time": { + "type": "string" + }, + "snapshot_at": { + "type": "string" + }, + "snapshot_id": { + "type": "string" + }, + "total": { + "type": "number" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "people", + "total", + "limit", + "offset", + "truncated" + ], + "type": "object" +}
- Added
get_people_cleanup_result - Added
get_people_links - Added
get_person_aliases - Added
get_person_connections - Added
get_person_interactions - Changed
get_person_neighborhood2 fields changed- added
Input schema / properties / include_notesAdded value: +{ + "description": "When true, include center.notes (server-redacted). Default false.", + "type": "boolean" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "center": { + "additionalProperties": true, + "description": "A Dayze person or contact record.", + "type": "object" + }, + "connection_count": { + "type": "number" + }, + "connections": { + "items": { + "additionalProperties": true, + "description": "A declared connection to the center person.", + "type": "object" + }, + "type": "array" + }, + "include_notes": { + "type": "boolean" + } + }, + "required": [ + "center", + "connection_count", + "connections" + ], + "type": "object" +}
- Added
get_person_photos - Added
get_person_transactions - Added
get_photo - Added
get_photos_for_event - Added
get_photos_for_place - Added
get_place - Added
get_place_visits - Added
get_places - Added
get_residences - Added
get_sleep - Added
get_sleep_summary - Changed
get_trackers1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "note": { + "type": "string" + }, + "trackers": { + "items": { + "additionalProperties": true, + "description": "A currently active tracker.", + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "trackers" + ], + "type": "object" +}
- Added
get_transactions - Added
get_travel_history - Added
get_trip - Added
get_trips - Added
import_uber_gmail - Added
import_venmo_gmail - Added
link_entities - Added
link_inventory_person - Added
link_people - Added
list_clarifications - Added
list_gmail_accounts - Added
log_event - Added
log_expense - Added
log_favorite_song - Added
log_food - Added
log_income - Added
log_place_visit - Added
log_sleep - Added
log_transaction - Added
log_travel - Added
merge_people - Added
merge_people_preview - Added
normalize_people_apply - Added
normalize_people_preview - Added
notable_pack - Changed
notable_pack_premium1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "birthday_peers": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "life_in_days": { + "additionalProperties": true, + "description": "Age and current day-number calculations.", + "type": "object" + }, + "profile": { + "additionalProperties": true, + "description": "Quality-gated public notable-person profile.", + "type": "object" + }, + "quality": { + "additionalProperties": true, + "description": "Pack quality signals.", + "type": "object" + }, + "similar_people": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "timeline": { + "items": { + "additionalProperties": true, + "description": "Timeline item with a day number.", + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
- Changed
notable_profile1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "about": { + "type": [ + "string", + "null" + ] + }, + "bio": { + "type": [ + "string", + "null" + ] + }, + "birth_date": { + "type": [ + "string", + "null" + ] + }, + "death_date": { + "type": [ + "string", + "null" + ] + }, + "handle": { + "type": [ + "string", + "null" + ] + }, + "image_url": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": "string" + }, + "occupation": { + "type": [ + "string", + "null" + ] + }, + "profile_url": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "sources": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "timeline": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "slug", + "name", + "profile_url" + ], + "type": "object" +}
- Added
notable_search - Added
propose_life_update - Added
read_gmail_attachment - Added
read_gmail_message - Added
record_purchase - Added
record_sale - Added
remove_person_alias - Added
reset_tracker - Added
resolve_clarification - Added
resolve_person - Added
resolve_place - Added
restore_cleanup - Added
restore_event - Added
restore_expense - Added
restore_trip - Added
score_people_duplicates - Changed
search5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / anyOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "limit": { + "default": 10, + "description": "Max results 1–50", + "type": "number" + }, + "q": { + "description": "Alias for query.", + "type": "string" + }, + "query": { + "description": "Primary search query.", + "type": "string" + } + }, + "required": [ + "query" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "limit": { + "default": 10, + "description": "Max results 1–50", + "type": "number" + }, + "q": { + "description": "Alias for query.", + "type": "string" + }, + "query": { + "description": "Primary search query.", + "type": "string" + } + }, + "required": [ + "q" + ], + "type": "object" + } +] - removed
Input schema / propertiesRemoved value: -{ - "limit": { - "default": 10, - "description": "Max results 1–50", - "type": "number" - }, - "q": { - "description": "Alias for query", - "type": "string" - }, - "query": { - "description": "Search query (primary)", - "type": "string" - } -} - removed
Input schema / requiredRemoved value: -[ - "query" -] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "intent": { + "type": "string" + }, + "mode": { + "enum": [ + "semantic", + "keyword", + "blended", + "structured" + ], + "type": "string" + }, + "results": { + "items": { + "additionalProperties": false, + "properties": { + "content": { + "type": "string" + }, + "event_date": { + "type": "string" + }, + "food_id": { + "type": "string" + }, + "similarity": { + "type": "number" + }, + "source_id": { + "type": "string" + }, + "source_type": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "source_type", + "source_id", + "title", + "content", + "similarity" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "mode", + "results" + ], + "type": "object" +}
- Added
search_gmail - Added
search_inventory - Added
search_photos - Added
search_transactions - Added
set_primary_person_name - Added
start_people_cleanup - Added
undo_contact_change - Added
unlink_people - Added
update_asset - Added
update_current_location - Added
update_event - Added
update_expense - Added
update_food - Added
update_inventory_item - Added
update_notable - Added
update_people_link - Added
update_person - Added
update_person_alias - Added
update_person_identity - Added
update_place - Added
update_sleep - Added
upload_asset - Added
upload_photo
8 tool updates
v1.6.2- First observed
get_expenses - First observed
get_life_context - First observed
get_people - First observed
get_person_neighborhood - First observed
get_trackers - First observed
notable_pack_premium - First observed
notable_profile - First observed
search
TDQS
Scored across 129 tools
Many tools are explicit aliases of one another (get_money_between_people/get_person_transactions, convert_contact_entity/classify_contact, get_people_links/get_person_connections), and delete_event/archive_event are effectively duplicate operations. get_life_context and get_context_pack overlap heavily, while the notable_* family has four options for largely the same lookup. With 129 tools, an agent will frequently struggle to pick the intended endpoint.
Most tools follow a clear verb_noun snake_case convention: get_*, log_*, update_*, delete_*, import_*, archive_*, restore_*. There are minor deviations such as notable_search/notable_profile/notable_pack, the mixed get_/list_/read_ prefixes for reads, and several aliases, but the overall pattern is predictable and readable.
129 tools is an extreme count—far above the 50+ threshold for a 1. Even for a broad personal-life platform, the server bundles many subdomains and micro-endpoints into one MCP surface, which overwhelms agent context and selection. The aliases and near-duplicates make the size harder to justify, not easier.
The server covers the Dayze domain extensively: people CRUD plus duplicate cleanup, events/food/sleep/travel lifecycles, places, inventory, assets, transactions, Gmail search/read/import, and restore/archive flows. Minor gaps exist—no delete_sleep, no single get_event detail, no delete_place—but most are mitigated by archive/restore or list-style endpoints.
Maintenance
Related MCP Connectors
Curated knowledge API for AI agents - skill packs, semantic search, validated patterns.
Paid business, people, company, lead, and web intelligence for autonomous AI agents.
140+ data APIs for agents: finance, banking validation, geo, weather, text. One API key.
Public social-data API and live docs for AI coding agents.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceProvides AI agents with persistent memory and knowledge management through a comprehensive knowledge graph platform. Enables storing, searching, and managing entities, relationships, and observations with advanced features like trending analysis and smart ranking.3-
- AlicenseNot gradedqualityDmaintenancePersistent memory and identity infrastructure for AI agents. Cross-session wake protocol, drift detection, immutable snapshots, and shared memory spaces — free hosted API10MIT

VoidFeedofficial
AlicenseAqualityDmaintenanceStructured knowledge API for AI agents — fractal knowledge graphs, signal datasets, authority evidence reviews, open problems, and capability specs. Pay-per-query or subscription via Lightning, Stripe, or USDC.923 npmMIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to persist and retrieve memories via a personal knowledge graph, with tools for emotional intelligence, CRM, life management, social features, self-training, and autonomous insights.1,101 npm6MIT