Skip to main content
Glama

Dayze — Life Context

Server Details

Life context for agents: get_context_pack + public notable packs. x402 + OAuth.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
gohluke/dayze-mcp
GitHub Stars
0
Server Listing
Dayze MCP

TDQS

C2.9/5.0

Scored across 95 tools

Disambiguation2/5

Many tools overlap: get_life_context vs get_context_pack, log_transaction/log_income/log_expense are near-aliases, notable_pack vs notable_pack_premium vs notable_profile differ only in depth, and upload_asset vs upload_photo both handle image uploads. Descriptions provide hints, but boundaries are frequently blurred, making misselection likely.

Naming Consistency4/5

Almost all tools follow snake_case verb_noun patterns (get_*, log_*, update_*, delete_*, search_*). Minor deviations like notable_* (noun-first) and bare 'search' exist, but the overall convention is predictable and readable.

Tool Count1/5

95 tools is an extreme mismatch for a single MCP server, far beyond the 25+ threshold. Many are aliases or slight variations (e.g., log_income = log_transaction, get_money_between_people = get_person_transactions), bloating the surface unnecessarily.

Completeness3/5

Coverage is broad across CRM, calendar, inventory, expenses, sleep, location, photos, and clarifications, with many create/read/update operations. However, notable gaps exist: no delete/archive for people or places, and no clear create/update/delete surface for trips, leaving lifecycle dead ends.

Available Tools

95 tools
add_inventory_itemAdd Inventory ItemAInspect

Add an owned object to Life Inventory. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
request_idNoClient idempotency key (retries return original result).
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemNoInventory item record.
messageNo
inventory_idNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
currencyNo
request_idNoClient idempotency key (retries return original result).
inventory_idYes
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
valuationNo

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus 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.

archive_assetArchive AssetA
Destructive
Inspect

Soft-delete an asset (sets archived_at). Original rows are preserved for versioning. ($0.05; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYes
request_idNoClient idempotency key (retries return original result).
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetNo
messageNo
archivedNo
asset_idNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the action: 'Soft-delete 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.

Usage Guidelines3/5

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_inventory_itemArchive Inventory ItemA
Destructive
Inspect

Archive instead of destructive delete. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
request_idNoClient idempotency key (retries return original result).
inventory_idYes
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
archivedNo
inventory_idNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
roleNooriginal | cover | thumbnail | …
asset_idNo
metadataNo
entity_idYes
asset_typeNo
request_idNoClient idempotency key (retries return original result).
entity_typeYes
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetNo
messageNo
asset_idNo
attachedNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

bulk_dismiss_clarificationsBulk Dismiss ClarificationsBInspect

Dismiss non-person / typed junk from the clarification queue. ($0.05; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
request_idNoClient idempotency key (retries return original result).
entity_typeNo
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
dismissedNo

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

commit_life_updateCommit Life UpdateBInspect

Owner approve+commit via payload_hash + owner_session_id (flagged; off by default). ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idNo
proposal_idYes
payload_hashYes
idempotency_keyNo
owner_session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledNo
messageNo
assertionIdsNo
graphVersionNo

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines3/5

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 LivesA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD target date for both packs
peersNo
slug_aYesFirst person slug
slug_bYesSecond person slug
similarNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
aYesFirst notable-person knowledge pack.
bYesSecond notable-person knowledge pack.
packYes
compareYesComputed comparison fields and URLs.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

create_personCreate PersonAInspect

Add a CRM contact; checks duplicates first. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
tierNo
emailNo
notesNo
phoneNo
aliasesNo
request_idNoClient idempotency key (retries return original result).
relationshipNo
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
personNoCRM person record.
createdNo
messageNo

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations, it discloses a duplicate check, a $0.10 cost, and an API key requirement. It does not specify the outcome when a duplicate is found (error vs no-op), but still adds material behavioral context 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.

Conciseness5/5

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

One efficient sentence with essential business constraints appended parenthetically. The main action is front-loaded, and every clause adds value.

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

Completeness3/5

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

Output schema covers return values and annotations cover basic mutability, so the description need not explain those. However, it omits what happens on duplicate detection and does not clarify parameter semantics (especially tier/relationship), leaving moderate gaps for an agent to hit errors on alternative paths.

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

Parameters2/5

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

Schema description coverage is only 22% (just request_id/idempotency_key), and the description lists no parameter details. An agent must infer the meaning of tier, relationship, and aliases from names alone, which is risky for a 9-parameter creation tool.

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

Purpose5/5

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

States a specific verb 'Add' and resource 'CRM contact', and adds unique behavioral cue 'checks duplicates first'. This clearly distinguishes it from update_person, merge_people, and read-only lookup siblings.

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

Usage Guidelines4/5

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

The description clearly frames the tool as the way to create a new CRM contact, and the duplicate-check note implies it is the entry point before considering update or merge operations. It does not explicitly name alternatives or exclusion conditions, but the context is sufficient for an agent to select it for creation.

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
cityNo
nameYes
tagsNo
hoursNoAlias for opening_hours
notesNo
phoneNo
addressNo
countryNo
websiteNo
categoryNorestaurant|cafe|supermarket|shop|hawker|… (aliases mapped to business_contacts.category)
latitudeNo
longitudeNo
request_idNoClient idempotency key (retries return original result).
descriptionNo
price_levelNoAlias for affordability
hours_sourceNoagent | google_places | user
affordabilityNo$ | $$ | $$$ (or 1–3)
opening_hoursNo
phone_numbersNo
idempotency_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
placeNoSaved place card.
createdNo
messageNo
place_idNo
duplicateNo
business_contact_idNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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)A
Destructive
Inspect

MUTATES by removing one existing calendar event the authenticated user owns. Required: event_id (UUID). Unknown or other-user event_id returns an error. event_people tags cascade; linked entity_assets are archived. When the event mirrors a Food Diary row (external_source user_food_log), the food row is deleted too. For food-diary meals, prefer delete_food. Rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesUUID of a calendar event the authenticated user owns
request_idNoClient idempotency key (retries return original result).
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYesA Dayze calendar event record.
event_idYes
food_deleted_idsYes
life_state_rebuiltYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false, and the description adds substantial behavioral detail: event_people tags cascade, linked entity_assets are archived, replicated food rows are deleted, life_state is rebuilt, and auth/cost constraints are stated. This goes well 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.

Conciseness5/5

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

The description is dense but every clause adds value: mutation message, required parameter, failure mode, cascade effects, sibling routing, system rebuild, auth requirements, and cost. The most important operational facts are front-loaded at the beginning.

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

Completeness5/5

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

For a destructive tool with cascading side effects, the description covers the required parameter, ownership validation, error behavior, side effects, routing to delete_food, auth scope, and cost. An output schema exists and describes return values, so the description is sufficiently complete 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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents event_id as a UUID of an owned calendar event and documents request_id and idempotency_key fully. The description mostly restates that event_id is required and adds error behavior rather than new parameter meaning, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'removing one existing calendar event the authenticated user owns.' It clearly distinguishes delete_event from sibling tools like delete_food and update_event by focusing on owned calendar events and noting the food-diary special case.

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

Usage Guidelines5/5

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

The description explicitly says 'For food-diary meals, prefer delete_food,' naming the alternative and the condition that redirects usage. It also sets boundaries by stating unknown or other-user event_ids return an error, and that share tokens cannot write, which clarifies when this tool is not 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)A
Destructive
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
food_idYesUUID of a Food Diary row the authenticated user owns
request_idNoClient idempotency key (retries return original result).
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYesDeleted food diary row.
food_idYes
event_idNo
life_state_rebuiltYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
request_idNoClient idempotency key (retries return original result).
idempotency_keyNoAlias for request_id.
clarification_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
dismissedNo

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
place_idNo
request_idNoClient idempotency key (retries return original result).
fill_empty_onlyNo
idempotency_keyNoAlias for request_id.
business_contact_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
placeNoSaved place card.
messageNo
enrichedNo
place_idNo
applied_fieldsNo
business_contact_idNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 FactA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
factNoAlias for query
limitNoMax evidence rows 1–20, default 8
queryYesFact or phrase to explain

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
queryYes
messageNo
evidenceYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

get_assetGet AssetA
Read-only
Inspect

Fetch one asset by asset_id with signed_url for download/processing. ($0.05; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYes
include_signed_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetNo
countYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 VisitedC
Read-only
Inspect

Canonical cities from completed trips. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
citiesYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already indicate read-only, non-destructive behavior, so the description does not need to restate that. It adds useful context: API key required, a $0.10 cost, and restriction to completed trips. It does not explain canonicalization behavior or result shape, but the output schema covers returns.

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

Conciseness5/5

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

The description is extremely compact, front-loads the purpose, and adds only high-value operational notes (cost and API key). No filler or redundant restatement of the tool name exists.

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

Completeness2/5

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

The output schema exists, so return value documentation is not needed. However, with 0% parameter coverage, no usage guidance, and no explanation of 'to'/'from', the description is not complete enough for an agent to invoke the tool correctly in all cases.

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

Parameters1/5

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

Schema description coverage is 0%, and the 'to' and 'from' parameters have no descriptions. The description does not clarify whether these are dates, place identifiers, or some other range, so an agent cannot reliably determine parameter format or meaning.

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

Purpose4/5

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

The description names a specific resource ('canonical cities') and the source domain ('completed trips'), and the tool name reinforces the action. It does not explicitly contrast with siblings like get_countries_visited or get_travel_history, but the core purpose is understandable.

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

Usage Guidelines2/5

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

No when-to-use guidance is provided, and no alternative tools are mentioned. The phrase 'from completed trips' implies a filter condition, but it does not explain when an agent should prefer this tool over get_countries_visited, get_place_visits, or get_travel_history.

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 PackA
Read-only
Inspect

Life Context Protocol (LCP) pack for the authenticated user: identity, pulse, who_matters, whats_next, memories. Pass include_relationships/include_memories false to omit those sections; location and money stay opt-in. Spec: https://dayze.com/docs/life-context ($0.20; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoOptional focus hint echoed in the pack (e.g. places, travel, people)
queryNoOptional focus query for semantic memories
include_moneyNoInclude the private cashflow summary
include_tripsNoInclude recent/upcoming trips from completed travel history
include_placesNoInclude recent canonical places (venue-level, no GPS points)
include_locationNoInclude city/country label; never returns a precise address
include_memoriesNoInclude recent memories (default true). A query always enables focused memories.
include_relationshipsNoInclude who_matters (inner-circle, relationship health, reach-out). Default true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNoPresent when life state is unavailable.
focusNo
pulseYes
queryNo
tripsNoRecent trips when include_trips=true.
placesNoRecent canonical places when include_places=true.
partialNo
identityYes
memoriesNo
protocolYesLife Context Protocol metadata.
sectionsNoPer-section ok/error status for partial packs.
whats_nextYes
who_mattersNo
generated_atNo
preferred_toolYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the tool read-only and non-destructive. The description adds valuable behavior: a $0.20 cost, required API key, a spec URL, and explicit opt-in behavior for location and money. 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.

Conciseness5/5

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

The description is three dense sentences with no filler: the first names the pack and its sections, the second gives toggle guidance, and the third covers cost, auth, and spec. Information is front-loaded and each sentence earns its place.

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

Completeness4/5

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

Given the output schema and annotations, the description covers the important operational details: contents, toggles, opt-in sections, cost, API key, and spec link. The main gap is the lack of differentiation from similar life-context sibling tools, which makes the definition mostly complete but not fully self-sufficient.

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

Parameters3/5

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

Schema coverage is 100%, so the schema fully documents all eight parameters. The description only restates that include_relationships/include_memories can be omitted and that location/money stay opt-in, adding minor context but no substantial parameter semantics beyond the schema.

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

Purpose4/5

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

The description names a specific resource — 'Life Context Protocol (LCP) pack for the authenticated user' — and enumerates its contents: identity, pulse, who_matters, whats_next, memories. This clearly goes beyond the generic title, though it does not explicitly distinguish itself from the similarly named 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.

Usage Guidelines2/5

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

The description provides parameter-level usage guidance ('Pass include_relationships/include_memories false to omit those sections; location and money stay opt-in') and notes the API key and cost, but it never states when to use this tool instead of alternatives like get_life_context, get_memories, or get_location_context. Selection guidance is missing.

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

get_countries_visitedCountries VisitedB
Read-only
Inspect

Canonical countries from completed trips (not other people travel). ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
include_residenceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
countriesYes

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

The description implies when to use 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 StatesC
Read-only
Inspect

Permitted assertion states for a person (flagged life-graph; off by default). ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
known_atNo
valid_atNo
people_idNoCRM people.id UUID
person_idNoAlias for people_id
predicatesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
statesNo
enabledNo

TDQS

C2.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 AssetsA
Read-only
Inspect

List assets linked to an entity (role, signed_url, versions). entity_type inventory_item → inventory. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes
asset_typeNo
entity_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
assetsNo

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_eventsCalendar EventsA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoInclusive YYYY-MM-DD
fromNoInclusive YYYY-MM-DD (preferred over range)
kindsNoFilter event_kind e.g. ["life_event","todo"]
rangeNo
include_browsingNoInclude extension "Browsed domain · Xm" auto-events (default false)
include_calendar_blocksNoInclude Focus Time / calendar_block rows (default false)

Output Schema

ParametersJSON Schema
NameRequiredDescription
toYesInclusive YYYY-MM-DD upper bound.
capYes
fromYesInclusive YYYY-MM-DD lower bound.
rangeYes
totalNo
eventsYes
truncatedYes

TDQS

A4.4/5.0
Behavior5/5

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 meaningful operational context beyond that: the API key requirement, a $0.10 cost, and the default exclusion of browsing noise. These are behavioral and constraint details not present in the 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.

Conciseness5/5

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

The description is compact and front-loaded with the core purpose, followed by parameter guidance, default behavior, and operational constraints. Every sentence provides actionable information without redundancy.

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

Completeness5/5

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

Given the output schema exists and the input schema covers most parameters, the description fills the remaining important gaps: range semantics, default noise exclusion, auth requirements, and cost. An agent has enough information 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.

Parameters4/5

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

Schema coverage is high at 83%, and the description adds useful semantics beyond the schema: it clarifies that 'year' means calendar year, lists the range shortcut values, and emphasizes preferring explicit from/to. It does not add meaningful detail for the kinds parameter, but the schema already describes that adequately.

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

Purpose4/5

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

The description identifies the resource as 'Authenticated user's calendar events' and the tool name supplies the 'get' verb, making it clear this is a read operation on calendar events. It distinguishes itself from obvious siblings like log_event, update_event, and delete_event, but it does not explicitly name any alternatives or provide contrast with similar listing tools.

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

Usage Guidelines4/5

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

The description gives clear invocation guidance: prefer explicit from/to dates, use shortcuts for common ranges, and note that browsing noise is excluded by default. It does not, however, state when NOT to use this tool or point to alternatives such as log_event, update_event, or delete_event.

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

get_expensesExpense SummaryA
Read-only
Inspect

Authenticated user cashflow summary: spend, income, net, and top spend categories. Requires OAuth or a supported scoped credential. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
netNo
usdNoTotals converted to USD (approximate FX).
countNo
spendNo
incomeNo
periodYes
currencyNo
by_currencyNo
period_daysNo
multi_currencyNo
top_categoriesNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 InventoryA
Read-only
Inspect

Browse owned inventory with filters. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
itemsNo

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 ItemB
Read-only
Inspect

Full item with valuations, people links, assets. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
inventory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemNoInventory item record.
assetsNo
valuationsNo
people_linksNo

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 ValuationsA
Read-only
Inspect

Chronological valuation history for an item. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
inventory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
valuationsNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 SnapshotA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
include_locationNoInclude city/country label; never returns a precise address
include_memoriesNoInclude recent memory summaries (default true; set false to omit)
include_relationshipsNoInclude inner-circle and relationship summaries (default true; set false to omit)

Output Schema

ParametersJSON Schema
NameRequiredDescription
identityYesAccount identity and timezone.
mood_scoreNo
energy_scoreNo
inner_circleNo
pulse_streakNo
social_edgesNo
today_eventsYes
active_trackersNo
recent_memoriesNo
upcoming_eventsYes
pending_responsesNo
relationship_healthNo
pending_responses_countNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

The description uses a specific verb ('Get') and 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.

Usage Guidelines3/5

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 ExportA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoInclude additional people by last interaction, up to max_people
max_peopleNo
event_links_limitNo
include_event_linksNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
hotYes
edgesYes
nodesYes
edge_countYes
node_countYes
event_people_linksNo
max_people_requestedNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ContextA
Read-only
Inspect

Likely current or at-time place with confidence and provenance. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
atNoISO timestamp

Output Schema

ParametersJSON Schema
NameRequiredDescription
atNo
placeNoCanonical place record.
confidenceNo
provenanceNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 HistoryB
Read-only
Inspect

Normalized visit history (venue-level by default, not raw GPS noise). ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
cityNo
fromNo
placeNo
countryNo
precisionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
visitsNo

TDQS

B3.2/5.0
Behavior4/5

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

The description adds useful behavioral context beyond the annotations: results are normalized, venue-level by default, and not raw GPS noise, plus an API key and cost are required. Since annotations already declare readOnlyHint, the description does not need to belabor safety, and it adds meaningful nuance.

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

Conciseness5/5

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

The description is two short sentences with no filler. The core behavior is front-loaded and the cost/auth caveat is appended compactly.

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

Completeness2/5

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

The output schema and read-only annotations reduce the burden there, but the description still omits parameter meanings and sibling differentiation. For a six-parameter tool, an agent needs more than one implicit precision hint to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only hints at one parameter: 'venue-level by default' implies a precision default. The other five parameters (to, from, city, place, country) receive no semantic explanation, leaving the agent to guess how they combine.

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

Purpose4/5

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

The description clearly scopes the tool to normalized visit history at venue-level rather than raw GPS noise, which distinguishes it from a raw location feed. It lacks a direct contrast with siblings like get_place_visits or get_travel_history, but the resource and its normalizing behavior are specific.

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

Usage Guidelines2/5

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

The only guidance is that an API key is required and the call costs $0.10. There is no indication of when to prefer this over get_travel_history, get_place_visits, get_location_context, or get_cities_visited, and no exclusions or alternative conditions.

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

get_memoriesAgent MemoriesA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows 1–50, default 20
queryNoSemantic focus (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYes
queryNo
eventsNo
peopleNo
memoriesYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 PeopleA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoInclusive YYYY-MM-DD filter
fromNoInclusive YYYY-MM-DD filter
nameNoSurface name if person_id unknown
limitNoMax rows 1–200, default 50
person_idNoCRM people.id

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
modelNo
totalsNo
entriesNo
person_idNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_peopleUser ContactsA
Read-only
Inspect

List the authenticated user's CRM people. Each person 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. Requires OAuth or a supported scoped credential. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default 100, max 500)
offsetNoSkip N rows (default 0)
include_notesNoWhen true, include notes (server-redacted). Default false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitYes
totalYes
offsetYes
peopleYes
truncatedYes
include_notesNo

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, and the description adds valuable behavior: OAuth/scoped credential requirement, cost, server-side redaction of credential/secret spans, default note omission, and pagination behavior (total/truncated). 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.

Conciseness5/5

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

The description is dense but every sentence earns its place—purpose, field summary, alternative, notes behavior, pagination, auth/cost. It is front-loaded with the primary purpose and no filler.

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

Completeness5/5

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

Covers all necessary aspects: primary action, output fields, pagination, notes behavior, authentication, cost, and the sibling for photos. With an output schema present, nothing an agent needs to call correctly is missing.

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

Parameters5/5

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

Schema coverage is 100%, but the description goes beyond schema by explaining the semantics of include_notes (redaction, progressive fetch) and limit/offset (returns total and truncated). This adds meaning the schema alone doesn't convey.

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

Purpose5/5

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

The description states a specific verb and resource: 'List the authenticated user's CRM people.' It also distinguishes itself from the sibling get_person_photos by noting that the full gallery is available via that tool, making the purpose unmistakable.

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

Usage Guidelines5/5

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

Explicitly routes the agent to an alternative with 'use get_person_photos(person_id) for the full gallery' and explains the include_notes progressive fetch condition. 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_person_aliasesPerson AliasesA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSurface name if person_id unknown
person_idNoCRM people.id

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
aliasesNo
person_idNo
candidatesNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ConnectionsA
Read-only
Inspect

List graph edges for one CRM person. ($0.05; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
person_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
personNo
connectionsNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 InteractionsA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoInclusive YYYY-MM-DD filter
fromNoInclusive YYYY-MM-DD filter
kindNoOptional filter: meeting, visit, gift, stayed_over, met, …
nameNo
limitNoMax rows 1–100, default 40
person_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
countNo
eventsNo
person_idNo
truncatedNo
matched_viaNo

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 NeighborhoodA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
person_idYesUUID
include_notesNoWhen true, include center.notes (server-redacted). Default false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
centerYesA Dayze person or contact record.
connectionsYes
include_notesNo
connection_countYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 PhotosA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
person_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
photosNo
person_idNo

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the simplicity of the tool (one 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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool retrieves 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.

Usage Guidelines3/5

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 TransactionsA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoInclusive YYYY-MM-DD filter
fromNoInclusive YYYY-MM-DD filter
nameNoSurface name if person_id unknown
limitNoMax rows 1–200, default 50
person_idNoCRM people.id

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
countNo
totalsNo
entriesNo
person_idNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 PhotoA
Read-only
Inspect

Single photo metadata + secure URL. Returns inline MCP image attachment when available. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
photo_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
photoNoPhoto or entity asset metadata.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 EventD
Read-only
Inspect

Assets linked to an event. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
photosNo
event_idNo

TDQS

D1.8/5.0
Behavior3/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose2/5

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.

Usage Guidelines1/5

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 PlaceC
Read-only
Inspect

Assets linked to a canonical place. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
place_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
photosNo
place_idNo

TDQS

C2.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 CardA
Read-only
Inspect

Fetch one saved place card (business_contacts) by place_id — address, opening hours, affordability, notes. ($0.05; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
place_idNo
business_contact_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
placeNoSaved place card.
messageNo
place_idNo
business_contact_idNo

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 PlacesB
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
areaNo
cityNo
nearNoFilter saved cards by area/tag/notes (e.g. Madeira).
limitNo
countryNo
affordabilityNo$ | $$ | $$$

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
placesNo
saved_countNo
saved_placesNo

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 VisitsB
Read-only
Inspect

When was I at a venue — merges place_visits, location_visits, and event locations. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
placeYes
place_idNo
person_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
placeYes
visitsYes
confidenceNo
people_presentNo
matching_eventsNo

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_sleepGet SleepC
Read-only
Inspect

Sleep: list typed sleep/nap records with duration_minutes. ($0.05; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
sleepsNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description 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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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 SummaryA
Read-only
Inspect

Sleep: day/week/month totals and averages. ($0.05; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
rangeNo
nightsNo
total_minutesNo
average_minutesNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 TrackersA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
trackersYes

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 TransactionsA
Read-only
Inspect

List expense/income/transfer rows. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
transactionsNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the primary behavioral profile is covered. The description adds two useful behavioral details beyond the schema: the call costs $0.10 and requires an API key. It doesn't mention pagination, rate limits, or the shape of the response, but with annotations covering safety, this is a reasonable contribution.

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

Conciseness5/5

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

The description is a single concise sentence that states the action and scope, followed by two parenthetical cost and auth notes. All content earns its place with no redundancy or filler. It is appropriately front-loaded with the core purpose first.

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

Completeness3/5

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

Given the zero parameters and read-only annotations, the description covers the essential calling requirements: what it lists, the cost, and the API key requirement. However, it does not mention that an output schema exists or describe the return format, and it doesn't note whether all rows are returned or if there are implicit limits. For a list operation, this is adequate but not fully complete.

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

Parameters4/5

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

The schema has zero parameters and 100% coverage, so there is no parameter documentation burden. With 0 params, the baseline is 4 per the rubric. The description adds no param detail, but none is needed since there are no parameters. It does not need to compensate for any schema gaps.

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

Purpose3/5

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

The description states a specific verb+resource: 'List expense/income/transfer rows.' This distinguishes it from other transaction-related tools like search_transactions, though it doesn't explicitly name alternatives. However, the title is essentially the same as the description, and the scope of 'rows' is somewhat vague. The description is clear but not strongly differentiated from siblings.

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

Usage Guidelines3/5

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

The description implies it is a listing operation for expense/income/transfer rows, but it does not explicitly say when to use this tool vs alternatives such as get_expenses, search_transactions, or get_person_transactions. There is no mention of filtering, pagination, or date ranges, and it doesn't say when NOT to use it. Usage context is only implied by the verb 'List.'

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

get_travel_historyTravel HistoryB
Read-only
Inspect

Completed/confirmed travel only. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
tripsNo

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

The description implies when to use 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 TripA
Read-only
Inspect

Single trip with linked places and people. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
trip_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
tripNo
peopleNo
placesNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

The description implies use when a 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 TripsC
Read-only
Inspect

User trips with status filter (planned/completed/etc.). ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
limitNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
tripsNo

TDQS

C2.9/5.0
Behavior3/5

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 invocation context with the API key requirement and $0.10 cost, and it mentions the status filter, but it does not disclose behavior like date-range interpretation, result ordering, or pagination. 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.

Conciseness4/5

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

The description is compact and front-loaded, with the core function stated first and cost/auth details appended. It is efficient with no filler, though the trailing 'etc.' is slightly vague and could be replaced with more concrete status examples.

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

Completeness2/5

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

Given four parameters with zero schema descriptions, no enums, and no usage guidance, this description is too sparse for reliable invocation. An output schema exists to describe return values, but the missing parameter semantics and lack of sibling differentiation leave significant gaps.

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

Parameters2/5

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 all four parameters, but it only explains 'status' with examples like planned/completed. The parameters 'to', 'from', and 'limit' remain entirely ambiguous—an agent cannot tell whether to/from are dates, locations, or something else.

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

Purpose4/5

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

The title 'List Trips' and description 'User trips with status filter' make it clear this tool retrieves a set of trips, with the resource being user trips. The status filter (planned/completed/etc.) adds specificity, though the description itself lacks an explicit verb and does not distinguish itself from the sibling get_trip or get_travel_history.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like get_trip or get_travel_history. It includes prerequisites such as API key and cost, but these do not help an agent choose among the many sibling trip/travel/list tools.

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

list_clarificationsList ClarificationsB
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOptional: entity_mention | duplicate_people
limitNoMax rows 1–50, default 15
auto_cleanupNoAuto-dismiss non-person / auto-link existing (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
messageNo
truncatedNo
clarificationsYes

TDQS

B3.4/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the parameters 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.

Purpose4/5

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.

Usage Guidelines4/5

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.

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; alias date). Optional: event_time (8pm or 20:00; alias time), end_date, end_time, location, description, category, external_url, visibility (private|friends|public), image_url, timezone, share_with (Dayze handles e.g. ["boof"]), people / with / person_ids, idempotency_key (recommended; retries reuse the first write). 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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
eventYesA Dayze calendar event record.
people_taggedYes
unresolved_peopleYes
life_state_rebuiltYes

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing storage side effects (inserts public.events, optional event_people / shared_events, rebuilds life_state), auth requirements (API key or OAuth scope context; share tokens cannot write), cost ($0.10), idempotency behavior, and that unknown people names do not fail the write.

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

Conciseness4/5

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

Front-loads the mutation warning and the usage rule, then enumerates constraints. The two worked examples are verbose but functionally illustrative rather than filler; a slightly tighter phrasing would earn a 5.

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

Completeness5/5

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

An output schema exists so return values need not be explained, and the description still notes the public share_url consequence. Auth, cost, persistence, and idempotency are all covered — nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description adds real value: it names required vs optional fields, gives format examples ('8pm or 20:00'), documents aliases (date/time/with), and demonstrates idempotency_key retry semantics and share_with handle handling.

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

Purpose5/5

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

Opens with a specific verb+resource ('MUTATES the authenticated user calendar') and immediately scopes it against the obvious sibling by excluding food logs. An agent can tell this apart from log_food 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.

Usage Guidelines5/5

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

Explicit when-to-use ('non-food days — funeral, cremation, appointment, dinner'), an implied alternative ('anything that is not a food log'), and even a when-not ('Do not store this as a chat memory'). Routing is unambiguous.

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
notesNo
amountYes
categoryNo
currencyNo
merchantNoPayee name (defaults when omitted)
request_idNoClient idempotency key (retries return original result).
descriptionNo
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
expenseNoExpense/income transaction row.
messageNo
expense_idNo

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoAlias for source_url
titleNoTrack title (required unless track blob parses)
trackNoOptional "Artist - Title (year remaster)" blob
artistNoArtist name (required unless track blob parses)
year_noteNoOptional year or remaster note
request_idNoClient idempotency key (retries return original result).
source_urlNoOptional https link
remaster_noteNoAlias for year_note
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
trackYesSaved favorite-track record.
createdYesTrue when a new favorite was created.
messageYes
track_idYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
whatYesWhat they ate or drank (required). Example: Mee Pok
withNoCompanion names, aliases, ids, or group tokens. "my parents" / Mum / Dad resolve via aliases; "family" expands to CRM rows with family relationship labels
notesNo
placeNoVenue or location
amountNoPrice if mentioned
paid_byNoWho paid (name or alias)
currencyNoISO currency, e.g. SGD
merchantNoRestaurant, stall, or shop
person_idsNoOwned person UUIDs to tag (user-scoped)
request_idNoClient idempotency key (retries return original result).
consumed_atNoISO 8601 datetime; wins over meal_period
meal_periodNoSpoken period when consumed_at is omitted, e.g. "late lunch"
people_namesNoAlias for with
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
food_idYes
messageYes
event_idYes
food_logYesSaved Food Diary row.
people_taggedYes
unresolved_peopleYes
life_state_rebuiltYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
notesNo
amountYes
sourceNo
currencyNo
merchantNo
person_idNo
request_idNoClient idempotency key (retries return original result).
external_idNo
payment_methodNo
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeNo
messageNo
directionNo
duplicateNo
expense_idNo
transactionNoExpense/income transaction row.
transaction_idNo

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations: 'Record' signals a write operation, '$0.10' discloses cost, 'API key required' discloses auth needs, and external_id idempotency is explained. It also reveals the alias relationship to log_transaction with specific type and direction values. 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.

Conciseness5/5

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

Three sentences, each earning its place: purpose, alias semantics, and idempotency/cost/auth. Information is front-loaded with the core action first and no redundant restatement of the tool name.

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

Completeness3/5

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

The description provides key operational context such as source categories, alias behavior, external_id idempotency, cost, and auth, and an output schema exists. However, with 11 parameters and minimal schema descriptions, many optional parameters remain undocumented, so the overall picture is adequate but has clear gaps.

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

Parameters2/5

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

Schema description coverage is only 18%, so the description carries the burden of explaining parameters, but it only meaningfully adds semantics for external_id (Stripe/Gmail idempotency). Other parameters like source, merchant, person_id, payment_method, currency, and date are left without guidance, leaving the agent to guess at valid values.

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

Purpose5/5

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

The description opens with a concrete action and resource: 'Record money received' and lists real source examples (Stripe, refunds, payroll, Venmo). It also distinguishes itself by stating it is an alias of log_transaction with type=income and direction=from, making the tool's role clear relative to sibling tools.

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

Usage Guidelines4/5

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

The first sentence gives clear context for when to use the tool: incoming money from specific channels. The alias statement and external_id idempotency guidance further clarify usage, though it does not explicitly name alternatives like log_expense or state 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.

log_sleepLog SleepAInspect

Sleep: log overnight or nap. Cross-midnight OK (e.g. 14:00→03:00 = 13h / 780m). ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
sourceNo
qualityNo
ended_atYesISO end
timezoneNo
request_idNoClient idempotency key (retries return original result).
sleep_typeNo
started_atYesISO start
timezone_endNo
timezone_startNo
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
sleepNo
messageNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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. Prefer this (or log_income) over log_expense for money received. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
typeNo
notesNo
amountYes
sourceNo
currencyNo
merchantNo
directionYes
person_idNo
request_idNoClient idempotency key (retries return original result).
external_idNo
payment_methodNo
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeNo
messageNo
directionNo
duplicateNo
expense_idNo
transactionNoExpense/income transaction row.
transaction_idNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already show this is a write (readOnlyHint=false) but the description adds important behavioral detail: it requires an API key, costs $0.10, requires positive amounts, and uses external_id to dedupe imports. No contradiction exists between the description and annotations.

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

Conciseness5/5

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

Four short sentences deliver purpose, usage guidance, a deduplication caveat, and cost/API requirement with no fluff. 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.

Completeness4/5

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

For a 13-parameter write operation, the description covers the essential invocation constraints and trade-offs, and an output schema exists for return values. It does not explain how to handle transfer direction or undocumented parameters, so it is strong but not exhaustive.

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

Parameters3/5

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

Schema coverage is only 15%, and the description compensates for key parameters by explaining the direction/type combination, positive amount constraint, and external_id deduplication semantics. However, many other fields (date, merchant, person_id, payment_method, etc.) remain undocumented by both schema and description, leaving a notable gap.

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

Purpose5/5

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

Starts with a precise verb-resource phrase ('Income/expense/transfer write') that immediately identifies the operationy and the target. It also differentiates the tool from siblings by explicitly stating it should be preferred over log_expense for money received, and names log_income as an acceptable alternative.

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

Usage Guidelines4/5

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

Gives clear conditions for use: direction=from plus type=income for Venmo/Stripe/refunds, and tells the agent to prefer this tool (or log_income) over log_expense when money is received. It also states cost and API key requirement, but does not fully specify when to choose log_income instead of log_transaction.

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

merge_peopleMerge PeopleA
Destructive
Inspect

Merge duplicate CRM contacts into a primary person. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idNoClient idempotency key (retries return original result).
idempotency_keyNoAlias for request_id.
primary_person_idYes
duplicate_person_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
personNoCRM person record.
messageNo
merged_person_idsNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark destructiveHint true, and the description adds practical context: '$0.10; API key required' states cost and auth requirements. 'Merge ... into a primary person' also conveys that duplicate records are consolidated into one surviving record, though it does not spell out irreversibility or field-precedence behavior.

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

Conciseness5/5

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

One front-loaded sentence states the core action, followed by a compact parenthetical for cost and auth. No filler or redundant restatement of the title.

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

Completeness3/5

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

The description is adequate for a destructive merge with an existing output schema and annotations, but it omits when-not-to-use guidance and any detail about what happens to linked data or fields during the merge. These gaps leave an agent to infer important side effects beyond 'merge into primary.'

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

Parameters3/5

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

Schema description coverage is 50%, and the description names 'primary person' and 'duplicate CRM contacts,' which maps to primary_person_id and duplicate_person_ids. The idempotency parameters are already described in the schema, but the description adds little beyond what the parameter names imply for the required IDs.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Merge duplicate CRM contacts into a primary person.' This clearly identifies a consolidation action and distinguishes it from sibling tools like link_people or create_person.

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

Usage Guidelines4/5

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

The phrase 'duplicate CRM contacts' gives clear context for when the tool applies, and the merge-into-primary wording implies consolidation rather than linking. However, it does not explicitly state when to prefer an alternative such as link_people or score_people_duplicates.

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

notable_packNotable Knowledge PackA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD target date
slugYesPerson slug, e.g. albert-einstein
peersNo
similarNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
profileNoPublic notable-person profile.
timelineNo
life_in_daysNoAge and current day-number calculations.
birthday_peersNo
similar_peopleNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines5/5

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_pack_premiumPremium Notable PackA
Read-only
Inspect

S-tier guaranteed pack (score≥85, timeline≥8, image, embedding). Errors if below bar. Use when you need high-quality, complete notable context. Example slug: elon-musk. ($0.10)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
slugYesPerson slug, e.g. elon-musk
peersNo
similarNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
profileNoQuality-gated public notable-person profile.
qualityNoPack quality signals.
timelineNo
life_in_daysNoAge and current day-number calculations.
birthday_peersNo
similar_peopleNo

TDQS

A3.8/5.0
Behavior5/5

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 meaningful behavioral details: guaranteed quality thresholds, error behavior when the quality bar is not met, and a $0.10 cost. This goes well beyond the annotations and gives the agent a concrete contract for expected behavior.

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

Conciseness4/5

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

The description is compact and front-loads the most important guarantee, followed by error behavior, usage guidance, an example, and cost. Every fragment adds useful information, though the telegraphic style and slight redundancy between 'S-tier guaranteed' and 'high-quality' prevent a perfect score.

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

Completeness3/5

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

The description covers the tool's purpose, quality bar, error behavior, cost, and an example slug, and an output schema is present. However, key optional parameters ('date', 'peers', 'similar') are unexplained, which leaves gaps for an agent trying to use the tool beyond its simplest invocation.

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

Parameters2/5

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

Schema description coverage is only 25%, with only 'slug' documented in the schema. The description repeats the slug example (elon-musk) but provides no meaning for 'date', 'peers', or 'similar', leaving the agent to guess their purpose. Given the low schema coverage, the description should have compensated for these undocumented parameters.

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

Purpose4/5

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

The description clearly identifies the resource as a premium notable pack with explicit quality guarantees: score≥85, timeline≥8, image, and embedding. It distinguishes this tool from sibling tools like notable_pack by emphasizing the S-tier guarantee and 'Errors if below bar', though it lacks an explicit action verb such as 'retrieves' or 'gets'.

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

Usage Guidelines4/5

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

It explicitly states when to use the tool: 'Use when you need high-quality, complete notable context.' It provides clear context but does not name alternatives or specify when not to use it, despite sibling tools like notable_pack and notable_search existing.

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

notable_profileNotable Person ProfileA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPerson slug, e.g. albert-einstein

Output Schema

ParametersJSON Schema
NameRequiredDescription
bioNo
nameYes
slugYes
aboutNo
handleNo
sourcesNo
timelineNo
image_urlNo
birth_dateNo
death_dateNo
occupationNo
profile_urlYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

propose_life_updatePropose Life UpdateBInspect

Propose assertion create/correct without committing (flagged; off by default). ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
client_idNo
people_idNo
person_idNo
predicateNo
operationsNo
request_idNo
source_textNo
idempotency_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
enabledNo
messageNo
proposal_idNo
payload_hashNo

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_messageRead Gmail Message (read-only)A
Read-only
Inspect

Read one Gmail message by id from search_gmail. Returns subject, from, date, snippet, and plain-text body (truncated). Reuses the Integrations hub Gmail connection. Read-only — cannot send, archive, or delete. Never invent body text. 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)

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoAlias for message_id
message_idYesGmail message id from search_gmail

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, but the description adds meaningful behavioral context: it cannot send/archive/delete, the body is truncated, and body text must never be invented. It also discloses auth requirements and connection handling, going well beyond the 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.

Conciseness5/5

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

The description is compact yet information-dense: scope, return fields, truncation, connection reuse, read-only constraints, data integrity rule, prerequisites, and caller restrictions each earn their place. The most important facts are front-loaded.

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

Completeness5/5

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

For a single-message read operation with simple parameters and an output schema, this description covers everything an agent needs: source of the id, expected return content, auth scope, connection fallback, and prohibited actions. No critical context is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents message_id and the id alias. The description repeats 'from search_gmail' but adds no new parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description names the exact verb and resource ('Read one Gmail message by id from search_gmail') and specifies what is returned. It clearly distinguishes this tool from the sibling search_gmail by framing it as the follow-up retrieval step.

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

Usage Guidelines4/5

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

It explicitly ties the tool to output of search_gmail and states it cannot send, archive, or delete. It gives clear prerequisites (Gmail connection, API key/OAuth) and exclusions (Share tokens cannot call), but does not explicitly name alternative tools beyond search_gmail.

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
nameYes
amountYes
currencyNo
request_idNoClient idempotency key (retries return original result).
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
expense_idNo
transactionNoExpense/income transaction row.
inventory_idNo

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYes
sold_atNo
currencyNo
request_idNoClient idempotency key (retries return original result).
inventory_idYes
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
expense_idNo
inventory_idNo
realized_gain_lossNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

reset_trackerReset Streak TrackerA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional note stored in tracking history
titleNoAlias of tracker_title
reset_atNoISO datetime of the reset (default now)
request_idNoClient idempotency key (retries return original result).
tracker_idNoEvent UUID of the tracker
tracker_titleNoTitle match when id unknown
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
messageNo
reset_dateNo
reset_timeNo
tracker_idNo
invalidatesNo
previous_daysNo
tracker_titleNo
life_state_rebuiltNo
tracker_reset_countNo

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
person_idNo
request_idNoClient idempotency key (retries return original result).
person_nameNo
idempotency_keyNoAlias for request_id.
clarification_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
resolvedNo
person_idNo

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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

The description uses a specific verb ('Link') and 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.

Usage Guidelines2/5

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 PersonA
Read-only
Inspect

Resolve a nickname or surface name to a CRM person 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. ($0.05; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNickname or display name to resolve
queryNoAlias for name
include_notesNoInclude redacted notes (default false)

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryNo
personNo
aliasesNo
resolvedNo
candidatesNo
matched_viaNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotation readOnlyHint=true already signals safe read behavior; the description adds meaningful behavioral context beyond that: notes are omitted unless include_notes=true, 'redacted' status, cost ($0.05), API key requirement, and a preview of returned fields. This is substantial added transparency with no contradiction against annotations.

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

Conciseness4/5

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

The description is dense but every sentence adds value: purpose, return preview, alternative tool, notes behavior, usage preference, and cost/auth. It is front-loaded with the core purpose, though the multiple clauses in a single block make it slightly less scannable than a more structured presentation.

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

Completeness5/5

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

Given the output schema exists, the description does not need to explain return values. It covers invocation context, alternative routing, notes behavior, cost, and auth requirements. An agent has enough guidance to decide when and how to call this tool correctly.

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

Parameters4/5

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

The schema already documents all three parameters at 100% coverage. The description enriches meaning by explaining the resolution reach (aliases, exact name, slug, unique substring) and when include_notes matters, but it does not fully clarify the relationship between 'name' and 'query' beyond 'query' being an alias for 'name'.

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

Purpose5/5

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

The description uses a specific verb ('Resolve') and a concrete resource ('CRM person'), and even spells out the resolution pipeline: person_aliases → exact name → slug → unique substring. It clearly differentiates this tool from siblings like get_person_photos, get_people, and create_person.

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

Usage Guidelines5/5

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

The description explicitly says to prefer this tool before money or relationship tools when the agent only has a nickname. It also names get_person_photos as the alternative for a full gallery, giving the agent clear routing guidance.

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

resolve_placeResolve PlaceB
Read-only
Inspect

Canonicalize a venue name via place aliases and fuzzy match. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
placeNo
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
placeNoCanonical place record.
queryYes
resolvedYes
candidatesNo
matched_viaNo

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

score_people_duplicatesScore People DuplicatesA
Read-only
Inspect

Score likely CRM duplicate pairs before merge_people. ($0.05; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
person_idNoScore against one person; omit for global scan.
min_probabilityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
candidatesYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

search_gmailSearch Gmail (read-only)A
Read-only
Inspect

Search the authenticated user's already-connected Gmail inbox (read-only). Reuses the Dayze Integrations hub Gmail connection (service_connections provider=gmail, scope gmail.readonly) — no new OAuth vendor. 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 for the full body. 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)

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoAlias for query
queryYesGmail search query, e.g. "is:unread newer_than:7d", "from:airline subject:itinerary", "receipt newer_than:30d"
max_resultsNoMax messages to return (default 10, max 20)

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
messagesYes
result_size_estimateYes

TDQS

A4.9/5.0
Behavior5/5

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

Despite annotations already declaring readOnlyHint=true and destructiveHint=false, the description adds substantial behavioral context: the gmail.readonly scope, the limited return fields (id, subject, from, date, snippet only), the no-body guarantee, the prohibition on inventing email contents, and the authentication requirement. 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.

Conciseness5/5

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

The description is front-loaded with the core purpose and read-only status, and every additional sentence adds a distinct, useful constraint or follow-up. The length is justified by the authentication, security, and capability boundaries it communicates.

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

Completeness5/5

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

The tool has an output schema and full parameter documentation, and the description covers connection prerequisites, result fields, capability limits, follow-up tool, and who cannot call it. For a search tool with these complexities, nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all parameters with examples. The description adds extra value by highlighting which Gmail operators to prefer (from:, subject:, is:unread, newer_than:7d, has:attachment) and reinforcing the max_results cap, going slightly beyond the baseline.

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

Purpose5/5

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

The description states a specific verb ('Search') and resource ('the authenticated user's already-connected Gmail inbox'), making the tool's function immediately clear. It also differentiates from the sibling read_gmail_message by noting that this tool returns only metadata and that the sibling is needed for the full body.

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

Usage Guidelines5/5

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

The description explicitly provides Gmail search operator guidance, states what the tool cannot do (send, archive, delete), and routes follow-up to read_gmail_message for full bodies. It also covers prerequisites such as requiring a connected Gmail account, API key or OAuth, and excludes share tokens.

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

search_inventorySearch InventoryA
Read-only
Inspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
itemsNo
queryNo

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 PhotosB
Read-only
Inspect

Search person photos and entity assets by query/metadata. Returns inline MCP image attachments. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
queryNo
place_idNo
person_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
queryNo
photosNo

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 TransactionsB
Read-only
Inspect

Keyword search over transactions. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
queryNo
transactionsNo

TDQS

B3.3/5.0
Behavior4/5

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

The annotations already declare readOnlyHint and destructiveHint, and the description adds useful operational context: a per-call cost of $0.10 and the need for an API key. These are behavioral details beyond the structured annotations and help the agent anticipate side effects and prerequisites. 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.

Conciseness5/5

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

The description is extremely concise, with one clause for purpose and a parenthetical for operational constraints. Both sentences earn their place, and the information is front-loaded with minimal waste.

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

Completeness3/5

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

The tool is simple with one parameter and has an output schema, so a short description can be adequate. However, it lacks usage guidance relative to siblings and leaves the semantics of the query parameter under-specified, which creates some gaps for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, and the query parameter has no description beyond its name and type. The phrase 'keyword search' implies that query is the search term, but the description does not clarify requiredness, matching behavior, formatting, or the effect of additionalProperties. It only partially compensates for the schema gap.

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

Purpose4/5

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

The description states a specific verb and resource: 'Keyword search over transactions.' It clearly indicates the operation and target, but it does not explicitly contrast with related siblings like get_transactions or get_person_transactions, so it falls 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.

Usage Guidelines2/5

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. The description mentions cost and API key requirements, but not the conditions under which an agent should pick search_transactions over get_transactions or other search tools.

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNooriginal | cover | thumbnail | …
asset_idYes
filenameNo
metadataNo
asset_typeNo
request_idNoClient idempotency key (retries return original result).
descriptionNo
idempotency_keyNoAlias for request_id.
parent_asset_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetNo
messageNo
updatedNo
asset_idNo

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNo
placeNoVenue / residence name (e.g. The Madeira)
venueNoAlias for place
addressNo
countryNo
check_inNoWrite a location_visits row when place or coordinates are set (default true in that case)
latitudeNo
locationNoFreeform “City, Country” or “Venue, City, Country”
set_homeNoAlso write profiles.location / home_location (default true)
longitudeNo
request_idNo
idempotency_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
placeNo
contextNoFresh get_location_context after write.
messageNo
updatedNo
check_inNo
locationNo
set_homeNo
visit_idNo
current_cityNo
current_countryNo

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoAlias for event_date.
timeNoAlias for event_time.
withNoAlias for people.
titleNoUpdated title (replaces). Cannot be empty.
peopleNoPeople names or person UUIDs to add (event_people role=with). Does not remove existing tags.
categoryNoe.g. funeral, family, work, travel. Stored as events.category and event_type.
end_dateNoOptional end date YYYY-MM-DD (all-day multi-day).
end_timeNoOptional end time (same formats as event_time).
event_idYesUUID of a calendar event the authenticated user owns
locationNoEmpty or null clears
event_dateNoStart date YYYY-MM-DD. Alias: date.
event_timeNoStart time: 8pm, 20:00, or 20:00:00. Empty or null clears. Alias: time.
person_idsNoOwned person UUIDs to tag (user-scoped).
request_idNoClient idempotency key (retries return original result).
descriptionNoEmpty or null clears
person_nameNo
external_urlNo
people_namesNo
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
eventYesA Dayze calendar event record.
changedYesChanged fields with before and after values.
people_taggedYes
unresolved_peopleYes
life_state_rebuiltYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only mark readOnlyHint=false, openWorldHint=false, destructiveHint=false. The description goes well beyond this by disclosing side effects ('Rebuilds life_state'), failure behavior ('does not create a row'), auth constraints ('Requires API key or OAuth with scope context. Share tokens cannot write'), and cost ('$0.10; API key required'). 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.

Conciseness4/5

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

Information-dense and front-loaded with the core purpose, then requirements, then routing, side effects, and auth/cost. Every sentence carries useful information, though the final '($0.10; API key required)' partially repeats the earlier 'Requires API key', a minor redundancy.

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

Completeness5/5

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

For a 19-parameter mutation tool with side effects, the description covers purpose, required parameter, optional patch fields, error handling, alternative routing, side effects, auth requirements, and cost. Since an output schema exists, return values need not be described. Nothing essential is missing.

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

Parameters3/5

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

Schema coverage is 84%, so the baseline is 3. The description adds some value by grouping alias sets (date/event_date, time/event_time, people/with/person_ids) and referencing 'same fields as log_event', but most parameter meaning is already present in the schema. It does not clarify formats beyond what the schema provides.

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

Purpose5/5

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

States a specific verb ('MUTATES'), a precise resource ('one existing calendar event the authenticated user owns'), and differentiates from siblings by framing it as a patch to an existing event rather than a creation. The inclusion of the update_food alternative further disambiguates it from a closely related tool.

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

Usage Guidelines5/5

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

Explicitly names the alternative tool and the condition that selects it ('For food-diary meals, prefer update_food (it syncs the mirrored event)'), and gives a clear when-not via 'Unknown or other-user event_id returns an error'. It also warns that share tokens cannot write, which prevents misuse with insufficient credentials.

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

update_expenseUpdate ExpenseAInspect

PATCH an expense row. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD expense_date
notesNo
amountNo
sourceNoAlias of payment_method
categoryNo
currencyNo
merchantNo
expense_idYes
request_idNoClient idempotency key (retries return original result).
descriptionNo
payment_methodNoe.g. venmo, cash, card
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
changedNo
expenseNoExpense/income transaction row.
messageNo

TDQS

A3.8/5.0
Behavior4/5

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

With annotations already indicating that this is a write operation (readOnlyHint=false) and not destructive, the description adds value beyond them by specifying the HTTP method 'PATCH', which implies partial update semantics. It also discloses authentication needs (API key) and cost ($0.10), which are not present in the annotations. 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with zero filler. 'PATCH an expense row' immediately conveys the core action, and the parenthetical compactly adds essential operational details about cost and authorization. Every part earns its place.

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

Completeness3/5

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

The description is minimally viable: it names the operation, implies mutation of an existing expense, and includes key operational constraints. The input schema supplies property names and types, and an output schema exists so return values need not be described. However, for a 12-parameter write tool, the description lacks guidance on field semantics, partial-update behavior, and when to prefer log_expense, leaving clear gaps.

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

Parameters2/5

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

The description provides no parameter-level meaning or guidance. Schema coverage is only 42%, and several parameters such as expense_id, amount, category, currency, merchant, and notes lack descriptions. The schema does describe some ambiguous fields like date and request_id, but the description itself does not compensate for the low coverage.

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

Purpose5/5

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

The description states a concrete operation: 'PATCH an expense row.' This is a specific verb plus resource, clearly distinguishing it from read tools like get_expenses and creation tools like log_expense. The HTTP verb 'PATCH' also communicates that this updates an existing expense rather than creating 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.

Usage Guidelines3/5

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

The description implies usage for updating an existing expense row via 'PATCH', and it provides operational prerequisites: cost and API key requirement. However, it does not explicitly state when to use this tool versus log_expense or other update tools, nor mention that expense_id must identify an existing row. Usage context is implied rather than made explicit.

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
whatNoFull updated dish/drink text (replaces, does not append). Example: Salmon Bento + hot tea
withNoCompanion names, aliases, or ids to add (does not remove existing tags)
notesNoReplaces notes. Empty or null clears
placeNoVenue or location. Empty or null clears
amountNoPrice if mentioned
food_idYesUUID of a food diary row the authenticated user owns
paid_byNoWho paid (name or alias)
currencyNoISO currency, e.g. SGD
merchantNoRestaurant, stall, or shop. Empty or null clears
person_idsNoOwned person UUIDs to tag (user-scoped)
request_idNoClient idempotency key (retries return original result).
consumed_atNoISO 8601 datetime; wins over meal_period
meal_periodNoSpoken period when consumed_at is omitted, e.g. "late lunch"
append_notesNoAppend text to existing notes (newline-separated)
people_namesNoAlias for with
payment_methodNoAlias of paid_by for expense-style agents
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
changedYesChanged fields with before and after values.
food_idYes
event_idYes
food_logYesUpdated Food Diary row.
people_taggedYes
unresolved_peopleYes
life_state_rebuiltYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoWhat the user naturally calls the item.
tagsNoReplace tags array (sanitized against category mismatches).
brandNo
modelNo
notesNo
statusNo
subtypeNoSpecific subtype (sweatshirt, jacket, guitar). Alias: item_type.
categoryNoBroad type: clothing, instruments, electronics, …
locationNo
conditionNo
item_typeNoAlias for subtype.
request_idNoClient idempotency key (retries return original result).
inventory_idYes
serial_numberNo
purchase_priceNo
estimated_valueNo
idempotency_keyNoAlias for request_id.
reference_numberNo
subtype_confidenceNo0–1 confidence when subtype is uncertain (agent_inferred).

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemNoInventory item record.
changedNo
messageNo

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_personUpdate Person (CRM write)AInspect

MUTATES the authenticated user CRM. Patch one existing person they own (person_id UUID required). Optional fields: 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 or null to clear). Rejects unknown fields. Does not create or delete people. Rebuilds life_state so the next get_context_pack inner_circle is fresh. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNoRelationship priority. VIP stays in inner_circle even when not favorited
notesNoReplaces people.notes (does not append). Empty or null clears
birthdayNoYYYY, YYYY-MM, or YYYY-MM-DD. Null/empty clears
person_idYesUUID of a person the authenticated user owns
request_idNoClient idempotency key (retries return original result).
is_favoriteNoFavorite flag. Favorites (and VIP) appear in get_context_pack inner_circle
relationshipNoRelationship label (friend, sister, …). Empty or null clears
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
personYesA Dayze person or contact record.
changedYesChanged fields with before and after values.
life_state_rebuiltYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description reveals important behaviors: notes replace rather than append, birthday accepts a constrained format or null, unknown fields are rejected, life_state is rebuilt affecting get_context_pack, and Share tokens cannot write. It also discloses cost and API key requirements. 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.

Conciseness5/5

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

Every sentence earns its place: mutation scope, required field, optional fields, side effects, auth constraints, and pricing. The structure front-loads the core purpose and then layers constraints and behavior without unnecessary filler.

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

Completeness5/5

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

The description, combined with a fully described schema and output schema, covers ownership requirements, mutation semantics, side effects on life_state, auth prerequisites, and rejection behavior. There is no obvious gap an agent would need to resolve before calling the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds meaningful semantics: notes replacement warning, birthday format variants, tier's inner_circle behavior, and ownership constraint on person_id. It does not individually cover request_id/idempotency_key, but the schema already documents those fully.

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

Purpose5/5

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

The description opens with "MUTATES the authenticated user CRM. Patch one existing person they own," giving a specific verb, resource, and ownership scope. It also explicitly says "Does not create or delete people," distinguishing it from create_person and deletion tools.

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

Usage Guidelines4/5

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

The description clearly states this is for patching an existing owned person and that it does not create or delete people, giving practical when-not guidance. It also specifies auth requirements and notes the replacement behavior, but it does not explicitly name sibling alternatives like create_person for the creation case.

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
areaNo
cityNo
nameNo
tagsNo
hoursNo
notesNo
phoneNo
addressNo
countryNo
websiteNo
categoryNo
latitudeNo
place_idNo
longitudeNo
request_idNoClient idempotency key (retries return original result).
descriptionNo
price_levelNo
hours_sourceNo
affordabilityNo
opening_hoursNo
phone_numbersNo
idempotency_keyNoAlias for request_id.
business_contact_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
placeNoSaved place card.
messageNo
updatedNo
place_idNo
business_contact_idNo

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
qualityNo
ended_atNo
sleep_idYes
timezoneNo
request_idNoClient idempotency key (retries return original result).
sleep_typeNo
started_atNo
idempotency_keyNoAlias for request_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
sleepNo
messageNo

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
roleNooriginal | cover | thumbnail | …
filenameNo
metadataNo
entity_idNo
mime_typeNo
asset_typeNophoto | receipt | certificate | document | thumbnail | …
request_idNoClient idempotency key (retries return original result).
descriptionNo
entity_typeNoinventory_item maps to inventory
image_base64No
idempotency_keyNoAlias for request_id.
parent_asset_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetNo
messageNo
asset_idNo
metadata_strippedNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
assetNo
messageNo
asset_idNo
photo_idNo
optimizedNo
avatar_updatedNo
metadata_strippedNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 3 tool updates
    • Addedcommit_life_update
    • Addedget_current_states
    • Addedpropose_life_update
  2. 1 tool update
    • Addedupdate_current_location
  3. 5 tool updates
    • Addedcreate_place
    • Addedenrich_place_from_google
    • Addedget_place
    • Changedget_places6 fields changed
      • addedInput schema / properties / affordability
        Added value: +{
        +  "description": "$ | $$ | $$$",
        +  "type": "string"
        +}
      • addedInput schema / properties / area
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / near
        Added value: +{
        +  "description": "Filter saved cards by area/tag/notes (e.g. Madeira).",
        +  "type": "string"
        +}
      • addedInput schema / properties / tag
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / saved_count
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / saved_places
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "description": "Saved place card (business_contacts).",
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Addedupdate_place
  4. 1 tool update
    • Changedlog_event1 field changed
      • changedInput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        -        "type": "string"
        -      },
        -      "date": {
        -        "description": "Alias for event_date.",
        -        "type": "string"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "end_date": {
        -        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        -        "type": "string"
        -      },
        -      "end_time": {
        -        "description": "Optional end time (same formats as event_time).",
        -        "type": "string"
        -      },
        -      "event_date": {
        -        "description": "Start date YYYY-MM-DD. Alias: date.",
        -        "type": "string"
        -      },
        -      "event_time": {
        -        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        -        "type": "string"
        -      },
        -      "external_url": {
        -        "type": "string"
        -      },
        -      "idempotency_key": {
        -        "description": "Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes.",
        -        "type": "string"
        -      },
        -      "location": {
        -        "type": "string"
        -      },
        -      "people": {
        -        "description": "People names or person UUIDs to tag (event_people role=with).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "people_names": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_ids": {
        -        "description": "Owned person UUIDs to tag (user-scoped).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_name": {
        -        "type": "string"
        -      },
        -      "request_id": {
        -        "description": "Alias for idempotency_key (preferred by some clients).",
        -        "type": "string"
        -      },
        -      "time": {
        -        "description": "Alias for event_time.",
        -        "type": "string"
        -      },
        -      "title": {
        -        "description": "Event title (required).",
        -        "type": "string"
        -      },
        -      "with": {
        -        "description": "Alias for people.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "title",
        -      "event_date"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        -        "type": "string"
        -      },
        -      "date": {
        -        "description": "Alias for event_date.",
        -        "type": "string"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "end_date": {
        -        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        -        "type": "string"
        -      },
        -      "end_time": {
        -        "description": "Optional end time (same formats as event_time).",
        -        "type": "string"
        -      },
        -      "event_date": {
        -        "description": "Start date YYYY-MM-DD. Alias: date.",
        -        "type": "string"
        -      },
        -      "event_time": {
        -        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        -        "type": "string"
        -      },
        -      "external_url": {
        -        "type": "string"
        -      },
        -      "idempotency_key": {
        -        "description": "Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes.",
        -        "type": "string"
        -      },
        -      "location": {
        -        "type": "string"
        -      },
        -      "people": {
        -        "description": "People names or person UUIDs to tag (event_people role=with).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "people_names": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_ids": {
        -        "description": "Owned person UUIDs to tag (user-scoped).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_name": {
        -        "type": "string"
        -      },
        -      "request_id": {
        -        "description": "Alias for idempotency_key (preferred by some clients).",
        -        "type": "string"
        -      },
        -      "time": {
        -        "description": "Alias for event_time.",
        -        "type": "string"
        -      },
        -      "title": {
        -        "description": "Event title (required).",
        -        "type": "string"
        -      },
        -      "with": {
        -        "description": "Alias for people.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "title",
        -      "date"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        +        "type": "string"
        +      },
        +      "date": {
        +        "description": "Alias for event_date.",
        +        "type": "string"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "end_date": {
        +        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        +        "type": "string"
        +      },
        +      "end_time": {
        +        "description": "Optional end time (same formats as event_time).",
        +        "type": "string"
        +      },
        +      "event_date": {
        +        "description": "Start date YYYY-MM-DD. Alias: date.",
        +        "type": "string"
        +      },
        +      "event_time": {
        +        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        +        "type": "string"
        +      },
        +      "external_url": {
        +        "type": "string"
        +      },
        +      "idempotency_key": {
        +        "description": "Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes.",
        +        "type": "string"
        +      },
        +      "image_url": {
        +        "description": "Optional cover image URL for Explore + /e share cards.",
        +        "type": "string"
        +      },
        +      "location": {
        +        "type": "string"
        +      },
        +      "people": {
        +        "description": "People names or person UUIDs to tag (event_people role=with).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "people_names": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_ids": {
        +        "description": "Owned person UUIDs to tag (user-scoped).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_name": {
        +        "type": "string"
        +      },
        +      "request_id": {
        +        "description": "Alias for idempotency_key (preferred by some clients).",
        +        "type": "string"
        +      },
        +      "share_with": {
        +        "description": "Dayze profile handles to add as collaborators via shared_events (e.g. [\"boof\"]). Leading @ stripped.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "time": {
        +        "description": "Alias for event_time.",
        +        "type": "string"
        +      },
        +      "timezone": {
        +        "description": "IANA timezone for wall-clock display (e.g. America/New_York).",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Event title (required).",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "description": "Calendar visibility. public → appears on /explore and gets share_url https://dayze.com/e/{id}. Default private.",
        +        "enum": [
        +          "private",
        +          "friends",
        +          "public"
        +        ],
        +        "type": "string"
        +      },
        +      "with": {
        +        "description": "Alias for people.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "title",
        +      "event_date"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        +        "type": "string"
        +      },
        +      "date": {
        +        "description": "Alias for event_date.",
        +        "type": "string"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "end_date": {
        +        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        +        "type": "string"
        +      },
        +      "end_time": {
        +        "description": "Optional end time (same formats as event_time).",
        +        "type": "string"
        +      },
        +      "event_date": {
        +        "description": "Start date YYYY-MM-DD. Alias: date.",
        +        "type": "string"
        +      },
        +      "event_time": {
        +        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        +        "type": "string"
        +      },
        +      "external_url": {
        +        "type": "string"
        +      },
        +      "idempotency_key": {
        +        "description": "Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes.",
        +        "type": "string"
        +      },
        +      "image_url": {
        +        "description": "Optional cover image URL for Explore + /e share cards.",
        +        "type": "string"
        +      },
        +      "location": {
        +        "type": "string"
        +      },
        +      "people": {
        +        "description": "People names or person UUIDs to tag (event_people role=with).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "people_names": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_ids": {
        +        "description": "Owned person UUIDs to tag (user-scoped).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_name": {
        +        "type": "string"
        +      },
        +      "request_id": {
        +        "description": "Alias for idempotency_key (preferred by some clients).",
        +        "type": "string"
        +      },
        +      "share_with": {
        +        "description": "Dayze profile handles to add as collaborators via shared_events (e.g. [\"boof\"]). Leading @ stripped.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "time": {
        +        "description": "Alias for event_time.",
        +        "type": "string"
        +      },
        +      "timezone": {
        +        "description": "IANA timezone for wall-clock display (e.g. America/New_York).",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Event title (required).",
        +        "type": "string"
        +      },
        +      "visibility": {
        +        "description": "Calendar visibility. public → appears on /explore and gets share_url https://dayze.com/e/{id}. Default private.",
        +        "enum": [
        +          "private",
        +          "friends",
        +          "public"
        +        ],
        +        "type": "string"
        +      },
        +      "with": {
        +        "description": "Alias for people.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "title",
        +      "date"
        +    ],
        +    "type": "object"
        +  }
        +]
  5. 7 tool updates
    • Changedattach_asset1 field changed
      • changedInput schema / properties / role / enum
        Previous value: -[
        -  "original",
        -  "processed",
        -  "thumbnail",
        -  "cover",
        -  "document",
        -  "receipt",
        -  "certificate",
        -  "other"
        -]New value: +[
        +  "original",
        +  "processed",
        +  "thumbnail",
        +  "cover",
        +  "document",
        +  "receipt",
        +  "certificate",
        +  "photo",
        +  "other"
        +]
    • Changedget_trackers2 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -falseNew value: +true
      • addedOutput schema / properties / note
        Added value: +{
        +  "type": "string"
        +}
    • Addedreset_tracker
    • Changedupdate_asset1 field changed
      • changedInput schema / properties / role / enum
        Previous value: -[
        -  "original",
        -  "processed",
        -  "thumbnail",
        -  "cover",
        -  "document",
        -  "receipt",
        -  "certificate",
        -  "other"
        -]New value: +[
        +  "original",
        +  "processed",
        +  "thumbnail",
        +  "cover",
        +  "document",
        +  "receipt",
        +  "certificate",
        +  "photo",
        +  "other"
        +]
    • Changedupdate_expense4 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / description
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / payment_method
        Added value: +{
        +  "description": "e.g. venmo, cash, card",
        +  "type": "string"
        +}
      • addedInput schema / properties / source
        Added value: +{
        +  "description": "Alias of payment_method",
        +  "type": "string"
        +}
    • Changedupdate_food2 fields changed
      • addedInput schema / properties / append_notes
        Added value: +{
        +  "description": "Append text to existing notes (newline-separated)",
        +  "type": "string"
        +}
      • addedInput schema / properties / payment_method
        Added value: +{
        +  "description": "Alias of paid_by for expense-style agents",
        +  "type": "string"
        +}
    • Changedupload_asset1 field changed
      • changedInput schema / properties / role / enum
        Previous value: -[
        -  "original",
        -  "processed",
        -  "thumbnail",
        -  "cover",
        -  "document",
        -  "receipt",
        -  "certificate",
        -  "other"
        -]New value: +[
        +  "original",
        +  "processed",
        +  "thumbnail",
        +  "cover",
        +  "document",
        +  "receipt",
        +  "certificate",
        +  "photo",
        +  "other"
        +]
  6. 2 tool updates
    • Addedlog_income
    • Changedlog_transaction1 field changed
      • addedInput schema / properties / payment_method
        Added value: +{
        +  "type": "string"
        +}
  7. 4 tool updates
    • Addedget_sleep
    • Addedget_sleep_summary
    • Addedlog_sleep
    • Addedupdate_sleep
  8. 36 tool updates
    • Changedadd_inventory_item2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedadd_inventory_valuation2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedarchive_asset2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedarchive_inventory_item2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedattach_asset2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Addedbulk_dismiss_clarifications
    • Changedcreate_person2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changeddelete_event2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changeddelete_food2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Addeddismiss_clarification
    • Addedget_entity_links
    • Changedget_events2 fields changed
      • addedInput schema / properties / include_calendar_blocks
        Added value: +{
        +  "description": "Include Focus Time / calendar_block rows (default false)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / kinds
        Added value: +{
        +  "description": "Filter event_kind e.g. [\"life_event\",\"todo\"]",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedget_person_connections
    • Addedlink_entities
    • Changedlink_inventory_person2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Addedlink_people
    • Changedlist_clarifications1 field changed
      • addedInput schema / properties / auto_cleanup
        Added value: +{
        +  "description": "Auto-dismiss non-person / auto-link existing (default true)",
        +  "type": "boolean"
        +}
    • Changedlog_event1 field changed
      • changedInput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        -        "type": "string"
        -      },
        -      "date": {
        -        "description": "Alias for event_date.",
        -        "type": "string"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "end_date": {
        -        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        -        "type": "string"
        -      },
        -      "end_time": {
        -        "description": "Optional end time (same formats as event_time).",
        -        "type": "string"
        -      },
        -      "event_date": {
        -        "description": "Start date YYYY-MM-DD. Alias: date.",
        -        "type": "string"
        -      },
        -      "event_time": {
        -        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        -        "type": "string"
        -      },
        -      "external_url": {
        -        "type": "string"
        -      },
        -      "idempotency_key": {
        -        "description": "Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes.",
        -        "type": "string"
        -      },
        -      "location": {
        -        "type": "string"
        -      },
        -      "people": {
        -        "description": "People names or person UUIDs to tag (event_people role=with).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "people_names": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_ids": {
        -        "description": "Owned person UUIDs to tag (user-scoped).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_name": {
        -        "type": "string"
        -      },
        -      "time": {
        -        "description": "Alias for event_time.",
        -        "type": "string"
        -      },
        -      "title": {
        -        "description": "Event title (required).",
        -        "type": "string"
        -      },
        -      "with": {
        -        "description": "Alias for people.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "title",
        -      "event_date"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        -        "type": "string"
        -      },
        -      "date": {
        -        "description": "Alias for event_date.",
        -        "type": "string"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "end_date": {
        -        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        -        "type": "string"
        -      },
        -      "end_time": {
        -        "description": "Optional end time (same formats as event_time).",
        -        "type": "string"
        -      },
        -      "event_date": {
        -        "description": "Start date YYYY-MM-DD. Alias: date.",
        -        "type": "string"
        -      },
        -      "event_time": {
        -        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        -        "type": "string"
        -      },
        -      "external_url": {
        -        "type": "string"
        -      },
        -      "idempotency_key": {
        -        "description": "Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes.",
        -        "type": "string"
        -      },
        -      "location": {
        -        "type": "string"
        -      },
        -      "people": {
        -        "description": "People names or person UUIDs to tag (event_people role=with).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "people_names": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_ids": {
        -        "description": "Owned person UUIDs to tag (user-scoped).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_name": {
        -        "type": "string"
        -      },
        -      "time": {
        -        "description": "Alias for event_time.",
        -        "type": "string"
        -      },
        -      "title": {
        -        "description": "Event title (required).",
        -        "type": "string"
        -      },
        -      "with": {
        -        "description": "Alias for people.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "title",
        -      "date"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        +        "type": "string"
        +      },
        +      "date": {
        +        "description": "Alias for event_date.",
        +        "type": "string"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "end_date": {
        +        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        +        "type": "string"
        +      },
        +      "end_time": {
        +        "description": "Optional end time (same formats as event_time).",
        +        "type": "string"
        +      },
        +      "event_date": {
        +        "description": "Start date YYYY-MM-DD. Alias: date.",
        +        "type": "string"
        +      },
        +      "event_time": {
        +        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        +        "type": "string"
        +      },
        +      "external_url": {
        +        "type": "string"
        +      },
        +      "idempotency_key": {
        +        "description": "Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes.",
        +        "type": "string"
        +      },
        +      "location": {
        +        "type": "string"
        +      },
        +      "people": {
        +        "description": "People names or person UUIDs to tag (event_people role=with).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "people_names": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_ids": {
        +        "description": "Owned person UUIDs to tag (user-scoped).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_name": {
        +        "type": "string"
        +      },
        +      "request_id": {
        +        "description": "Alias for idempotency_key (preferred by some clients).",
        +        "type": "string"
        +      },
        +      "time": {
        +        "description": "Alias for event_time.",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Event title (required).",
        +        "type": "string"
        +      },
        +      "with": {
        +        "description": "Alias for people.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "title",
        +      "event_date"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        +        "type": "string"
        +      },
        +      "date": {
        +        "description": "Alias for event_date.",
        +        "type": "string"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "end_date": {
        +        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        +        "type": "string"
        +      },
        +      "end_time": {
        +        "description": "Optional end time (same formats as event_time).",
        +        "type": "string"
        +      },
        +      "event_date": {
        +        "description": "Start date YYYY-MM-DD. Alias: date.",
        +        "type": "string"
        +      },
        +      "event_time": {
        +        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        +        "type": "string"
        +      },
        +      "external_url": {
        +        "type": "string"
        +      },
        +      "idempotency_key": {
        +        "description": "Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes.",
        +        "type": "string"
        +      },
        +      "location": {
        +        "type": "string"
        +      },
        +      "people": {
        +        "description": "People names or person UUIDs to tag (event_people role=with).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "people_names": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_ids": {
        +        "description": "Owned person UUIDs to tag (user-scoped).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_name": {
        +        "type": "string"
        +      },
        +      "request_id": {
        +        "description": "Alias for idempotency_key (preferred by some clients).",
        +        "type": "string"
        +      },
        +      "time": {
        +        "description": "Alias for event_time.",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Event title (required).",
        +        "type": "string"
        +      },
        +      "with": {
        +        "description": "Alias for people.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "title",
        +      "date"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlog_expense2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedlog_favorite_song2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedlog_food2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedlog_transaction2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedmerge_people2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedrecord_purchase2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedrecord_sale2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Addedresolve_clarification
    • Addedscore_people_duplicates
    • Addedunlink_people
    • Changedupdate_asset2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedupdate_event2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedupdate_expense2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedupdate_food2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedupdate_inventory_item5 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Broad type: clothing, shoes, bags, jewelry, …"New value: +"Broad type: clothing, instruments, electronics, …"
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
      • changedInput schema / properties / subtype / description
        Previous value: -"Specific subtype (sweatshirt, jacket, T-shirt). Alias: item_type."New value: +"Specific subtype (sweatshirt, jacket, guitar). Alias: item_type."
      • addedInput schema / properties / subtype_confidence
        Added value: +{
        +  "description": "0–1 confidence when subtype is uncertain (agent_inferred).",
        +  "type": "number"
        +}
    • Changedupdate_person2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedupload_asset2 fields changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Alias for request_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Client idempotency key (retries return original result).",
        +  "type": "string"
        +}
    • Changedupload_photo1 field changed
      • changedInput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "content_type": {
        -        "type": "string"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "entity_id": {
        -        "type": "string"
        -      },
        -      "entity_type": {
        -        "type": "string"
        -      },
        -      "image_base64": {
        -        "description": "Base64 image bytes (optional data: URL prefix).",
        -        "type": "string"
        -      },
        -      "set_as_avatar": {
        -        "type": "boolean"
        -      },
        -      "title": {
        -        "type": "string"
        -      },
        -      "url": {
        -        "description": "Remote image URL to fetch and store.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "entity_type",
        -      "entity_id",
        -      "image_base64"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "content_type": {
        -        "type": "string"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "entity_id": {
        -        "type": "string"
        -      },
        -      "entity_type": {
        -        "type": "string"
        -      },
        -      "image_base64": {
        -        "description": "Base64 image bytes (optional data: URL prefix).",
        -        "type": "string"
        -      },
        -      "set_as_avatar": {
        -        "type": "boolean"
        -      },
        -      "title": {
        -        "type": "string"
        -      },
        -      "url": {
        -        "description": "Remote image URL to fetch and store.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "entity_type",
        -      "entity_id",
        -      "url"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "content_type": {
        +        "type": "string"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "entity_id": {
        +        "type": "string"
        +      },
        +      "entity_type": {
        +        "type": "string"
        +      },
        +      "idempotency_key": {
        +        "description": "Alias for request_id.",
        +        "type": "string"
        +      },
        +      "image_base64": {
        +        "description": "Base64 image bytes (optional data: URL prefix).",
        +        "type": "string"
        +      },
        +      "request_id": {
        +        "description": "Client idempotency key (retries return original result).",
        +        "type": "string"
        +      },
        +      "set_as_avatar": {
        +        "type": "boolean"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "description": "Remote image URL to fetch and store.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "entity_type",
        +      "entity_id",
        +      "image_base64"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "content_type": {
        +        "type": "string"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "entity_id": {
        +        "type": "string"
        +      },
        +      "entity_type": {
        +        "type": "string"
        +      },
        +      "idempotency_key": {
        +        "description": "Alias for request_id.",
        +        "type": "string"
        +      },
        +      "image_base64": {
        +        "description": "Base64 image bytes (optional data: URL prefix).",
        +        "type": "string"
        +      },
        +      "request_id": {
        +        "description": "Client idempotency key (retries return original result).",
        +        "type": "string"
        +      },
        +      "set_as_avatar": {
        +        "type": "boolean"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "description": "Remote image URL to fetch and store.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "entity_type",
        +      "entity_id",
        +      "url"
        +    ],
        +    "type": "object"
        +  }
        +]
  9. 1 tool update
    • Changedupdate_inventory_item5 fields changed
      • addedInput schema / properties / category / description
        Added value: +"Broad type: clothing, shoes, bags, jewelry, …"
      • addedInput schema / properties / item_type
        Added value: +{
        +  "description": "Alias for subtype.",
        +  "type": "string"
        +}
      • addedInput schema / properties / name / description
        Added value: +"What the user naturally calls the item."
      • addedInput schema / properties / subtype
        Added value: +{
        +  "description": "Specific subtype (sweatshirt, jacket, T-shirt). Alias: item_type.",
        +  "type": "string"
        +}
      • addedInput schema / properties / tags
        Added value: +{
        +  "description": "Replace tags array (sanitized against category mismatches).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  10. 1 tool update
    • Changedlog_event1 field changed
      • changedInput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        -        "type": "string"
        -      },
        -      "date": {
        -        "description": "Alias for event_date.",
        -        "type": "string"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "end_date": {
        -        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        -        "type": "string"
        -      },
        -      "end_time": {
        -        "description": "Optional end time (same formats as event_time).",
        -        "type": "string"
        -      },
        -      "event_date": {
        -        "description": "Start date YYYY-MM-DD. Alias: date.",
        -        "type": "string"
        -      },
        -      "event_time": {
        -        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        -        "type": "string"
        -      },
        -      "external_url": {
        -        "type": "string"
        -      },
        -      "location": {
        -        "type": "string"
        -      },
        -      "people": {
        -        "description": "People names or person UUIDs to tag (event_people role=with).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "people_names": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_ids": {
        -        "description": "Owned person UUIDs to tag (user-scoped).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_name": {
        -        "type": "string"
        -      },
        -      "time": {
        -        "description": "Alias for event_time.",
        -        "type": "string"
        -      },
        -      "title": {
        -        "description": "Event title (required).",
        -        "type": "string"
        -      },
        -      "with": {
        -        "description": "Alias for people.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "title",
        -      "event_date"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "category": {
        -        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        -        "type": "string"
        -      },
        -      "date": {
        -        "description": "Alias for event_date.",
        -        "type": "string"
        -      },
        -      "description": {
        -        "type": "string"
        -      },
        -      "end_date": {
        -        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        -        "type": "string"
        -      },
        -      "end_time": {
        -        "description": "Optional end time (same formats as event_time).",
        -        "type": "string"
        -      },
        -      "event_date": {
        -        "description": "Start date YYYY-MM-DD. Alias: date.",
        -        "type": "string"
        -      },
        -      "event_time": {
        -        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        -        "type": "string"
        -      },
        -      "external_url": {
        -        "type": "string"
        -      },
        -      "location": {
        -        "type": "string"
        -      },
        -      "people": {
        -        "description": "People names or person UUIDs to tag (event_people role=with).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "people_names": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_ids": {
        -        "description": "Owned person UUIDs to tag (user-scoped).",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "person_name": {
        -        "type": "string"
        -      },
        -      "time": {
        -        "description": "Alias for event_time.",
        -        "type": "string"
        -      },
        -      "title": {
        -        "description": "Event title (required).",
        -        "type": "string"
        -      },
        -      "with": {
        -        "description": "Alias for people.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "title",
        -      "date"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        +        "type": "string"
        +      },
        +      "date": {
        +        "description": "Alias for event_date.",
        +        "type": "string"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "end_date": {
        +        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        +        "type": "string"
        +      },
        +      "end_time": {
        +        "description": "Optional end time (same formats as event_time).",
        +        "type": "string"
        +      },
        +      "event_date": {
        +        "description": "Start date YYYY-MM-DD. Alias: date.",
        +        "type": "string"
        +      },
        +      "event_time": {
        +        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        +        "type": "string"
        +      },
        +      "external_url": {
        +        "type": "string"
        +      },
        +      "idempotency_key": {
        +        "description": "Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes.",
        +        "type": "string"
        +      },
        +      "location": {
        +        "type": "string"
        +      },
        +      "people": {
        +        "description": "People names or person UUIDs to tag (event_people role=with).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "people_names": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_ids": {
        +        "description": "Owned person UUIDs to tag (user-scoped).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_name": {
        +        "type": "string"
        +      },
        +      "time": {
        +        "description": "Alias for event_time.",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Event title (required).",
        +        "type": "string"
        +      },
        +      "with": {
        +        "description": "Alias for people.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "title",
        +      "event_date"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "category": {
        +        "description": "e.g. funeral, family, work, travel. Stored as events.category and event_type.",
        +        "type": "string"
        +      },
        +      "date": {
        +        "description": "Alias for event_date.",
        +        "type": "string"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "end_date": {
        +        "description": "Optional end date YYYY-MM-DD (all-day multi-day).",
        +        "type": "string"
        +      },
        +      "end_time": {
        +        "description": "Optional end time (same formats as event_time).",
        +        "type": "string"
        +      },
        +      "event_date": {
        +        "description": "Start date YYYY-MM-DD. Alias: date.",
        +        "type": "string"
        +      },
        +      "event_time": {
        +        "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time.",
        +        "type": "string"
        +      },
        +      "external_url": {
        +        "type": "string"
        +      },
        +      "idempotency_key": {
        +        "description": "Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes.",
        +        "type": "string"
        +      },
        +      "location": {
        +        "type": "string"
        +      },
        +      "people": {
        +        "description": "People names or person UUIDs to tag (event_people role=with).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "people_names": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_ids": {
        +        "description": "Owned person UUIDs to tag (user-scoped).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "person_name": {
        +        "type": "string"
        +      },
        +      "time": {
        +        "description": "Alias for event_time.",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Event title (required).",
        +        "type": "string"
        +      },
        +      "with": {
        +        "description": "Alias for people.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "title",
        +      "date"
        +    ],
        +    "type": "object"
        +  }
        +]
  11. 1 tool update
    • Changedupload_photo3 fields changed
      • addedOutput schema / properties / asset
        Added value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
      • addedOutput schema / properties / asset_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / avatar_updated
        Added value: +{
        +  "type": "boolean"
        +}

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides a unified context layer for AI agents, enabling ranked search, file management, context bundles, database queries, and connected source access through MCP, all scoped to organizational permissions with citations.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Query ontological research briefings, Universal Language frameworks, and structured AI context documents through 4 MCP tools — including an 8-document Context JSON library sourced from the FusionGirl wiki. Supports x402 micropayments on Base and serves an A2A agent card for inter-agent discovery.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Compiles and routes context from trust-domain sources (session, workdir, knowledge, shared) into unified, trust-tagged context envelopes for agents, without storing any data itself.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.