Skip to main content
Glama

Server Details

Find US property owners, including LLCs, plus owner phones and emails. Needs a DealMachine account.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over the last 24 hours
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
DealMachine/dealmachine-cli
GitHub Stars
0
ChatGPT
–
Claude
–

TDQS

B3.1/5.0

Scored across 129 tools

Disambiguation2/5

The set has many overlapping surfaces: account/usage/subscription/whoami all relate to account state, dealmachine_enrich_latlng and dealmachine_post_enrichment_reverse_geocode both reverse-geocode properties, and prospect operations are split between simplified prospect_* tools and patch/get path-style tools. Lists also have add_items/import/build and several export paths that are easy to confuse.

Naming Consistency2/5

Names mix HTTP-method/path-style tools like dealmachine_patch_lists_list_id with action-oriented tools like dealmachine_property_search and dealmachine_prospect_add. Parameter casing is also inconsistent, with camelCase path fragments such as exportId/locationId alongside snake_case list_id/note_id.

Tool Count1/5

129 tools is far beyond a well-scoped MCP surface and creates substantial selection overhead. Even for a broad real-estate CRM/mail/API domain, this is an extreme tool count that should likely be consolidated into fewer higher-level tools.

Completeness4/5

The surface covers the apparent domain deeply: property/people enrichment and search, lists, prospects, notes/files/photos/tags, mail campaigns and designs, tasks, webhooks, exports, account and usage. There are minor gaps and duplicative paths, but no obvious major lifecycle dead ends.

Available Tools

129 tools
dealmachine_accountA
Read-onlyIdempotent
Inspect

Read your active plan and remaining data credits. Free accounts can use this. After Stripe payment, check plan.is_paid and the current balance before retrying approved enrichment. A checkout URL or the user saying they paid is not proof of activation.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds value beyond that: it confirms free accounts are permitted, surfaces the specific response fields to inspect (plan.is_paid, balance), and warns about a false-positive activation signal — meaningful behavioral context for a gating read.

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 short sentences, front-loaded with the core action, then conditional guidance, then a warning. Every sentence earns its place: what it reads, who can call it, when to call it, and the trap to avoid.

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

Completeness4/5

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

No output schema exists, and the description names the two fields that actually drive the decision (plan.is_paid, balance), which is sufficient for an agent to act. It does not enumerate other plan attributes a caller might see, a minor residual gap for a zero-parameter read.

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 takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The mention of plan.is_paid and balance is output-side context rather than 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?

States a specific verb and resource: read the active plan and remaining data credits. The possessive 'your active plan' implicitly differentiates it from dealmachine_plans (catalog of plans) and dealmachine_usage, though neither sibling is named explicitly.

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 a concrete trigger: after a Stripe payment, call this before retrying an approved enrichment, and check plan.is_paid plus balance. It also gives an explicit negative rule ('a checkout URL or the user saying they paid is not proof of activation'), though it never names dealmachine_checkout or dealmachine_plans as the alternatives.

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

dealmachine_compsB
Destructive
Inspect

Find comparable sales + active listings for up to 25 subject properties. Costs 1 property data credit per subject found. Location/criteria optional (sensible defaults).

NameRequiredDescriptionDefault
criteriaNo
locationNo
property_idsYes

TDQS

B3.4/5.0
Behavior4/5

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

The billing model ("Costs 1 property data credit per subject found") is genuinely useful context not derivable from the annotations, and it partly explains why destructiveHint is true for what looks like a search. It does not disclose return volume per subject or pagination, so it stops short of full behavioral coverage.

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 the capability first, then cost, then optionality. Nothing is redundant and no sentence could be removed without losing information.

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 tool with nested objects, ~23 leaf parameters at 0% schema coverage, and no output schema, the description is too thin: it never says how many comps come back per subject, what the default timeframe/limit is, or what the response shape looks like. An agent would have to guess at defaults and result volume.

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 criteria object alone carries roughly twenty undocumented fields (tolerances, sort_by, include_active_listings, etc.) whose semantics and defaults the description does not supply. The only added meaning is that location and criteria are optional with defaults; the description does not explain what a "subject" versus a returned comp is or what the default limit is.

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: "Find comparable sales + active listings" and bounds the scope to "up to 25 subject properties." An agent can tell this is a comps lookup rather than a general search, though it never names the sibling it supersedes (e.g., dealmachine_property_search vs dealmachine_comps).

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?

"Location/criteria optional (sensible defaults)" tells the agent it may call with property_ids alone, which is real usage guidance, and the credit cost hints at a caution before bulk calls. But there is no when-to-use / when-not-to-use framing against the many other property tools, and no prerequisite or exclusion stated.

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

dealmachine_delete_lists_list_idA
Destructive
Inspect

Delete list. Delete a list and all its items. This action cannot be undone. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered structurally. The description adds genuinely new operational context: the deletion cascades to all items, it is irreversible, it requires explicit confirmation, and writes are never auto-retried — behavior an agent cannot derive from the annotations alone.

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?

Four short sentences, front-loaded with the action and cascade consequence, then the approval gate and retry policy. 'Delete list. Delete a list and all its items.' is mildly redundant but the rest 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 two-parameter destructive tool with no output schema, the description covers the essentials an agent needs: what is destroyed, irreversibility, the confirmation gate, and retry semantics. Only the relationship to sibling delete/patch tools on the same resource is left unstated.

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 50%: confirmed already carries a description ('Set true only after the user approves this change or credit use') and the description reinforces that gating requirement. However, the nested path/list_id structure is not elaborated in the description, so it adds only marginal meaning over the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Delete list') and immediately adds scope that matters: it deletes the list AND all its items. The cascade wording implicitly separates it from dealmachine_delete_lists_list_id_items, but the sibling is never named explicitly, so differentiation requires inference.

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 a concrete precondition for invocation: user approval must be obtained and confirmed=true set before the call. It stops short of naming alternatives (e.g., deleting individual items instead of the whole list) or stating when-not-to-use, so it is clear context without exclusions.

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

dealmachine_delete_lists_list_id_itemsA
Destructive
Inspect

Remove items from list. Remove specific property or person IDs from a list. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety bar is partly met; the description adds genuinely new behavior: an explicit user-approval gate with confirmed=true, the credit-use tie-in, and the fact that writes are never auto-retried. It stops short of describing partial-failure or batch semantics for up to 10,000 IDs.

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?

Four short sentences, front-loaded with the action and then the constraints. No filler, though the redundant first two sentences restate the same removal action rather than adding information.

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 destructive nested-body mutation with no output schema and low parameter coverage, the description covers approval and retry behavior but omits what a caller should expect on partial failures, whether removal is reversible, or how list_id relates to the returned state.

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 33%, and the two body fields carry no inline descriptions beyond the enum values. The description partially compensates by naming both ID kinds (property/person) and the confirmed flag, but it leaves the default id_type of internal_property_id and the 10,000-item cap unaddressed.

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 ('Remove items from list'), then narrows it to 'specific property or person IDs'. This cleanly separates it from dealmachine_delete_lists_list_id (which removes the list itself) and dealmachine_list_add_items.

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

Usage Guidelines3/5

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

The description gives a precondition ('Requires user approval and confirmed=true') but never says when to choose this over list_add_items or the list-level delete, nor what conditions make removal appropriate. Usage context is implied rather than directed.

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

dealmachine_delete_mail_designs_idA
Destructive
Inspect

Delete design. Delete a design. Designs used in active campaigns cannot be deleted. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, readOnlyHint=false, so destruction is known. The description adds genuine context beyond them: approval gating before credit use, the non-deletability of designs in active campaigns, and the fact that writes are never auto-retried. It does not describe effects on recipients/campaigns or reversal, but it substantially supplements 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.

Conciseness3/5

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

The critical approval constraint is buried behind a duplicated first sentence. 'Delete design. Delete a design.' is pure waste, and the useful content (campaign block, approval gate, no-retry notice) follows in a compressed stream without structure.

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 destructive mutation with annotation coverage and no output schema, the definition covers the main agent risks: approval gating, credit use, the active-campaign restriction, and automatic retry behavior. Missing only the failure/error outcomes for a blocked delete or the state of the design afterwards, which are minor for this tool.

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

Parameters3/5

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

With 50% schema coverage, the description only restates that confirmed=true is required, which the schema already says, and says nothing about the nested path.id 'Resource ID' beyond what the schema provides. It adds no syntax, format, or meaning that the schema does not already convey, so the baseline 3 is appropriate.

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 verb+resource is technically present, but the opening two sentences ('Delete design. Delete a design.') are a verbatim restatement of the title and tool name, adding no information about which entity is deleted or its scope. It never mentions the mail-design concept or distinguishes the operation from the patch/get mail_designs siblings that share the resource.

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?

'Designs used in active campaigns cannot be deleted' is an explicit when-not condition, and 'Requires user approval and confirmed=true' is a stated prerequisite. No comparison to update/retrieve alternatives is offered, but the exclusion condition is clear and actionable.

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

dealmachine_delete_mail_return_addresses_idA
Destructive
Inspect

Delete return address. Delete a return address. The default return address cannot be deleted — set another as default first. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered; the description adds real value beyond that with the default-address restriction, the user-approval requirement, and the 'writes are never retried automatically' caveat. It still doesn't say whether the deletion is recoverable or what happens to campaigns referencing the address.

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

Conciseness3/5

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

The substantive content (default-address rule, approval gate, no auto-retry) earns its place, but the first two sentences are near-duplicates of each other, wasting the most prominent position on a redundant restatement of the 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?

For a destructive delete with no output schema, the description covers the prerequisite, the human-approval protocol and retry behavior, which is nearly everything an agent needs to call it safely. The remaining gap is the post-deletion state (recoverability, effect on campaigns using the address).

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 50% and both parameters are already documented in the schema ('Resource ID', 'Set true only after the user approves this change or credit use'). The description restates the confirmed=true approval semantics but adds nothing about the id's format, where to obtain it, or nested-object shape — baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Delete return address'), which cleanly separates it from the patch/post/deletion siblings in the mail_return_addresses family. However, the same sentence is immediately repeated, so the opening reads as filler rather than sharpened 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?

Gives a concrete precondition ('the default return address cannot be deleted — set another as default first'), which implicitly routes the agent to post_mail_return_addresses_id_default, plus the approval/confirmed=true gate. It doesn't state when-not-to-use beyond the default case, or mention alternatives like reassigning rather than deleting, so it stops short of full routing guidance.

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

dealmachine_delete_prospects_idA
Destructive
Inspect

Remove prospect. Archive the prospect and end its mail. Its notes, files, and activity are kept; it can be added again later. Pass ?cascade=false to keep its list memberships and open opportunities. Mail always ends. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
queryNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond destructiveHint=true: it discloses retention semantics (notes, files, activity kept; prospect re-addable), that mail always ends regardless of cascade, that cascade=false preserves memberships/opportunities, that user approval and confirmed=true are prerequisites, and that writes are never auto-retried. These are exactly the consequences an agent needs before a destructive call.

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 action and archiving behavior, then prerequisites. Slightly repetitive — 'end its mail' and later 'Mail always ends' say the same thing, costing one clause.

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, non-idempotent mutation with no output schema, it covers effect, reversibility, data retention, cascade option, approval gate, and retry policy. Nothing material is missing for correct invocation, aside from what a success response looks like, which is minor given no 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?

Schema coverage is only 33% (the `cascade` query param has no schema description), and the description compensates by explaining precisely what cascade=false preserves. It also reinforces the `confirmed` approval gate already documented in the schema. Minor gap: it presents cascade as `?cascade=false` while the schema types it as a string, so an agent gets no guidance on accepted literal 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?

States a specific verb and resource ('Remove prospect', 'Archive the prospect') and immediately clarifies that this is a reversible archive rather than a hard delete. That framing distinguishes it from the granular sibling deletes (files, notes, photos, tags) under the same prospect.

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: use this to remove/archive a prospect, pass `?cascade=false` to preserve list memberships and open opportunities, and the user must approve before calling. No explicit exclusions pointing at an alternative tool (e.g. update vs. remove), but the context is unambiguous enough for correct selection.

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

dealmachine_delete_prospects_id_files_file_idA
Destructive
Inspect

Delete prospect file. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is carried structurally. The description adds genuinely new behavioral context beyond them: a human-approval gate, the required confirmed=true flag, and that writes are never automatically retried. It does not say what happens if confirmed is omitted or what the response looks like, keeping it below a 5.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, then the approval prerequisite, then the retry caveat. No filler or restatement of the 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 destructive single-resource delete with full annotation coverage and no output schema, the description covers the approval workflow and retry behavior, which is what an agent most needs. The vague reference to 'credit use' and the absence of failure-mode detail are minor remaining gaps.

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 50% and the nested path object (id, file_id) is documented only in the schema, not the description. The description does explain the semantics of confirmed as tied to user approval, which adds value, but it leaves the path parameters entirely to 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?

States a specific verb and resource ('Delete prospect file'), which is unambiguous against the delete siblings such as delete_prospects_id_photos_photo_id and delete_prospects_id_notes_note_id because the resource type differs. It does not explicitly contrast itself with those siblings, but the naming is precise enough to select the right tool.

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 states an invocation precondition (user approval and confirmed=true) but gives no guidance on when to choose this over sibling deletion tools or when to avoid it. Usage is implied by the resource name rather than explained.

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

dealmachine_delete_prospects_id_notes_note_idA
Destructive
Inspect

Delete prospect note. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is partly covered. The description adds genuinely new behavior: an approval gate via confirmed=true, a mention of credit use, and the important operational fact that writes are never retried automatically — the latter is exactly the kind of context an agent cannot infer from the schema.

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

Conciseness5/5

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

Three short sentences: the action first, then the safety gate, then the retry caveat. No filler, no restatement of the tool name, and the most decision-critical constraint (approval) 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 two-parameter destructive tool with no output schema, the description covers the destructive nature, the approval requirement, and retry behavior. It doesn't state whether deletion is reversible or what happens to the parent prospect, but the essentials for safe invocation are present.

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 50% schema coverage, the nested path object's id and note_id are already documented inside the schema, and confirmed carries its own description. The description reinforces that confirmed must be true only after approval, which is a slight semantic addition beyond the schema wording, but it adds no format or example detail. Baseline 3 fits.

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 first sentence names a specific verb and resource ("Delete prospect note") that maps unambiguously to the note-level endpoint, distinguishing it from dealmachine_patch_prospects_id_notes_note_id and the GET variant. It stops short of explicitly contrasting with siblings, but the resource specificity is high enough that selection is easy.

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 states the precondition for invoking (user approval plus confirmed=true), which is meaningful usage guidance for a destructive tool. It does not say when to prefer editing a note over deleting one, or mention related operations, so usage context is implied rather than framed against alternatives.

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

dealmachine_delete_prospects_id_photos_photo_idA
Destructive
Inspect

Delete prospect photo. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so safety profile is covered. The description adds genuinely new behavior: a human-approval gate before credit use and the fact that writes are never auto-retried, which tells the agent not to blindly re-issue the call.

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 short sentences with the action front-loaded and the approval/retry constraints immediately after. Minor boilerplate in "before changes or credit use" but nothing that wastes an agent's reading budget.

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 destructive two-parameter delete with no output schema, the description covers the approval workflow and retry semantics. It leaves permanence/irreversibility of the photo deletion and post-delete return state implicit, which the destructiveHint partially absorbs.

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?

Top-level schema coverage is 50%, but every individual property (id, photo_id, confirmed) already has a description and example in the schema, so effective coverage is high. The description only echoes the confirmed=true requirement and does not explain the path identifiers, so it adds little beyond structured data.

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 ("Delete prospect photo"), which cleanly separates it from the file, note, and tag deletion siblings. It does not explicitly name a sibling alternative, but the resource noun is unambiguous enough to route correctly.

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 gives a precondition ("Requires user approval and confirmed=true") that tells the agent how to call it, but not when to choose it over alternatives such as listing photos first via dealmachine_get_prospects_id_photos or whether there is a soft-delete path. Usage is implied rather than guided.

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

dealmachine_delete_prospects_id_tags_tag_idA
Destructive
Inspect

Remove tag from prospect. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds genuinely new context beyond these: the requirement for user approval and confirmed=true, that credit may be consumed, and that writes are never automatically retried. It doesn't state behavior when the tag doesn't exist, but the approval/retry semantics are substantive additions.

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 short sentences, with the core action front-loaded and the gating/retry caveats following. No filler text.

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 destructive mutation with no output schema, the description covers the critical safety facts: approval gating, confirmed flag, and no auto-retry. Minor gaps remain around error behavior and whether the operation is reversible, but nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

The schema already documents all three fields (id, tag_id, confirmed) despite the 50% coverage metric, and the description mostly restates the confirmed requirement rather than adding new meaning. It doesn't clarify whether confirmed gates only writes or also credit use, or what happens if confirmed is omitted.

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 opens with a specific verb and resource: 'Remove tag from prospect.' This distinguishes it from the sibling that adds a tag (dealmachine_post_prospects_id_tags_tag_id) and from bulk setters like prospect_tags_set, though it doesn't explicitly name those 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?

Usage context is implied by 'Requires user approval and confirmed=true before changes,' which tells the agent a confirmation flow is needed. However, there is no explicit when-to-use guidance or routing to alternatives such as dealmachine_prospect_tags_set or dealmachine_get_prospects_id_tags.

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

dealmachine_delete_tags_idA
Destructive
Inspect

Delete tag. Delete a workspace tag. Returns 409 while prospects still carry it unless force=true, which removes it from them first. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
queryNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.1/5.0
Behavior5/5

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

Beyond destructiveHint, it discloses the concrete failure mode (409 while prospects still carry the tag), the cascade semantics of force, the human-approval precondition, and that writes are never auto-retried. This is exactly the context an annotations object cannot carry.

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

Conciseness5/5

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

Four short sentences, each adding a distinct fact, with the destructive/force behavior front-loaded. 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?

A destructive nested-parameter tool with no output schema and no annotations beyond safety hints; the description covers failure modes, cascade risk, and approval. It omits any return shape or what happens on an unknown/missing tag ID, but the essential decision inputs are present.

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 33%, and the description compensates by explaining `force` as a cascading removal from every prospect before deletion and `confirmed` as the approval gate. The `path.id` parameter is covered only by the schema, so it isn't fully supplemented.

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?

Opens with a specific verb+resource ("Delete tag. Delete a workspace tag.") that scopes the operation to workspace-level tags. It doesn't differentiate from the closely-named sibling dealmachine_delete_prospects_id_tags_tag_id, which removes a tag from a single prospect — an agent could confuse the two.

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?

Gives a conditional rule for `force` and states the approval/confirmed gate, which is real usage guidance for the destructive path. But it never names an alternative tool or says when not to use this one (e.g. use the prospect-tag delete to detach from one prospect).

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

dealmachine_delete_tasks_idA
Destructive
Inspect

Delete task. Delete a task. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description adds genuinely new behavioral facts: an approval gate keyed to confirmed=true and the promise that writes are never auto-retried. It does not say whether the deletion is permanent, soft-delete, or what happens to related records, which keeps it below a 5.

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

Conciseness3/5

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

The safety information is front-loaded and the whole thing is short, but the redundant 'Delete task. Delete a task.' repetition wastes the opening sentence that should have carried the differentiating detail. Half the text is noise on a four-sentence description.

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 destructive, nested-object tool with no output schema, the description covers the approval/credit gate and retry policy but leaves out outcome information an agent needs: whether removal is permanent, what a success response looks like, and side effects on the parent record or associated tasks.

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 50%, but both parameters do carry descriptions ('Task ID' and the confirmed approval note). The description reinforces the meaning of confirmed=true but adds nothing about the nested path.id or any format constraints, so it roughly matches rather than compensates for 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 states a specific verb and resource (delete a task), so an agent can tell it apart from dealmachine_patch_tasks_id or dealmachine_get_tasks_id as the destructive removal variant. The opening 'Delete task. Delete a task.' is pure duplication that adds no differentiating detail, but the underlying purpose is unambiguous.

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 states a prerequisite workflow (user approval, then confirmed=true) which effectively tells the agent when it is permitted to call. However, it never contrasts this with the sibling update tool (dealmachine_patch_tasks_id) or explains when deletion is preferable to updating, so the when-to-use-vs-alternatives dimension is only implied.

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

dealmachine_delete_webhooks_idA
Destructive
Inspect

Delete webhook. Removes the webhook and its delivery log. Nothing more is sent to the URL. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the destructiveHint/openWorldHint annotations, it discloses the cascade (delivery log removed), the external side effect ('nothing more is sent to the URL'), the human-approval gate tied to the confirmed flag, and the non-retry policy for writes. These are exactly the facts an agent needs before firing a destructive call.

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?

Four short sentences, front-loaded with the action and its blast radius. Every sentence carries information, though 'or credit use' is a slightly confusing boilerplate fragment for a delete operation.

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

Completeness4/5

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

Covers destruction scope, approval requirements, and retry behavior for a destructive mutation with no output schema. It stops short of stating irreversibility or error behavior for a missing/already-deleted webhook, which an agent would plausibly need.

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 50% and both id and confirmed already carry their own descriptions, so the schema does most of the work. The description reinforces the confirmed gating semantics but says nothing about the required path/id object, leaving the nested-structure requirement to the schema alone.

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 ('Delete webhook') and immediately clarifies scope by noting the delivery log is removed too. An agent can distinguish this from dealmachine_patch_webhooks_id or dealmachine_get_webhooks_id without consulting 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 Guidelines3/5

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

The description gives a prerequisite ('Requires user approval and confirmed=true') but never says when to delete versus patch/disable a webhook, nor what happens on an unknown ID. Usage is implied by the verb rather than articulated against siblings.

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

dealmachine_enrich_addressA
Destructive
Inspect

Finds who owns a US property from its street address, given as full_address or as street, city, state and zip. Returns the property details; with contact_audience=owners it also returns the owners with their names, phones (with DNC flags) and emails. Contacts are left out unless contact_audience is set. Needs a connected DealMachine account with paid access. A matched property costs one property credit and returned contacts cost people credits; nothing is charged when no property matches.

NameRequiredDescriptionDefault
zipNo5-digit ZIP code
cityNoCity name
stateNoTwo-letter state code
fieldsNoDealMachine property field IDs to include in results
streetNoStreet address component only (e.g. "123 Main St"); separate city, state, and ZIP fields are available
full_addressNoComplete address string (e.g. "123 Main St, Austin, TX 78701"), as an alternative to the parsed address fields
contact_audienceNo`none` returns property-only data with zero people credits; other values include matching contacts

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, and the description explains why: a matched property consumes one property credit and contacts consume people credits, with no charge on a miss. It also discloses the auth requirement (connected account with paid access) and that DNC flags accompany phone numbers — real context 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?

Four tight sentences: purpose and input modes first, then output shape, then the contact gating rule, then cost and prerequisites. No filler, and the credit-cost warning is placed where an agent will see it before invoking.

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 credit-consuming, 7-parameter tool with no output schema and destructiveHint=true, the description covers auth, cost, no-match behavior, and what gets returned. The only gap is that it never explains the 'fields' filter or the relative cost of the owners_and_family/renters/residents audience values.

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 baseline is 3. The description adds meaningful semantics for contact_audience, explaining that contacts are omitted unless it is set and that 'none' costs zero people credits, but it says nothing about the 'fields' array parameter that controls which property fields are returned.

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 opens with a specific verb and resource: 'Finds who owns a US property from its street address', and enumerates the accepted address input modes. That address-keyed framing implicitly separates it from siblings like dealmachine_enrich_apn and dealmachine_enrich_latlng, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage conditions are implied rather than stated: a connected DealMachine account with paid access is required, and contacts only come back when contact_audience is set. Nothing tells the agent when to prefer this over the APN- or lat/lng-based enrichment siblings, so routing between them is left to inference.

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

dealmachine_enrich_apnA
Destructive
Inspect

Finds who owns a property from its Assessor's Parcel Number: one apn, or up to 250 in data sharing the same location and options. A location narrows the match, and APN formatting is normalized automatically. Returns the property details; with contact_audience=owners it also returns the owners with their names, phones (with DNC flags) and emails. Contacts are left out unless contact_audience is set. Needs a connected DealMachine account with paid access. Each matched property costs one property credit and returned contacts cost people credits.

NameRequiredDescriptionDefault
apnNoAssessor's Parcel Number (e.g. "0123-45-6789")
dataNoBatch of parcel lookups sharing the location and requested fields. Prefer one batch when the user requests multiple lookups.
fieldsNoDealMachine property field IDs to include in results
locationNoOptional location to narrow results, including a city place ID
contact_audienceNo`none` returns property-only data with zero people credits; other values include matching contacts

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark the tool as non-read-only/destructive, and the description goes further by disclosing paid-account requirements and per-property/per-contact credit costs, plus that returned phones carry DNC flags. It doesn't discuss rate limits or error behavior, so not a 5.

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

Conciseness4/5

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

One dense paragraph front-loads purpose and batch limits, then layers cost and return details. Every sentence adds information, though the block could be split for faster scanning.

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

Completeness4/5

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

Covers return contents, account prerequisites, credit costs, and contact behavior, which is substantial for a 5-param tool without an output schema. It leaves out error/empty-result handling and how the fields array influences returned 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 100%, so baseline is 3; the description adds value by explaining that APN formatting is normalized automatically, that data batches share location/options, and how contact_audience governs contact inclusion.

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 ('Finds who owns') and resource ('Assessor's Parcel Number'), plus batch scope (one apn or up to 250 in data). This clearly differentiates it from siblings like enrich_address or enrich_latlng, which take other identifiers.

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?

Provides operational context—batch limit, location narrowing, and that contacts are omitted unless contact_audience is set—but never says when to choose this tool over enrich_address or enrich_latlng. Usage is implied by the APN input rather than explicitly guided.

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

dealmachine_enrich_emailA
Destructive
Inspect

Looks up a person by email address (email, required). Returns their name, contact information including phones and emails, and demographics; include_properties=true adds the properties associated with them. Needs a connected DealMachine account with paid access. Each matched person costs one people credit and each included property one property credit; nothing is charged when no one matches.

NameRequiredDescriptionDefault
emailYesEmail address
fieldsNoDealMachine field IDs; people fields return on each person, while property fields return under property and may cost a property credit
locationNoOptional match location by state, ZIP, county, or numeric city place ID
include_propertiesNoInclude associated properties for each matched person. Costs 1 property data credit per property.

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already flag the operation as non-read-only and destructive-ish, so the description's job is to explain the real side effect, which it does well: one people credit per matched person, one property credit per included property, and no charge on a miss. What is left unexplained is why destructiveHint is set on what reads as an enrichment lookup, and whether results are cached or metered on repeat calls.

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, front-loaded with the primary action and input, then return shape, then prerequisites and cost. No sentence is redundant and none restates the title verbatim.

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?

Despite having no output schema and a nested location parameter, the description covers inputs, what the response contains, the optional property expansion, and the billing behavior. An agent has everything needed to decide to call it and to predict the charge.

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 all four parameters including the nested location object are documented structurally, which sets the baseline at 3. The description reinforces the email requirement and the credit consequence of include_properties, but adds nothing about the 'fields' whitelist or how location narrows a match.

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 ('looks up a person by email address'), names the required key, and enumerates what comes back (name, contact info, demographics, optional properties). Against siblings like dealmachine_enrich_name, dealmachine_enrich_phone, and dealmachine_enrich_address, the lookup key alone makes the distinction unambiguous.

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 operating context: a connected paid DealMachine account is required, and the cost model is spelled out per match. It does not explicitly route the agent away from sibling lookups when the identifier is a phone or name rather than an email, so the when-not guidance is only implied.

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

dealmachine_enrich_latlngA
Destructive
Inspect

Finds the property closest to a latitude and longitude, within 300 feet, and who owns it. Returns the property details; with contact_audience=owners it also returns the owners with their names, phones (with DNC flags) and emails. Contacts are left out unless contact_audience is set. Needs a connected DealMachine account with paid access. A matched property costs one property credit and returned contacts cost people credits; nothing is charged when no property matches.

NameRequiredDescriptionDefault
fieldsNoDealMachine property field IDs to include in results
latitudeYesLatitude
longitudeYesLongitude
contact_audienceNo`none` returns property-only data with zero people credits; other values include matching contacts

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: the 300-foot match radius, the requirement of a connected DealMachine account with paid access, the per-match property credit and per-contact people-credit cost model, and the fact that nothing is charged on a no-match. That credit-charging model is exactly the destructive consequence implied by destructiveHint=true, and it is disclosed explicitly rather than left to the annotation.

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 sentences, each carrying distinct information: what it matches, what it returns, the contact gating rule, and the preconditions/cost. Front-loaded with the core action and 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?

There is no output schema, so the description correctly compensates by describing the return shape (property details, and owner contacts with DNC flags when requested). It covers prerequisites and cost but says nothing about match ambiguity, tie-breaking between multiple properties inside 300 feet, or the practical meaning of the fields array.

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 100% schema coverage the schema already documents all four parameters, so the baseline is 3. The description earns a bump by explaining the behavioral effect of contact_audience (owners yields names/phones/emails; unset yields property-only) rather than just restating the enum 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?

States a specific verb and resource (finds the property closest to a lat/lng and its owner) plus a concrete scope constraint: within 300 feet. The coordinate-based input inherently separates it from the address/APN/name/phone enrichment siblings, so an agent can pick it without opening a schema.

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

Usage Guidelines4/5

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

Gives clear conditional guidance: contacts are omitted unless contact_audience is set, and contact_audience=owners is the path to get owner names, phones with DNC flags, and emails. It stops short of naming sibling alternatives (e.g. enrich_address for a street address, or reverse_geocode), so the agent must infer which enrichment tool fits when it has an address instead of coordinates.

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

dealmachine_enrich_nameA
Destructive
Inspect

Finds people by name: one last_name, optionally with first_name and middle_initial, or up to 250 names in data sharing location, pagination and options. A location narrows the match. Returns paginated people with contact information including phones and emails; include_properties=true adds the properties associated with them. estimate_cost=true returns people and associated-property counts without records or credit use. Needs a connected DealMachine account with paid access. Each returned person costs one people credit and associated properties cost property credits; batching reduces requests, not credits.

NameRequiredDescriptionDefault
dataNoBatch of name lookups sharing location, fields and pagination. Prefer batching multiple requested lookups.
pageNoPage number (default: 1)
fieldsNoDealMachine field IDs; people fields return on each person, while property fields return under property and may cost a property credit
locationNoOptional match location by state, ZIP, county, or numeric city place ID
per_pageNoResults per page (default: 25, max: 100)
last_nameNoLast name (required for a single lookup)
first_nameNoFirst name to narrow results
estimate_costNoPreview people counts and, when include_properties=true, associated property counts and estimated credits without returning data or consuming credits
middle_initialNoMiddle initial (single character) to narrow results
include_propertiesNoInclude associated properties for each person. Costs 1 property data credit per property.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare readOnly=false/destructive=true/idempotent=false; the description adds the real behavioral context: a paid DealMachine account is required, each returned person costs one people credit, associated properties cost property credits, estimate_cost consumes no credits, and batching reduces requests but not credits. That is meaningful context beyond the annotations, though it never explicitly explains the write/destructive surface implied by destructiveHint=true.

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 core action and mode split, then returns, then cost/auth constraints. Content is dense but every sentence carries information; the phrase 'or up to 250 names in data sharing location, pagination and options' is slightly garbled but still readable.

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

Completeness4/5

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

With no output schema, the description compensates by describing return shape (paginated people with phones and emails, optional attached properties) and by covering auth, credit economics, and the estimate-cost preview. For a 10-parameter, nested-object enrichment tool this is close to complete; only error/pagination edge behavior is unaddressed.

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 baseline is 3, but the description adds cost semantics the schema does not carry: include_properties=true returns associated properties and costs property credits, and estimate_cost=true returns counts without records or credit use. It also frames the data array as a shared-location batch, which is more than a parameter restatement.

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 and resource ('Finds people by name') and immediately distinguishes the lookup mode (single last_name with optional first_name/middle_initial) from the batch mode (up to 250 names in data). This clearly separates it from sibling enrichment tools such as enrich_email and enrich_phone.

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 selection guidance between single lookup, batch, adding a location to narrow, and estimate_cost=true as a dry run. It does not name the other people-oriented siblings (people_search, people_count, people_get) as alternatives, so exclusions remain implicit rather than explicit.

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

dealmachine_enrich_phoneA
Destructive
Inspect

Looks up a person by phone number (phone, required). Returns their name, contact information including phones and emails, and demographics; include_properties=true adds the properties associated with them. Needs a connected DealMachine account with paid access. Each matched person costs one people credit and each included property one property credit; nothing is charged when no one matches.

NameRequiredDescriptionDefault
phoneYesPhone number (e.g. "5551234567" or "+15551234567")
fieldsNoDealMachine field IDs; people fields return on each person, while property fields return under property and may cost a property credit
locationNoOptional match location by state, ZIP, county, or numeric city place ID
include_propertiesNoInclude associated properties for each matched person. Costs 1 property data credit per property.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and openWorldHint=false, so the description's real contribution is the billing model: one people credit per matched person, one property credit per included property, and no charge on a miss. That cost/auth detail is exactly the kind of behavior an agent needs before spending credits. It does not explain why the call is flagged destructive or how multiple matches are resolved.

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 sentences with the core action first, then the return shape, then billing. Nothing is padding, though the semicolon-chained billing clause is dense and could be split for scanability.

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

Completeness4/5

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

With no output schema, the description correctly takes on the job of listing returned fields (name, contact info, demographics, optional properties). Auth and cost are covered, but ambiguity around multiple phone matches and the effect of the location parameter is left unresolved.

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 phone formatting, the fields array, and the location object are already documented. The description only restates the include_properties cost and the required phone, which the schema already carries, and says nothing about how location narrows matches. 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?

States a specific verb and resource plus the identifier ('Looks up a person by phone number'), which cleanly separates it from enrich_name, enrich_email, enrich_address and enrich_apn. It also enumerates what comes back, so the agent knows the output shape before calling.

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

Usage Guidelines3/5

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

Usage context is implied through the paid-account prerequisite and the credit model, which tells the agent this is a metered enrichment call. However, it never names an alternative (e.g., people_search or enrich_name) or states when not to use this tool, so no explicit routing guidance exists.

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

dealmachine_fieldsA
Read-onlyIdempotent
Inspect

Returns available DealMachine data fields with field ID, source type, data type, and description. A search value performs a fuzzy match across field metadata; without it, the response includes all pages. This read-only request is free of data credit charges, but an uncached read counts toward the API request limit. Reuse these definitions for subsequent lookups; identical requests are cached for 15 minutes.

NameRequiredDescriptionDefault
searchNoFuzzy concept search across field metadata
group_idNoFilter by group ID
source_typeNoFilter by source type

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, and the description adds cost and limit semantics that annotations cannot express: no data credit charges, uncached reads count toward the API request limit, and identical requests are cached for 15 minutes. It also discloses pagination behavior (omitting search returns all pages), which materially affects invocation.

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 sentences, front-loaded with what is returned, then filtering behavior, then cost/limit implications, then caching. Every sentence carries information an agent needs; no filler or restatement of the title.

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 no output schema, the description correctly covers the return shape (field ID, source type, data type, description) and pagination behavior. For a zero-required-parameter read-only listing tool, this is complete enough to invoke confidently without further exploration.

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 baseline is 3, but the description adds meaning beyond the schema: 'search' is a fuzzy concept match across field metadata rather than an exact filter, and omitting it changes scope from filtered to all pages. It does not elaborate on group_id or source_type semantics, keeping it just short of a 5.

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 ('Returns available DealMachine data fields') and enumerates the returned attributes (field ID, source type, data type, description). This is clearly a metadata/schema-discovery tool, distinguishable from sibling search tools like dealmachine_property_search or dealmachine_people_search that consume these fields.

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 context: use it to obtain field definitions, and 'Reuse these definitions for subsequent lookups' tells the agent to consult this before other calls. It does not explicitly name which siblings consume these fields or when to prefer a different discovery endpoint, so it falls short of full when/when-not routing.

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

dealmachine_filtersA
Read-onlyIdempotent
Inspect

Returns DealMachine search filters with filter IDs, source types, operators, and valid options. A search value performs a fuzzy concept match across labels, aliases, and option values; without it, the response includes all pages. This read-only request is free of data credit charges, but an uncached read counts toward the API request limit. Reuse these definitions for subsequent lookups; identical requests are cached for 15 minutes.

NameRequiredDescriptionDefault
searchNoFuzzy concept search across filter metadata
group_idNoFilter by group ID
source_typeNoFilter by source type (properties or people)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful operational context beyond annotations: no data-credit charge, uncached reads count toward the API request limit, and identical requests are cached for 15 minutes.

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 and compact: four sentences cover purpose, search behavior, cost/rate-limit behavior, and cache reuse. Every sentence supplies useful information without 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?

With no output schema, the description still names the returned filter fields and explains search, billing, rate-limit, and caching behavior. It is sufficient for correct invocation, with the main gap being no explicit routing against sibling metadata tools.

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 all parameters are already documented. The description adds meaningful semantics for `search` by naming fuzzy-match targets (labels, aliases, option values) and clarifies the no-search default of returning all pages.

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: it returns DealMachine search filters and enumerates the returned attributes. It is clear, but it does not explicitly distinguish this from sibling metadata tools such as dealmachine_fields.

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?

Explains that including `search` performs fuzzy matching while omitting it returns all pages, and recommends reusing definitions because caching applies. It gives no explicit when-to-use or when-not guidance versus sibling tools such as dealmachine_fields.

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

dealmachine_get_activity_activity_idA
Read-onlyIdempotent
Inspect

Get activity. Retrieve the full details of a specific activity record, including the complete original request parameters and paginated entity IDs. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

A3.7/5.0
Behavior4/5

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

The annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful context by saying it returns the original request parameters and paginated entity IDs, and that it does not spend credits, which is not covered by 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 appropriately short and front-loads the key retrieval behavior. The opening 'Get activity' is redundant with the tool name, but the remaining sentences earn their place by describing return contents and cost behavior.

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 rich annotations, one parameter, and no output schema, the description is largely complete: it says what record is retrieved and what the response includes. It could be stronger if it mentioned error behavior or pagination mechanics, but no major gap prevents correct invocation.

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?

There is only one required parameter, and the schema includes an example and short description for activity_id. However, the reported schema description coverage is 0%, and the tool description adds no extra guidance on how to obtain or format the activity ID.

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: retrieve the full details of a specific activity record. It implies retrieval by ID, distinguishing it from activity-search siblings, but does not explicitly name or contrast with those 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 description implies that this tool is for fetching a known activity record when full details are needed, but it gives no explicit when-to-use guidance, prerequisites, or alternatives such as searching for an activity first.

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

dealmachine_get_addresses_autocompleteA
Read-onlyIdempotent
Inspect

Autocomplete property addresses. Return fast, bounded street-address suggestions from DealMachine property data. Every suggestion includes a DealMachine property ID and may include a normalized city or county location. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered; the description adds context that is NOT in annotations: results are 'fast' and 'bounded', every hit carries a DealMachine property ID, and the call spends no credits (a real cost concern on a paid-data API with enrich siblings). Return-shape detail is a bonus given there is no output schema.

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?

Four tight sentences, front-loaded with the action and scope. Minor waste: 'Retrieves data without changing records' largely restates readOnlyHint/destructiveHint, though the 'or spending credits' clause 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?

With no output schema, the description correctly compensates by stating what each suggestion contains (property ID, optional normalized city/county). Remaining gaps are minor: how state/lat/lng combine with the text query to affect ranking, and what an empty result looks like.

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 description says nothing about the query/limit/state/latitude/longitude parameters. The reported 0% coverage reflects the undescribed top-level 'query' wrapper, but the nested fields are in fact documented in the schema (min 2 chars, max 10 suggestions, two-letter state, lat/lng used to rank nearby addresses), so the agent is not blind — just unmapped to the description. Baseline 3.

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

Purpose4/5

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

Specific verb+resource: 'Autocomplete property addresses. Return fast, bounded street-address suggestions from DealMachine property data.' The word 'autocomplete' plus 'partial street address' clearly separates it from full-query siblings like property_search or location_search, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is implied by 'autocomplete' / 'fast, bounded suggestions' (typeahead-style lookup on a partial string), but the description never states when to use this versus dealmachine_property_search, dealmachine_location_search, dealmachine_post_addresses_validate, or the dealmachine_enrich_* endpoints. The agent must infer the routing.

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

dealmachine_get_driving_drivesC
Read-onlyIdempotent
Inspect

List drives. List recorded drives for the workspace. Each drive reports how many prospects were added. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'retrieves data without changing records' largely repeats structured data. The 'without spending credits' claim is genuinely additive cost context, and the prospect-count note hints at payload shape, but pagination behavior and the mode/driver/date filtering semantics go undisclosed.

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?

Four short sentences with the core purpose front-loaded. 'List drives. List recorded drives for the workspace.' is mildly redundant, but nothing is 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 no output schema, no annotations covering payload shape, and a nested parameter object at 0% description coverage, the description should explain the mode filter, pagination and date/driver filters. It instead stops at the resource name and a one-line return hint.

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 single parameter is a nested query object with six undocumented sub-fields (mode enum, page, per_page, started_after, started_before, driver_user_id). The description mentions none of them, so an agent gets no meaning beyond bare property names.

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 ('List recorded drives for the workspace') and notes what each item reports. It does not explicitly distinguish itself from the sibling dealmachine_get_driving_drives_id, but the plural/workspace scope makes the difference inferable.

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 statement of when to use this versus dealmachine_get_driving_drives_id for a single drive, and no guidance on filtering or prerequisites. Only the implicit 'for the workspace' scope hints at usage.

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

dealmachine_get_driving_drives_idA
Read-onlyIdempotent
Inspect

Get drive. Get a recorded drive with its route, events, visits, and links to prospects added during it. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new context — 'without changing records or spending credits' — which matters in a toolset where enrichment siblings consume credits, so an agent learns this call is free.

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 substantive sentences that are front-loaded and earn their place. The leading 'Get drive.' fragment merely restates the annotation title and is dead weight.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so by naming the four payload sections. For a one-parameter read tool that is nearly sufficient; only the relationship to the list endpoint and the ID source are 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 description adds nothing about the single `path.id` parameter, and the reported schema description coverage is 0%. However, the nested schema itself documents the id with examples (`drive_session_501`, `drive_route_7`), so an agent can still call it correctly — a minimum-viable 3.

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

Purpose4/5

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

States a specific verb and resource ('Get a recorded drive') and enumerates the returned payload (route, events, visits, prospect links), which goes beyond the title. It does not explicitly distinguish itself from the sibling dealmachine_get_driving_drives list endpoint, leaving the singular-vs-collection distinction to inference.

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

Usage Guidelines3/5

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

Usage is only implied: fetching a single drive presupposes an ID, but the description never says to use dealmachine_get_driving_drives first to obtain one, nor does it state any exclusions or preconditions. No explicit when-to-use guidance is present.

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

dealmachine_get_exportsB
Read-onlyIdempotent
Inspect

List exports. List past exports for your organization with optional pagination and status filtering. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered structurally. The description adds useful context that it doesn't spend credits, but says nothing about result ordering, page sizes, or response shape.

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 short sentences, front-loaded with the core action and no filler. The opening 'List exports.' slightly duplicates the following sentence, a minor redundancy.

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?

No output schema and a nested parameter object, yet the description doesn't clarify the query wrapper or what a returned export record contains. It covers the main intent but leaves the calling contract partly implicit.

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?

Context reports 0% schema description coverage, so the description should compensate. It mentions pagination and status filtering but doesn't explain the nested 'query' wrapper, the limit range, or offset semantics, leaving real gaps.

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 ('List past exports for your organization'), which clearly distinguishes this from dealmachine_get_exports_exportId (single export fetch). Scope is stated, but no sibling is named explicitly.

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

Usage Guidelines3/5

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

Implies usage for browsing export history, with pagination and status filtering mentioned, but gives no explicit when-to-use vs the sibling get_exports_exportId, nor 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.

dealmachine_get_exports_exportIdA
Read-onlyIdempotent
Inspect

Get export by ID. Retrieve a single export by its ID. Only exports belonging to your organization are accessible. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the description's 'without changing records or spending credits' is partly redundant — but it usefully extends that to the credit/billing model, which annotations cannot express. The organization-scoping constraint ('only exports belonging to your organization are accessible') is genuinely new behavioral context an agent needs to predict authorization failures.

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

Conciseness3/5

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

The first two sentences ('Get export by ID. Retrieve a single export by its ID.') are near-verbatim restatements of each other and of the annotation title, consuming space without adding information. The remaining two sentences do earn their place, but the opening is padded.

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, annotated, single-parameter read there is nothing critical missing, but the description never says what an export record looks like beyond the field name — status, progress, or a download reference — and no output schema exists to fill that in. An agent calling this cannot anticipate what it will receive.

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 0% and the single parameter is nested inside a 'path' object with an 'exportId' string — a shape the description does not explain at all. 'By its ID' adds nothing the schema does not already say, and gives no hint about ID format or where an agent obtains one (presumably from dealmachine_get_exports).

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?

Specific verb + resource ('Get/Retrieve a single export by its ID'), and the word 'single' implicitly separates it from the sibling list tool dealmachine_get_exports. It never names that sibling, so an agent must infer the distinction from plurality alone.

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

Usage Guidelines3/5

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

Usage is only implied: you need an export ID to call it. There is no explicit statement of when to use this versus dealmachine_get_exports to enumerate exports, nor any note about what to do if the ID is unknown.

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

dealmachine_get_listsB
Read-onlyIdempotent
Inspect

List all lists. List all saved lists for your organization with pagination, search, filtering, and sorting. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so most of the safety profile is structured data. The description adds one genuinely new fact not in annotations – that reads do not spend credits – but says nothing about pagination limits or the default result ordering beyond what the schema shows. With annotations lowering the bar, a 3 fits.

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

Conciseness3/5

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

Three short sentences, but the first ('List all lists.') merely restates the title and is immediately superseded by the second sentence. Folding it into the scoped sentence would make the definition tighter with no loss.

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 no-required-parameter, read-only collection endpoint with annotations covering side effects and no output schema, this is nearly enough: it states scope, capabilities and credit neutrality. Only the shape/nature of returned list objects is unaddressed, which is a minor gap for a list tool.

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

Parameters3/5

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

The description names the four capability axes present in the nested query object (pagination, search, filtering, sorting), which maps loosely onto page/per_page, search, source_type and sort. It adds no defaults, enum values or format detail beyond the schema's own per-field descriptions, so it neither compensates fully nor is useless.

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 ('List all saved lists for your organization') and scopes the result set to the caller's org. It distinguishes itself implicitly from the single-list sibling dealmachine_get_lists_list_id by saying 'all lists', but never names an alternative explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: the phrase 'list all lists' suggests it is the collection-level read, contrasting with the *_list_id getter, but no when-to-use/when-not guidance or alternative is named. An agent must infer routing from sibling names.

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

dealmachine_get_lists_list_idA
Read-onlyIdempotent
Inspect

Get list by ID. Retrieve a list by its ID including build status, progress, and total count. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false. The description's 'without changing records or spending credits' restates the read-only profile but adds a genuinely new fact — no credit consumption — and discloses the returned content. It stays quiet on pagination/error behavior for a nonexistent ID.

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 short sentences, front-loaded with the core action and no filler. Opening 'Get list by ID' mildly duplicates the title, which costs a point but nothing is wasted.

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?

A one-parameter, read-only lookup with no output schema; the description covers what is returned (status, progress, count) and the safety/credit profile, which is enough for an agent to call it correctly. Only the ID-discovery path is left implicit.

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 0%, but there is a single nested string parameter (list_id) described as 'List ID'. The description adds only 'by its ID', so it does not compensate for the zero coverage — though the parameter is nearly self-evident. Baseline 3.

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

Purpose4/5

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

States a specific verb (Get/Retrieve) and resource (list by ID) and enumerates what the payload contains (build status, progress, total count). This distinguishes it clearly from the plural dealmachine_get_lists and from dealmachine_get_lists_list_id_items, though it never names those 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?

Usage is only implied: reaching for this tool when you already have a list_id and want its detail. There is no explicit when-to-use, when-not-to-use, or alternative named (e.g. use get_lists to discover IDs first, use ..._items to fetch members).

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

dealmachine_get_lists_list_id_itemsB
Read-onlyIdempotent
Inspect

Get list items. Retrieve paginated items in a list. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes
queryNo

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new information not in the annotations: that this call spends no DealMachine credits, which is meaningful given the presence of credit-consuming enrich/export endpoints. It stops short of describing pagination behavior or result shape.

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

Conciseness3/5

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

At three short sentences it is not bloated, but the first two sentences restate each other ('Get list items' / 'Retrieve paginated items in a list') before the useful credit note. Trimming the redundant restatement would make it tighter.

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 read with full annotation coverage and no output schema, the definition is adequate to call the tool. It leaves gaps around where list_id comes from and what an 'item' contains, which matters for an agent deciding how to use the results.

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

Parameters3/5

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

Schema coverage is reported as 0% at the top level, but the nested fields (list_id, page, per_page) do carry descriptions in the schema. The description only echoes 'paginated', adding no format, default, or limit detail beyond what the schema already states. Baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource ('Get list items', 'Retrieve paginated items in a list'), which clearly separates it from list-level tools like dealmachine_get_lists. However, it never names the relevant siblings (dealmachine_get_lists_list_id, dealmachine_list_add_items) so the agent must infer the boundary itself.

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 statement of when to use this tool versus alternatives, no prerequisites (e.g., a list_id must come from dealmachine_get_lists), and no exclusions. The only context given is about credits, which is behavioral rather than guidance on tool selection.

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

dealmachine_get_locations_locationIdB
Read-onlyIdempotent
Inspect

Get location. Retrieve a specific location by its ID. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so "without changing records" largely restates structured data. The one genuine addition is "without spending credits" — a cost disclosure an agent cannot get from annotations and that matters for call budgeting. It still says nothing about what happens on an unknown ID or the shape of the returned location.

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?

Short and front-loaded, but "Get location." followed immediately by "Retrieve a specific location by its ID." is a redundant restatement that could be collapsed. The remaining sentences are efficient and earn their 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?

For a single-parameter, read-only, idempotent lookup with no output schema, this covers what an agent needs: what it fetches, that it is identified by ID, and that it costs nothing and mutates nothing. Depth beyond this is optional for such a simple tool.

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

Parameters3/5

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

Schema description coverage registers as 0% at the top level, but the nested locationId property does carry both a description and an example (loc_county_48201 / loc_city_7333). The prose adds only "by its ID" — no format rules, prefix semantics, or whether city/county/state IDs are all valid. Baseline 3 is appropriate since the schema itself handles most of the load.

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 ("Retrieve a specific location by its ID"), which is unambiguous about what comes back. It does not name the obvious sibling dealmachine_location_search, so an agent must infer that the search tool is the way to discover an ID rather than inventing one.

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 / when-not-to-use guidance and no named alternative. The phrase "by its ID" weakly implies a lookup-once-you-have-an-ID pattern (with dealmachine_location_search as the discovery path), but that inference is left entirely to the agent.

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

dealmachine_get_mail_analytics_summaryB
Read-onlyIdempotent
Inspect

Get mail analytics summary. Get account-wide mail analytics: totals across all campaigns (sent, delivered, failed, opens, unique openers, average open rate) plus a paginated list of campaigns with per-campaign engagement. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description's 'without changing records or spending credits' partly restates that but adds genuinely new context — that mail operations consume credits and this call does not — and it discloses the shape of the response (totals plus paginated campaign list), which matters since there is no output schema.

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 sentences, front-loaded with the core purpose and zero wasted prose. The opening 'Get mail analytics summary.' is a near-verbatim restatement of the title and could be dropped, but the remainder is dense and useful.

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

Completeness4/5

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

With no output schema, the description usefully describes the return payload (account-wide totals: sent, delivered, failed, opens, unique openers, average open rate, plus paginated per-campaign engagement). Annotations cover the safety profile and the nested schema covers inputs, so an agent has enough to invoke it correctly; only the date-filter semantics go unmentioned in prose.

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 description says nothing about page, per_page, start_date, end_date, or launched_only. In practice the nested schema carries a description for each of the five properties (including that dates filter by campaign launch date and are inclusive), so the parameter semantics are not lost — but the description contributes no additional meaning beyond the nested object, which is especially relevant given the reported 0% top-level coverage.

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

Purpose4/5

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

The description gives a specific verb and resource ('Get account-wide mail analytics') and enumerates what is returned: aggregate totals plus a paginated list of campaigns with per-campaign engagement. The 'account-wide' qualifier implicitly separates it from per-campaign siblings like dealmachine_get_mail_campaigns_id_analytics, but no sibling is named explicitly.

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 statement of when to choose this over dealmachine_get_mail_analytics_timeseries, dealmachine_get_mail_campaigns, or the per-campaign analytics tools. The only steer is the phrase 'account-wide', which implies scope but leaves the agent to infer the routing decision.

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

dealmachine_get_mail_analytics_timeseriesA
Read-onlyIdempotent
Inspect

Get mail analytics time series. Get an account-wide time series for a single metric — sent, delivered, scans (QR/link views), or open_rate — bucketed by day or week. Missing buckets are filled with zeroes so the series is continuous. For "scans", each point also includes secondary_value (total scans vs unique properties). Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful behavioral context beyond annotations: missing buckets are zero-filled, scans include secondary_value, and the call does not spend credits.

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?

Front-loaded and compact: the core purpose comes first, followed by metric semantics and two important behavioral details. 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?

With no output schema, the description still explains enough about the returned series: it is continuous due to zero-filled buckets, and scans include secondary_value. It does not describe response envelope or date-label format, but is otherwise complete for correct 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?

The description adds meaning beyond the schema by defining scans as QR/link views and explaining secondary_value for that metric. It restates the metric and day/week bucket choices, but does not add guidance for the date-range 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?

States a specific verb and resource: get an account-wide mail analytics time series for a single metric, bucketed by day or week. The purpose is clear, but it does not explicitly contrast with sibling tools such as the mail analytics summary or campaign analytics.

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

Usage Guidelines3/5

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

Usage is implied: use this when you need a metric charted over time. However, it gives no explicit when-to-use versus summary or campaign-analytics alternatives, and no exclusions or prerequisites.

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

dealmachine_get_mail_campaignsA
Read-onlyIdempotent
Inspect

List campaigns. List mail campaigns for your organization with optional filtering. Each campaign has one of six statuses: draft, ready, active, paused, ended or archived. Use accepting_properties=true to list the campaigns properties can be added to now. Archived campaigns are excluded unless status=archived is supplied. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely non-obvious behavior beyond them: archived campaigns are hidden by default, and the call spends no mail credits — a domain-specific cost signal that matters in this tool family.

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 core action, then behavior, then the credit note. Slightly redundant opening ("List campaigns" followed immediately by "List mail campaigns..."), but every later sentence carries real 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 filtered list tool with no output schema and all-optional nested params, the description covers statuses, default exclusions and the cost profile. Missing are result ordering/pagination expectations and what a campaign object contains, though the absence of an output schema lowers that burden.

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 nested schema already documents page, search, per_page, status and accepting_properties in detail, so the description mostly restates them. It does add value by explaining the default archived exclusion and the accepting_properties predicate, but it omits search/pagination semantics and never mentions the legacy completed/cancelled enum values present in the schema.

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

Purpose5/5

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

States a specific verb and resource ("List mail campaigns for your organization") plus the scope of filtering, which cleanly separates it from dealmachine_get_mail_campaigns_id (single campaign) and the mail analytics/design/return-address list tools. An agent can identify the right tool without opening a schema.

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

Usage Guidelines4/5

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

Gives concrete usage conditions: use accepting_properties=true to find campaigns that can take properties now, and supply status=archived to see archived campaigns. It does not explicitly name the sibling to use for a single campaign or for analytics, so it stops short of full alternative routing.

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

dealmachine_get_mail_campaigns_idA
Read-onlyIdempotent
Inspect

Get campaign. Get a single campaign by ID with steps. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered; the description adds the domain-specific note that it does not spend credits, which matters for a mail-campaign tool with wallet semantics. 'With steps' also hints at the returned payload, though it could say more about what the steps contain.

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 short sentences, front-loaded with the core verb and resource. 'Get campaign' plus 'Get a single campaign by ID' is slightly redundant but each clause adds scope ('single', 'with steps', 'no credits').

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 no output schema, the description carries the burden of explaining the return value; 'with steps' hints at structure but doesn't describe fields, error behavior on unknown IDs, or whether steps include design/recipient detail. Adequate for a simple single-resource GET but not complete.

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

Parameters3/5

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

Schema description coverage is 0% for the single nested 'path.id' parameter, but the description's 'by ID' adequately conveys that the input is a campaign identifier. It adds no detail about the nesting structure or ID format, so it only marginally compensates for the coverage 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?

States a specific verb and resource ('Get a single campaign by ID with steps'), distinguishing it from the list sibling dealmachine_get_mail_campaigns by emphasizing 'single' and the inclusion of steps. It doesn't differentiate itself from the analytics/recipients/cost-estimate sub-resource siblings, but the core purpose is unambiguous.

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?

'Retrieves data without changing records or spending credits' implies a safe read context, but there is no explicit guidance on when to use this endpoint versus dealmachine_get_mail_campaigns_id_analytics, _recipients, or the list endpoint. Usage is implied rather than stated.

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

dealmachine_get_mail_campaigns_id_analyticsB
Read-onlyIdempotent
Inspect

Campaign analytics. Get delivery and engagement analytics for a campaign. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is mostly covered. The description adds a genuinely non-derivable fact: it does not 'spend credits', which matters in a mail tool where campaigns consume wallet balance. It stops short of describing result shape, pagination, or any date-range behavior of the returned analytics.

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

Conciseness3/5

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

Three short sentences, but the opening 'Campaign analytics.' is pure duplication of the annotation title and earns nothing. The substantive content is front-loaded only after that waste, and the most differentiating fact (no credit spend) sits at the end.

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

Completeness4/5

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

With no output schema, the description carries the burden of saying what comes back, and 'delivery and engagement analytics' gives a usable if coarse sense of the payload. It does not specify metric names, granularity, or time window, which leaves real gaps for a tool whose entire value is the returned dataset.

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?

There is one parameter (path.id) with 0% schema description coverage; the schema only offers the generic label 'Resource ID'. The description's mention of 'a campaign' is the only hint that the id is a campaign identifier, but it gives no format, no source (e.g. from dealmachine_get_mail_campaigns), and no indication of the nested path wrapper.

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: 'Get delivery and engagement analytics for a campaign.' That is clear and the per-campaign scope narrows it against the account-level siblings, but it never names those siblings (dealmachine_get_mail_analytics_summary, dealmachine_get_mail_analytics_timeseries), so the agent must infer the boundary. The leading fragment 'Campaign analytics.' merely repeats the annotation title.

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

Usage Guidelines3/5

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

Usage is only implied by the phrase 'for a campaign' – an agent can deduce this is the per-campaign view rather than the aggregate summary/timeseries. There is no explicit when-to-use statement, no exclusion against the four other campaign-scoped siblings (cost_estimate, properties_estimate, recipients), and no stated preconditions.

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

dealmachine_get_mail_campaigns_id_cost_estimateB
Read-onlyIdempotent
Inspect

Estimate campaign cost. Get a cost estimate for launching a campaign, including wallet balance check. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the phrase 'without changing records or spending credits' largely restates those. The one genuinely additive detail is that the estimate includes a wallet balance check, which is useful 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.

Conciseness4/5

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

Front-loaded with the core action ('Estimate campaign cost') followed by scope and safety details in three tight sentences. Little waste, though the trailing safety sentence is largely redundant with annotations.

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?

No output schema exists, so the description should say more about what the estimate returns (cost breakdown fields, wallet balance structure). It conveys purpose and safety but leaves return content underspecified for a tool whose value is the estimate payload.

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?

There is a single nested path.id parameter with generic 'Resource ID' schema text (0% meaningful coverage). The description's reference to 'campaign' implies id is a campaign id, adding modest meaning, but it doesn't clarify path nesting or what id must reference.

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 (estimate) and resource (campaign cost) with added scope that it includes a wallet balance check. However, it does not distinguish itself from the very similar sibling dealmachine_get_mail_campaigns_id_properties_estimate, leaving ambiguity about which estimate to use.

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?

'for launching a campaign' implies pre-launch usage, but there is no explicit when-to-use, when-not, or alternative routing despite several competing estimate/wallet siblings. Usage is only inferable from context.

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

dealmachine_get_mail_campaigns_id_properties_estimateA
Read-onlyIdempotent
Inspect

Estimate adding properties. What adding a number of properties to the campaign would cost: the charge due today, the amount charged later as later pieces go out, and whether your wallet or auto-reload covers it. Nothing is added or charged. The count is an upper bound; properties skipped when you add them are not charged. For a paused campaign the charge due today is 0 and charged_on_resume is true: each piece is charged as it goes out after the campaign resumes. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes
queryYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: no charge or mutation occurs, charge due today vs later charges, wallet/auto-reload coverage, upper-bound billing semantics, and the paused-campaign case where charge due today is 0 and charged_on_resume is true. That is exactly the behavioral detail an agent needs before quoting a price.

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 core purpose and cost breakdown, followed by the upper-bound and paused-campaign rules. The closing sentence 'Retrieves data without changing records or spending credits' restates what the second sentence already said and what readOnlyHint/destructiveHint annotations cover, so there is 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?

Covers the full decision surface for a read-only estimate: what is returned conceptually (charge today, later charges, wallet coverage flag), no side effects, billing edge cases (skipped properties, paused campaigns). With no output schema needed for an estimate preview and annotations carrying the safety profile, 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?

With schema description coverage reported at 0%, the description must carry the load. It clarifies what count means (properties planned to add, upper bound, skipped ones not charged), which is valuable, but it never explains the path.id parameter beyond the schema's generic 'Resource ID' (i.e., that it is the campaign id). Partial compensation only.

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+resource: estimating the cost of adding a number of properties to a mail campaign. The line 'Nothing is added or charged' implicitly distinguishes it from dealmachine_mail_campaign_add_properties, and the count framing separates it from the campaign cost_estimate sibling. An agent can tell what this does 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?

Clear usage context: run this to preview the charge before adding properties, with the caveat that the count is an upper bound because skipped properties aren't charged. It explains paused-campaign behavior as a usage scenario. It stops short of explicitly naming dealmachine_mail_campaign_add_properties as the follow-up action, so no named alternative.

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

dealmachine_get_mail_campaigns_id_recipientsB
Read-onlyIdempotent
Inspect

List campaign recipients. List recipients enrolled in a campaign with their delivery status. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes
queryNo

TDQS

B3/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so "retrieves data without changing records" largely repeats structured data. The one genuine addition is "without spending credits" — a cost trait annotations cannot express — but pagination behavior and result size are never mentioned.

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

Conciseness3/5

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

Short and front-loaded, but the second sentence restates the first ("List campaign recipients" / "List recipients enrolled in a campaign"), wasting budget that could have documented the id or pagination.

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?

There is no output schema, so the description should carry the return shape — it only mentions a delivery status field. With 0% schema coverage and two undocumented parameters including nested pagination, the definition leaves too much for an agent to infer before a correct 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 adds nothing: the nested `path.id` is only labeled "Resource ID" and the description never says it is the campaign id. The `page`/`per_page` query parameters are completely undocumented in both schema and description, so an agent must guess the pagination contract.

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?

"List recipients enrolled in a campaign with their delivery status" gives a specific verb, resource, parent scope, and payload. It clearly differs from dealmachine_get_mail_campaigns_id (campaign itself) and dealmachine_get_mail_campaigns_id_analytics, though it never names a sibling explicitly.

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

Usage Guidelines3/5

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

Usage is implied: read-only listing of recipients under one campaign. It never states when to prefer this over the campaign analytics, cost estimate, or properties estimate siblings, nor any prerequisite like campaign existence or required plan tier.

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

dealmachine_get_mail_designsB
Read-onlyIdempotent
Inspect

List designs. List mail designs for your organization. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that retrieval does not spend credits, which is useful context beyond the annotations, but it does not disclose pagination behavior, filtering behavior, or what the returned design listings contain.

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

Conciseness3/5

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

The description is short and front-loaded, but the first two sentences are largely redundant: 'List designs' repeats the annotation title, and 'List mail designs for your organization' extends it. The final sentence adds behavioral context.

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 read-only list endpoint, the description covers the core operation and notes that no credits are spent. However, it omits any context about the available filters and pagination, which are relevant to invoking this tool correctly despite being present in the nested schema.

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 does not mention the query object or any of its filters such as page, size, search, status, or per_page. Context signals report 0% top-level schema description coverage, and although the nested schema has some field descriptions, the description itself fails to compensate by explaining how to use the filtering and pagination 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 states a specific verb and resource: 'List mail designs for your organization.' It is clear what the tool does, though it does not explicitly differentiate this list tool from the sibling single-design tool dealmachine_get_mail_designs_id or creation/patch/delete design tools.

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

Usage Guidelines3/5

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

The listing intent is implied by 'List mail designs for your organization,' but there is no explicit guidance on when to use this tool versus fetching a single design by ID, creating a design, or modifying one. No alternatives or exclusions are named.

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

dealmachine_get_mail_designs_idA
Read-onlyIdempotent
Inspect

Get design. Get a single design by ID, including HTML content. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description nonetheless adds two pieces of non-annotation context: the response includes HTML content, and the call does not spend mail credits — the credit behavior is domain-specific and not derivable from the annotations.

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

Conciseness4/5

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

Three short sentences, no padding, with the core action and the HTML-content scope front-loaded. The opening 'Get design.' is redundant with the following sentence but costs little.

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?

There is no output schema, so the description carries the burden of telling the agent what comes back; it does name HTML content, which is the most important field, but not the other design attributes. Nothing is said about behavior when the ID is invalid or 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 0% and there is a single nested 'path' object containing an 'id' string. The description conveys that the tool takes a design ID, which is the essential meaning, but says nothing about the nested path wrapper or formats/validation of the ID.

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 ('Get a single design by ID') and adds scope ('including HTML content'). It implicitly distinguishes itself from the sibling listing tool dealmachine_get_mail_designs by saying 'single design by ID', but never names the list tool explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer you call this when you already hold a design ID and want the full record, versus listing designs. There is no explicit when-to-use, when-not-to-use, or named alternative.

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

dealmachine_get_mail_return_addressesA
Read-onlyIdempotent
Inspect

List return addresses. List all return addresses for your organization. Default address is listed first. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds real value beyond them by stating that calls spend no credits and that the default address is returned first — the credit cost point in particular is not derivable from annotations.

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

Conciseness4/5

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

Front-loaded and short, with the ordering and cost facts placed after the core statement. The first two sentences are largely redundant ('List return addresses' then 'List all return addresses for your organization'), so a small amount of space is wasted.

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 zero-parameter read-only list call with full annotation coverage and no output schema, the description covers what the tool returns at a conceptual level and costs nothing to run. It stops short of describing what fields a return address record contains, which is a modest gap given there is no 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 takes no parameters, so the baseline is 4; there is nothing the description could clarify about inputs. It appropriately does not invent parameter talk, and the only structural note ('default address is listed first') concerns output ordering rather than inputs.

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 (list) and resource (return addresses) and scopes it to the whole organization via 'all return addresses for your organization'. The word 'all' implicitly distinguishes it from the sibling dealmachine_get_mail_return_addresses_id, but it never names that sibling explicitly, so differentiation is inferential rather than stated.

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 collection-wide framing implies this is the enumerate-everything call versus the by-id lookup, but there is no explicit when-to-use or when-not guidance. With zero parameters, there is also no hint about filtering or paging, leaving the agent to infer that the full set comes back in one call.

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

dealmachine_get_mail_return_addresses_idB
Read-onlyIdempotent
Inspect

Get return address. Get a single return address by ID. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds one piece of genuine context beyond them — 'without spending credits' — which matters in a credit-metered product, but the 'without changing records' clause merely restates readOnlyHint.

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

Conciseness3/5

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

The first two sentences are near-duplicates ('Get return address.' / 'Get a single return address by ID.'), so one of three sentences is largely wasted. The credit statement is front-loaded reasonably but the opening is redundant rather than efficiently 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?

This is a simple single-resource read with a one-parameter nested schema, full annotation coverage, and no output schema, so the description does not need to explain return values. What remains missing is only minor: how to obtain the ID and what happens when it is not found.

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% and the single nested parameter (path.id) is only labeled 'Resource ID'. The description says lookup is 'by ID' but adds no format, source, or validity guidance, so it does little to compensate for the thin 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 verb and resource ('Get a single return address by ID') and the word 'single' implicitly separates it from the sibling list tool dealmachine_get_mail_return_addresses. It stops short of naming the sibling explicitly, so it is clear but not fully differentiated.

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?

'Get a single return address by ID' implies this is the fetch-one counterpart to the list endpoint, but there is no explicit statement of when to use this versus the list or patch/delete siblings. Usage must be inferred from the name and phrasing.

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

dealmachine_get_mail_settingsA
Read-onlyIdempotent
Inspect

Get mail settings. Get the organization-level mail settings that act as defaults for new campaigns — default postcard size, sender name, contact frequency limit, QR code URL, and signature image. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered structurally; the description still adds the non-obvious fact that this call spends no credits, which matters in a mail product where sending does cost credits. It does not discuss permissions or whether organization vs. sub-account scoping applies.

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 compact sentences, front-loaded with the verb and resource, then the field detail and the cost/reversibility note. The opening 'Get mail settings.' largely restates the tool name and is the only wasted line.

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

Completeness4/5

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

With no input parameters and no output schema, the description carries the return-value burden and does so by enumerating the key settings returned. An agent has enough to decide to call it and to know what to expect, though it lacks any sense of nested structure or fallback behavior when defaults are unset.

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 takes no parameters, so there is no parameter semantics to explain — baseline 4 applies. The field list in the description functions as informal return-value information rather than duplicating schema content.

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 gives a specific verb (get) and resource (organization-level mail settings) and immediately scopes it as the defaults applied to new campaigns, which separates it from campaign-, design-, and return-address-level siblings like dealmachine_get_mail_campaigns_id or dealmachine_get_mail_return_addresses. The enumerated fields (postcard size, sender name, frequency limit, QR code URL, signature image) make the resource concrete.

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?

Phrasing like 'act as defaults for new campaigns' tells an agent the context in which this data is relevant, and 'retrieves data without changing records' implies the read-only path. It does not explicitly name the write counterpart dealmachine_patch_mail_settings or state when not to use this call.

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

dealmachine_get_mail_wallet_balanceA
Read-onlyIdempotent
Inspect

Get wallet balance. Get the current wallet balance, including pending charges and auto-reload settings. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the description's 'retrieves data without changing records' largely restates structured data. It does add one genuinely useful behavioral fact — no credits are spent — plus the shape of the returned data, but says nothing about response format, freshness, or error cases.

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 short sentences, front-loaded with the core action, with no wasted clauses. The opening 'Get wallet balance.' is near-redundant with the sentence that follows it, a minor trim opportunity.

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 no parameters, no output schema, and full annotation coverage of the safety profile, the description carries exactly the load it needs to: what is fetched, that it is free, and that it is non-mutating. Nothing an agent needs in order to call it 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?

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. The mention of pending charges and auto-reload settings clarifies what the parameterless call yields, which is a small value-add.

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 ('Get wallet balance') and enriches it with the payload contents ('pending charges and auto-reload settings'), which tells the agent what data comes back. It does not explicitly distinguish itself from the related wallet siblings (get_mail_wallet_pricing, get_mail_wallet_transactions), 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 Guidelines3/5

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

Usage is only implied by the resource itself — an agent can infer this is the balance-check tool. There is no explicit when-to-use, no exclusion telling the agent to prefer get_mail_wallet_transactions for history or get_mail_wallet_pricing for rates, and no prerequisites mentioned.

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

dealmachine_get_mail_wallet_pricingA
Read-onlyIdempotent
Inspect

Get mail pricing. Get postcard pricing for your plan. Prices are in cents per postcard. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety bar is lower. The description still adds real context beyond them: prices are in cents per postcard and the call does not spend credits — a meaningful clarification for a wallet-adjacent endpoint.

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?

Four short sentences, front-loaded with the core action, with no filler. Minor redundancy: 'Get mail pricing' and 'Get postcard pricing' restate the same operation, and the no-write clause partly duplicates the readOnlyHint annotation.

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 zero-parameter read with full annotation coverage and no output schema, the description covers what the call does, its units, and its side-effect profile. It could say more about the shape of the response (e.g., whether volume tiers are returned), which is the only remaining gap.

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 takes zero parameters, so the baseline is 4. The description correctly implies pricing is derived from the caller's plan rather than any input argument, leaving nothing for an agent to supply or misconfigure.

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: 'Get postcard pricing for your plan,' with the unit ('cents per postcard') made explicit. It is distinguishable from sibling cost/balance tools like dealmachine_get_mail_campaigns_id_cost_estimate and dealmachine_get_mail_wallet_balance, though it never names those 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?

Usage is only implied: an agent can infer this is the tool for looking up per-postcard prices before sending a campaign. There is no explicit guidance on when to prefer this over the cost estimate or wallet balance siblings, and no stated prerequisites (e.g., plan required).

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

dealmachine_get_mail_wallet_transactionsB
Read-onlyIdempotent
Inspect

List wallet transactions. List wallet transaction history with optional filtering. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds a useful clarification that it does not spend credits (meaningful in a wallet context), but otherwise largely restates the annotation profile without covering pagination or response shape.

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

Conciseness3/5

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

The first two sentences are redundant ("List wallet transactions" and "List wallet transaction history"), diluting the front-loaded clarity. Short overall, but a sentence could be merged without losing 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?

Annotations cover the safety profile and the nested schema documents all filters, so little is missing for a read-only list tool. Return format and pagination behavior are undocumented, but no output schema exists to carry that, so a small gap remains.

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's nested query fields (page, type, per_page, campaign_id, reference_type) each carry descriptions, even though top-level coverage reports 0%. The description adds nothing beyond 'optional filtering', so the schema does the heavy lifting — baseline 3.

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

Purpose4/5

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

States a specific verb and resource: "List wallet transactions" plus "transaction history with optional filtering." Clear for an agent, though it does not distinguish itself from siblings like dealmachine_get_mail_wallet_balance or dealmachine_get_mail_wallet_pricing.

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?

"with optional filtering" implies the tool's scope but gives no guidance on when to use it versus viewing balance/pricing, and no exclusions or prerequisites. 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.

dealmachine_get_prospects_by_recordA
Read-onlyIdempotent
Inspect

Get prospect by record. Look up the prospect that tracks a property, person, or company, if there is one. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the description earns credit for what they don't say: "without ... spending credits" is meaningful domain context for a paid-credit API, and "if there is one" discloses that a missing prospect is a normal outcome rather than an error.

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 short sentences with the core action front-loaded and the credit/read-only reassurance last. Slight redundancy between sentence one and two ("Get prospect by record" vs "Look up the prospect that tracks..."), but 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?

With no output schema and a nested query object, the description should say more about the return value: does a hit return a full prospect object, and what is returned when no prospect exists? It only gestures at this with "if there is one."

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 description itself gives no parameter detail, and the reported coverage is low, but the nested schema fully documents record_id formats (prop_123, person_456, bare number) and the record_type enum. The description partially compensates by enumerating 'property, person, or company', which mirrors the enum values.

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 ("Get prospect by record") and clarifies the lookup key: the prospect that tracks a property, person, or company. That distinguishes it from ID-based siblings such as dealmachine_prospect_get, though it never names those siblings explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: the phrase "if there is one" signals a nullable lookup and hints you should call it when you already have a property/person/company record. There is no explicit guidance on when to prefer this over dealmachine_prospect_get, dealmachine_prospect_search, or dealmachine_post_prospects_check.

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

dealmachine_get_prospects_countsA
Read-onlyIdempotent
Inspect

Count prospects. Prospect counts by lifecycle and record type, for the workspace or one list. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
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, idempotentHint, and destructiveHint=false, so the safety profile is covered, but the description adds 'without spending credits', which is real domain context not present in the structured fields and matters for a paid-credit API. It stops short of describing the returned grouping shape or any rate/latency 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?

Three short sentences with the verb-first headline front-loaded, followed by breakdown dimensions, scope, and cost behavior. No wasted clause, though the opening 'Count prospects.' largely restates the 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?

No output schema exists, so the description wisely names the aggregation dimensions (lifecycle, record type) as a proxy for the return shape, and it covers both scope modes plus the no-credit guarantee. The only shortfall is the absence of any explanation of the nested query wrapper for the single optional parameter.

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% for a nested query object containing list_id, so the description must carry the burden, and it partially does by clarifying that the single list_id selects list-scoped counting versus workspace-wide counting when omitted. It adds no format guidance (the schema requires a UUID) and does not explain why list_id sits inside a nested 'query' object.

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 ('Count') plus the resource ('prospects') and narrows the result to two useful breakdowns, lifecycle and record type. An agent can tell this apart from dealmachine_prospect_search or dealmachine_get_prospects_by_record. It does not explicitly distinguish itself from the similarly named dealmachine_people_count and dealmachine_property_count siblings, which is the only gap.

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 scope is implied ('for the workspace or one list'), which tells the agent the two modes of use, but there is no explicit when-to-use guidance, no exclusion of alternatives like prospect_search or people_count, and no statement that list_id omission means workspace-wide.

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

dealmachine_get_prospects_id_activityB
Read-onlyIdempotent
Inspect

List prospect activity. Everything that happened to the prospect’s record in this workspace, newest first: prospect changes, notes, tags, files, lists, mail, and CRM events. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes
queryNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds useful context that results are newest first and that the call does not spend credits, but it does not mention pagination behavior, auth requirements, or response size.

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 action and then gives scope, ordering, and read-only/no-credit behavior in a compact set of sentences. There is no filler or repetition that wastes the agent's attention.

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?

It gives enough context to understand what is listed and how it is ordered, and annotations cover the safety profile. However, for a filtered list endpoint with no output schema, it omits response shape, pagination expectations, and any guidance on the available filters.

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 never mentions the required prospect ID or the since, category, page, or per_page filters, so it adds no parameter-level meaning. With schema description coverage reported at 0%, the description does not compensate for that 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?

The description states a specific verb and resource: 'List prospect activity' for a prospect's record in this workspace. It also scopes the result set to everything that happened to that prospect, newest first, and enumerates the event categories, which distinguishes it from single-activity and search-oriented siblings.

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

Usage Guidelines2/5

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

The description does not say when to use this tool versus alternatives such as the activity search or single-activity endpoints. It implies the use case by saying it lists prospect activity, but provides no explicit when-to-use or 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.

dealmachine_get_prospects_id_filesB
Read-onlyIdempotent
Inspect

List prospect files. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'retrieves data without changing records' is largely redundant. The one genuinely additive fact is 'without ... spending credits', but the description still says nothing about what the listing contains or whether it is paginated.

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 short sentences with the operation front-loaded; nothing is buried. The second sentence spends most of its words repeating the read-only annotation, which dilutes it slightly.

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?

No output schema exists, so the description is the only place to learn what a file listing looks like (ids, names, sizes, pagination). It provides none of that, though the single-parameter surface keeps the tool usable without it.

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

Parameters3/5

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

Schema description coverage is reported at 0% and the description never mentions path.id. However there is only one required parameter nested under a wrapper, and the inner schema supplies both a description ('Prospect ID') and an example ('prospect_123'), so the gap is small rather than critical.

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?

'List prospect files' gives a specific verb plus resource and the name scopes it to a single prospect. It is distinguishable from siblings like dealmachine_get_prospects_id_photos and dealmachine_get_prospects_id_notes by resource type, though it never says so explicitly.

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 statement of when to use this versus the closely related dealmachine_get_prospects_id_files_file_id_download, nor any prerequisite or pagination context. The agent must infer the split between listing metadata and downloading content.

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

dealmachine_get_prospects_id_files_file_id_downloadA
Read-onlyIdempotent
Inspect

Download prospect file. Redirects to a 5-minute signed URL. Pass ?redirect=false to get the URL as JSON instead. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes
queryNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/destructive/idempotent status, so the safety profile is covered. The description adds non-obvious behavior beyond the annotations: a 5-minute signed URL and the redirect-vs-JSON response mode, which are exactly the operational details an agent needs. Error behavior (missing file, expired URL handling) is not covered, keeping it below 5.

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 core action and tight at four short sentences. The final sentence about not changing records or spending credits largely repeats the readOnly annotations, which is mildly redundant but still useful reassurance.

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 download tool with no output schema, the description covers the key calling modes (redirect vs JSON) and URL expiry. Missing only edge behavior such as not-found or expired-URL handling.

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% at the parameter level, though nested `id` and `file_id` have examples and descriptions. The description only clarifies the `redirect` query parameter by showing `?redirect=false` yields JSON; it does not state the default behavior explicitly or explain the `path`/`id`/`file_id` structure, so compensation is partial.

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 — “Download prospect file” — which cleanly distinguishes it from sibling `get_prospects_id_files` (listing files) and `delete_prospects_id_files_file_id`. An agent can identify the operation 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?

The download context is clear and the `redirect=false` guidance tells the agent how to request a JSON URL rather than a redirect. It does not explicitly mention when to use this instead of the file-listing tool, but the purpose is unambiguous.

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

dealmachine_get_prospects_id_notesB
Read-onlyIdempotent
Inspect

List prospect notes. Notes on the prospect, newest first. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes
queryNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent and non-destructive, and the description adds two things they don't: the newest-first ordering and that the call spends no credits. It still omits pagination behavior and result shape, but the credit and sort context is genuinely additive.

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 short clauses, front-loaded with the verb and resource; no filler. The second clause ("Notes on the prospect") is mildly redundant with the first sentence but not wasteful.

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 read-only paginated list with no output schema, the definition leaves the caller without guidance on paging defaults, result contents, or empty-state behavior. Safety profile is handled by annotations, but the paging story is missing from both description and (reported) 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?

The description mentions no parameters at all, and with schema description coverage reported at 0% for this definition, nothing in the description compensates for the nested path.id and query.page/per_page inputs. An agent must read the raw schema to learn required fields and the 100-item cap.

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 ("List prospect notes") and adds scope detail ("Notes on the prospect, newest first"), which separates it from the sibling that fetches a single note by id. It does not explicitly name that sibling, so differentiation is implied rather than stated.

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

Usage Guidelines3/5

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

Usage is only implied: "Retrieves data without changing records or spending credits" signals a read-only retrieval path, but there is no statement of when to choose this over dealmachine_get_prospects_id_notes_note_id or how it relates to activity/files/tags endpoints on the same prospect.

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

dealmachine_get_prospects_id_notes_note_idB
Read-onlyIdempotent
Inspect

Get prospect note. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'retrieves data without changing records' largely restates them. The one genuine addition is that the call spends no credits, which is not covered by annotations, but nothing is said about what a note contains or error/not-found 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?

Two short sentences, front-loaded with the purpose. There is a stray double space and the second sentence is filler given annotations, but overall there is no bloat.

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 read-only fetch of one note, the annotations plus schema examples are nearly sufficient, and no output schema exists to explain return shape. Still, an agent gets no information about the returned note's fields or ID format requirements, leaving a gap for a nested-parameter 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?

Reported schema description coverage is 0% at the top level: the single 'path' object carries no description, and the description adds no information about the prospect ID or note ID beyond the schema examples. The description does nothing to compensate for the undocumented container parameter.

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 ('Get prospect note'), which cleanly distinguishes it from the listing sibling dealmachine_get_prospects_id_notes and the mutating dealmachine_patch/delete_prospects_id_notes_note_id tools. It is clear, though it doesn't explicitly name those siblings.

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

Usage Guidelines2/5

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

No guidance on when to use this rather than the notes-list tool or the patch/delete variants. The only usage-adjacent statement is about credits, not about tool selection.

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

dealmachine_get_prospects_id_photosA
Read-onlyIdempotent
Inspect

List prospect photos. Photos of the prospect’s property, newest first. Property prospects only. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description reinforces that while adding genuinely new facts: results are ordered 'newest first', the call spends no credits, and it is restricted to property prospects. It does not cover paging, result volume, or what happens for non-property prospects.

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?

Four short sentences, all front-loaded with the resource and ordering stated first. No filler, though the clipped sentence fragments read slightly telegraphic rather than fully polished.

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 single-parameter read-only list call with rich annotations and no output schema, the description covers scope, ordering, and cost profile. Only the return shape (photo URLs?) and paging behavior remain unstated, which is a minor gap at this complexity.

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

Parameters3/5

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

Only one parameter (nested path.id), and the schema already carries an example ('prospect_123') and a description despite the reported 0% aggregate coverage. The description implies the parameter via 'of the prospect's property' but never states the required prospect ID or whether it accepts IDs from any source, so it adds little 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?

Specific verb plus resource ('List prospect photos') with added scope: 'Photos of the prospect's property, newest first' and 'Property prospects only'. An agent can distinguish this from dealmachine_post_prospects_id_photos and dealmachine_delete_prospects_id_photos_photo_id on verb alone.

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?

'Property prospects only' is a genuine precondition that tells the agent when this call is valid. However, it never contrasts with the closely-named sibling dealmachine_get_prospects_id_files (files vs photos), so the choice between the two is left to inference.

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

dealmachine_get_prospects_id_tagsA
Read-onlyIdempotent
Inspect

List prospect tags. The tag catalog with an assigned flag for this prospect. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered structurally. The description nonetheless adds something the annotations cannot express – 'without changing records or spending credits' – which tells the agent this call is free and side-effect-free, a useful trait for a credit-metered API.

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 short sentences with the verb and scope up front. The opening 'List prospect tags' is largely restated by the following sentence, a minor redundancy, but nothing is padded or buried.

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

Completeness4/5

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

No output schema exists, so the description carries the return-shape burden, and it does: the agent learns it gets the tag catalog plus an `assigned` flag. Missing only minor operational context such as ordering or whether unassigned tags are included by default.

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?

There is a single nested parameter (`path.id`), and the description adds nothing about it – no note on id format beyond the schema's own example, and no explanation of behavior for an unknown prospect. With one param and effectively low schema documentation coverage at the nested level, this is baseline-adequate but not compensatory.

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 verb and resource ('List prospect tags') and clarifies the return shape: the tag catalog annotated with an `assigned` flag for this prospect. That scope detail distinguishes it from the global `dealmachine_tags_list`, though it never names the sibling explicitly.

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

Usage Guidelines3/5

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

Usage is only implied – an agent can infer it should call this to see which tags are attached to a prospect, but the description states no when-to-use condition, no prerequisites (e.g. needing a valid prospect id), and never points to alternatives like `dealmachine_prospect_tags_set` or `dealmachine_tags_list`.

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

dealmachine_get_subscriptionA
Read-onlyIdempotent
Inspect

Get subscription status. Get your current subscription status, including plan details, billing cycle, and credit caps. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault

No parameters

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, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so safety basics are covered. The description adds genuinely useful context for this API: it explicitly says the call does not spend credits, which matters in a toolset where enrichment calls do consume credits.

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 short sentences, front-loaded with the purpose and followed by the returned fields. The opening 'Get subscription status.' largely restates the title/annotation, so one small redundancy, but nothing else is wasted.

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

Completeness4/5

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

With no input parameters, no output schema, and full annotation coverage, the description carries its part: it names the returned fields (plan, billing cycle, credit caps) so the agent knows what it gets back. Only the relationship to sibling account/usage tools is left implicit.

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 takes zero parameters, so the baseline is 4. The description correctly says nothing about inputs and avoids inventing parameter details that do not 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?

States a specific verb+resource ('Get subscription status') and enumerates the returned content — plan details, billing cycle, credit caps — which separates it from siblings like dealmachine_usage (consumption stats) and dealmachine_get_mail_wallet_balance (mail credits only). It never names those siblings, so differentiation is implicit rather than explicit.

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

Usage Guidelines3/5

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

Usage is only implied by 'your current' — an agent can infer this is the account-level subscription lookup, but there is no explicit when-to-use guidance and no stated boundary against dealmachine_account or dealmachine_usage.

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

dealmachine_get_tags_idC
Read-onlyIdempotent
Inspect

Get tag. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds one genuinely useful fact beyond them: the call does not spend credits. Beyond that it adds no behavior detail, such as what happens on an unknown tag ID.

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 short sentences, front-loaded with the operation. The second sentence is mildly redundant with readOnlyHint but still carries the credit-cost fact, so the length is justified.

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?

Adequate for a simple single-record read whose safety profile is fully declared by annotations and whose sole parameter is described in schema. It omits the return shape and not-found behavior, which would matter because there is no output schema.

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

Parameters3/5

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

Only one parameter, and the nested id field already carries a description and example ("Tag ID, e.g. tag_31") in the schema. The prose adds nothing about the id, so it neither compensates nor detracts from 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?

"Get tag" states a specific verb and resource, but it largely restates the tool name and annotation title. It does not differentiate this single-tag fetch from the sibling dealmachine_tags_list, which retrieves tags in bulk.

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 never says when to use this tool versus dealmachine_tags_list, dealmachine_patch_tags_id, or the delete variant. The only guidance is an implicit read-only framing ("without changing records"), which is not an alternative-selection rule.

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

dealmachine_get_tasksA
Read-onlyIdempotent
Inspect

List tasks. List all tasks for the organization. Optionally filter by status, search, or assignee. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
queryNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is fully covered structurally. The description's "retrieves data without changing records or spending credits" mostly restates that, though the no-credit-cost detail is genuinely additive for an agent weighing call budget. It says nothing about pagination, ordering, or result volume.

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?

Short and front-loaded, with the core scope stated in the first two sentences. "List tasks." followed by "List all tasks for the organization." is slightly redundant but costs little.

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 zero-required-parameter list tool with full annotation coverage and a documented nested schema, the description covers purpose, scope, filters and cost profile. With no output schema, a note on task fields or default result ordering would close the remaining gap, but nothing needed to call it 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?

Top-level schema coverage is 0% (all params nested under query), so the description has to compensate and does partially by naming the status, search and assignee filters. It omits page and per_page entirely, leaving pagination semantics to the nested schema descriptions.

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 ("List tasks") and adds the scope constraint ("all tasks for the organization"), which separates it from the single-record sibling dealmachine_get_tasks_id. It never names a sibling explicitly, so the distinction is inferred rather than stated.

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?

"Optionally filter by status, search, or assignee" implies when the filter parameters are useful, but there is no explicit guidance on when to prefer this over dealmachine_get_tasks_id or how pagination should be driven. Usage is implied rather than directed.

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

dealmachine_get_tasks_idB
Read-onlyIdempotent
Inspect

Get task. Get a single task by ID. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'without changing records' largely restates structured data. The one genuinely additive claim is 'without spending credits', which is domain-specific cost context the annotations do not carry, but return shape and error behavior (e.g. unknown ID) are left unstated.

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

Conciseness3/5

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

The first two sentences are redundant ('Get task. Get a single task by ID.'), restating the title before the substantive sentence. The credit/cost note is useful but the opening wastes space.

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 single-parameter read tool with safety annotations covering the side-effect profile, the definition is minimally sufficient. However, with no output schema and no description of the returned task object, an agent gets no picture of what a successful call yields.

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?

There is one nested path.id parameter with effectively no schema documentation beyond the label 'Task ID' (coverage reported as 0%). The description says 'by ID' but adds nothing about the identifier's format, source, or validation, so it does not compensate for the coverage 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 ('Get a single task by ID'), which clearly distinguishes it from the list variant dealmachine_get_tasks and the mutating siblings patch/delete_tasks_id. It stops short of naming those siblings, so the differentiation comes from the name and phrasing rather than explicit routing.

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?

'By ID' implies the caller must already hold a task identifier, but the description never says where to obtain one (e.g. from dealmachine_get_tasks) or when to prefer the single-item fetch over the list endpoint. 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.

dealmachine_get_webhooks_eventsA
Read-onlyIdempotent
Inspect

List webhook event types. Every event a webhook can subscribe to, with a description and a full example request body. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new context: the response includes a description and full example request body per event, and the call spends no credits — a DealMachine-specific cost detail not present in annotations.

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

Conciseness5/5

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

Three short sentences, front-loaded with the resource, then the payload shape, then the cost/safety note. No filler, and every sentence contributes something the agent needs.

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

Completeness4/5

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

With no parameters and no output schema, the description carries the burden of describing the return value, and it does so at a reasonable level (event description plus example request body). It omits anything about payload size, ordering, or whether the list is stable, which keeps it just short of 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 tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly signals a no-argument enumeration rather than hinting at filters that do not 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?

States a specific verb and resource ("List webhook event types") and clarifies the scope: every event a webhook can subscribe to, each with a description and example request body. It is distinguishable from siblings like dealmachine_webhook_list and dealmachine_get_webhooks_id by the word "event types," though it never explicitly names those 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?

"Every event a webhook can subscribe to" implies the tool is consulted before configuring a subscription, but the description never says when to call it versus dealmachine_webhook_list / dealmachine_get_webhooks_id, nor does it state prerequisites or exclusions. Usage is inferable rather than stated.

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

dealmachine_get_webhooks_idB
Read-onlyIdempotent
Inspect

Get webhook. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so 'retrieves data without changing records' largely restates them. The added claim that the call does not 'spend credits' is genuinely new and useful for a credit-metered API, but nothing is said about missing-ID behavior or what the retrieved payload contains.

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 short sentences with the verb-resource stated first and no filler. The second sentence is partly redundant with the read-only annotation, slightly reducing density, but nothing is bloated.

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 single-record read with full annotation coverage, most needs are met, but with no output schema the description says nothing about return shape, and it omits error behavior for an invalid or unknown webhook ID. Adequate but not complete.

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

Parameters3/5

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

The schema documents the single nested `id` field with an example ('whk_12'), but the description adds no meaning about the path/id parameter. With one required parameter and thin stated coverage, a baseline 3 is appropriate since the schema carries the parameter explanation.

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 ('Get webhook'), which lets an agent distinguish it from mutating siblings like patch_webhooks_id and delete_webhooks_id. It doesn't explicitly say it fetches a single webhook by ID versus listing them, leaving that inference to the name and the sibling webhook_list.

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

Usage Guidelines2/5

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

No guidance on when to use this versus dealmachine_webhook_list, dealmachine_get_webhooks_id_deliveries, or dealmachine_get_webhooks_events. The agent must infer the use case from the tool name alone.

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

dealmachine_get_webhooks_id_deliveriesB
Read-onlyIdempotent
Inspect

List webhook deliveries. The delivery log for one webhook, newest first: status, attempts, response code and time, and any error. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes
queryNo

TDQS

B3.2/5.0
Behavior4/5

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

Adds meaningful behavior beyond annotations: results are newest-first, include status/attempts/response code/time/error, and importantly do not spend credits. It does not cover pagination behavior or rate limits, but with readOnly/idempotent/non-destructive already declared this is solid added context.

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 purpose, then return contents, then safety. Compact and efficient; the 'without changing records' clause slightly repeats readOnlyHint, but the credits note 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?

For a filtered, paginated read-only list with no output schema, the description covers return contents and ordering but omits pagination and filter semantics. Adequate but leaves gaps an agent would need to fill by inspecting the schema.

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% for the query object, and the description does not explain the available filters (since, status, event_type, page, per_page). The path id is shown with an example in the schema, but the query parameters remain undocumented and must be inferred.

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?

Clear verb and resource: 'List webhook deliveries' for 'one webhook'. It implicitly contrasts a list with the sibling single-delivery tool, but does not explicitly name or differentiate from siblings like dealmachine_get_webhooks_id_deliveries_delivery_id or dealmachine_get_webhooks_events.

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 or alternatives are stated. The only extra sentence addresses safety (no credits/no writes), not when this list should be preferred over fetching a specific delivery or event types.

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

dealmachine_get_webhooks_id_deliveries_delivery_idA
Read-onlyIdempotent
Inspect

Get webhook delivery. One delivery with the full event body that was (or will be) sent. Retrieves data without changing records or spending credits.

NameRequiredDescriptionDefault
pathYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive and closed-world, so the safety profile is largely pre-declared. The description still adds real context beyond them: no credit spend, and the parenthetical '(or will be) sent' hints that pending deliveries already expose their event body – useful behavior an agent could not infer otherwise.

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 short sentences, front-loaded with the resource, then return content, then cost/safety. Nothing is wasteful and the important detail (full event body) appears immediately.

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 two-identifier read with no output schema, the description covers what is returned (the full event body) and that it costs nothing. It omits what a delivery record otherwise contains (status, attempts, response codes) and what happens when the delivery ID is unknown, leaving the agent guessing about failure modes.

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?

Top-level schema coverage is reported at 0%, and the description says nothing about the nested path object or how id and delivery_id relate. The nested properties do carry examples (`whk_12`, `dlv_9001`) in the schema, but the description does not compensate for the undocumented top-level path parameter.

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?

Names a specific verb and resource ('Get webhook delivery') and adds scope with 'One delivery with the full event body', which implicitly separates it from the sibling list endpoint dealmachine_get_webhooks_id_deliveries. It does not name the sibling explicitly, but the singular/full-body framing is enough to distinguish.

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

Usage Guidelines3/5

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

Usage is only implied: the mention of the 'full event body' signals this is the tool to call when you need the payload of a single delivery rather than a listing. There is no explicit statement about when not to use it, nor any routing to the list or redeliver siblings.

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

dealmachine_list_add_itemsA
Idempotent
Inspect

Adds property or person IDs to an existing list (max 10,000 per request; duplicates are skipped). Filed records become prospects unless add_as_prospects is false. Free; no credits are charged.

NameRequiredDescriptionDefault
idsYesInternal property or person IDs to add
id_typeNoWhich kind of IDs these are. Defaults to internal_property_id.
list_idYesThe list ID to add to
add_as_prospectsNoWhether the records also become prospects in the workspace. Defaults to true. Pass false only when the user does not want these records tracked as prospects.

TDQS

A4/5.0
Behavior4/5

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

Adds real context beyond the annotations: a 10,000-item per-request cap, duplicate records being silently skipped, the side effect of records becoming prospects, and that the call is free of credit charges. Annotations already declare idempotentHint=true and destructiveHint=false, so the description is not carrying the safety burden alone. It stops short of describing partial-failure behavior or what the response reports.

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 short sentences, front-loaded with the core action, followed by limits and side effects. Every clause carries information an agent needs, and nothing is repeated or padded.

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 4-parameter mutation with full schema coverage and annotations, the description covers cost, limits, dedupe, and the prospect side effect. The remaining gap is the return shape (how many IDs were added vs skipped) on a partial failure, which matters for a batch mutation but is not covered anywhere since there is no output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented, including add_as_prospects and id_type. The description restates the add_as_prospects effect rather than adding new detail such as ID-scope rules per id_type. Baseline 3 is appropriate when the schema does the heavy lifting.

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 ("Adds property or person IDs to an existing list"), and the phrase "existing list" implicitly separates it from dealmachine_list_create, while the prospect-filing sentence separates it from dealmachine_prospect_add. An agent can pick this tool 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 Guidelines3/5

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

Usage is implied rather than stated: the tool works on lists that already exist and applies to property or person IDs. There is no explicit guidance on when to prefer dealmachine_prospect_add, what to do if list_id is unknown, or when to chunk requests under the 10,000-item cap. Adequate but leaves the alternative-selection reasoning to the agent.

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

dealmachine_list_createAInspect

Creates a list in the workspace, optionally pre-filled with up to 250 property or person IDs. Filed records become prospects unless add_as_prospects is false. Free; no credits are charged.

NameRequiredDescriptionDefault
nameYesList name
record_idsNoInternal property or person IDs to file right away (max 250). Omit to create an empty list.
source_typeNoWhat the list holds. Defaults to properties.
add_as_prospectsNoWhether the records also become prospects in the workspace. Defaults to true. Pass false only when the user does not want these records tracked as prospects.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations cover mutation and safety (readOnlyHint=false, destructiveHint=false), so the description's added value is the side effect that filed records become prospects and the cost note that no credits are charged — both genuinely useful and not in the structured fields. It does not cover failure modes, but that is a modest gap.

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 short sentences, front-loaded with the core action, then the pre-fill capability, then the prospect side effect and cost. Slight redundancy in 'Free; no credits are charged,' but nothing 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?

Covers creation, item pre-fill, side effects and cost, but with no output schema the description never says what is returned (e.g., a list ID needed for follow-up dealmachine_list_add_items calls) and does not state uniqueness or error behavior for the required name.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents the 250-item cap, source_type enum, and add_as_prospects behavior. The description restates the cap and prospect default rather than adding new semantics, so baseline 3 applies.

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 ('Creates a list in the workspace') plus its main capability (pre-filling with property/person IDs). It is clear what the tool does, but it never names the closely related sibling dealmachine_list_add_items, so the boundary between 'create with items' and 'add items later' is left implicit.

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 'optionally pre-filled' implies the create-empty vs create-with-records decision, but there is no explicit when-to-use or when-not-to-use guidance and no mention of the alternative path (dealmachine_list_add_items) for adding items to an existing list.

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

dealmachine_mail_campaign_add_propertiesA
Destructive
Inspect

Adds properties to a Ready, Active or Paused campaign and spends wallet dollars. Each added property starts at step 1 on its own schedule; properties already in the campaign are untouched. Before calling this, call dealmachine_mail_read with operation add_properties_estimate and the property count, tell the user the charge due today (pay_today_cents) and the amount charged later as mail goes out (pay_later_cents), and get their approval. A paused campaign charges nothing today; each piece is charged as it goes out after it resumes (charged_on_resume). Auto-reload must be on when the campaign has more than one step, a repeating step, or any delay. The response lists added_count and each skipped property with its reason: already_in_campaign, do_not_contact, no_mailing_address, duplicate_mailing_address, archived_prospect or not_found. Find campaigns that accept properties with dealmachine_mail_read search_campaigns and accepting_properties=true.

NameRequiredDescriptionDefault
confirmedYesSet to true only after the user approves the charge due today from the estimate
recipientYesowner mails the owner's mailing address; resident mails the current resident at the property
campaign_idYes
property_idsYesProperty IDs to add (1 to 5000)

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, it discloses wallet charging behavior, paused-campaign charging semantics, auto-reload preconditions, untouched existing properties, and the exact skipped-property reasons in the response. These are material behavioral traits for a destructive, non-idempotent, open-world mutation.

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 action and cost impact, then proceeds through prerequisites, charging nuances, and response details in a logical order. Despite its length, every sentence carries operational information for a complex charging mutation.

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 complex, destructive campaign mutation with no output schema, the description covers prerequisites, cost approval, pause/resume charging, auto-reload conditions, and response fields including skipped reasons. It gives an agent enough context to invoke the tool safely and interpret its outcome.

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 75%, with descriptions for confirmed, recipient, and property_ids already present. The description adds useful workflow meaning around confirmed (user approval after estimate) and property_ids (count sent to estimate), though campaign_id is not elaborated beyond the schema.

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

Purpose5/5

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

The description uses a specific verb and resource ("Adds properties to a ... campaign"), states the wallet-cost consequence, and distinguishes this operation from campaign discovery and estimation via named sibling operations. An agent can immediately tell this is the mutation for adding properties to an existing mail campaign.

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 prescribes the prerequisite estimate call, user approval step, and campaign eligibility (Ready, Active, or Paused), plus how to find campaigns that accept properties with search_campaigns and accepting_properties=true. This gives clear when-to-use and when-not-to-proceed guidance.

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

dealmachine_mail_campaign_archiveA
Destructive
Inspect

Archives an ended campaign. End active, paused, ready or draft campaigns first; otherwise the API returns 409 CAMPAIGN_NOT_ENDED without changing the campaign. Cancels unsent mail, releases reservations, stops reminders and hides it from default lists. History stays under status=archived. Already submitted mail may still ship. Confirm with the user first.

NameRequiredDescriptionDefault
confirmedYesSet to true only after the user confirms archiving this campaign and cancelling its unsent mail
campaign_idYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety bar is lower, but the description still adds substantial behavior: cancellations of unsent mail, reservation release, reminder stoppage, hiding from default lists, and the nuance that already-submitted mail may still ship. The only missing piece is whether the archive can be reversed (unarchive), which would complete the risk picture for a destructive operation.

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

Conciseness5/5

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

Six short sentences, front-loaded with purpose and precondition, then consequences, then the confirmation instruction. Every sentence carries distinct information — no filler and no repetition of the annotations.

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 two-parameter destructive mutation with no output schema, the description supplies the prerequisite state, the error contract, the side effects, data-retention behavior, and the user-confirmation requirement. Nothing an agent needs to call this safely 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 50% — the 'confirmed' parameter is fully documented in the schema, and campaign_id has no description in either place. The description reinforces the confirmation semantics ('Confirm with the user first') but adds nothing about campaign_id formatting or where to obtain it. Baseline 3 is right given the partial 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 opens with a specific verb and resource ('Archives an ended campaign') and immediately narrows scope to ended campaigns, which distinguishes it from siblings like dealmachine_mail_campaign_end or dealmachine_mail_campaign_cancel. An agent knows exactly what state transition this performs 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 Guidelines5/5

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

It states the precondition explicitly ('End active, paused, ready or draft campaigns first'), names the exact failure mode if violated (409 CAMPAIGN_NOT_ENDED with no change), and adds a procedural gate ('Confirm with the user first'). That covers when to use it, when not to, and what to do instead.

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

dealmachine_mail_campaign_cancelA
Destructive
Inspect

Cancels a mail campaign, kept for existing clients. A started campaign ends as with dealmachine_mail_campaign_end; a draft is cancelled; a campaign that has already ended is returned unchanged. Unsent mail stops, while mail already submitted still delivers.

NameRequiredDescriptionDefault
confirmedYesSet to true only after the user approves cancelling this campaign
campaign_idYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, and the description still adds real behavioral context: state-dependent effects, that an already-ended campaign is returned unchanged (making the call effectively a no-op there), and that only unsent mail is halted while submitted mail still delivers. That last detail is materially important for a destructive operation and is not inferable from the annotations.

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

Conciseness4/5

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

Two dense sentences, front-loaded with the core action and followed by state outcomes and the delivery caveat; every clause carries information. The 'ends as with dealmachine_mail_campaign_end' phrasing is slightly indirect but not wasteful.

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

Completeness4/5

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

No output schema exists, and the description implicitly indicates a campaign object is returned ('returned unchanged'), while covering the destructive consequences an agent needs before confirming. It omits permission/auth requirements and any billing or wallet-charge implications, which are the main remaining gaps for a destructive mutation.

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 50%: 'confirmed' is well documented in the schema as a user-approval gate, while 'campaign_id' has no description. The description adds nothing about either parameter — not the approval requirement, not the ID format — so it neither compensates for the gap nor adds value over 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?

States a specific verb and resource ('Cancels a mail campaign') and immediately distinguishes its semantics from the sibling dealmachine_mail_campaign_end by outcome per campaign state. The 'kept for existing clients' note also signals legacy status, so an agent can tell it apart from end/pause/resume without opening a schema.

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

Usage Guidelines4/5

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

Gives clear state-based context for what happens when invoked (started, draft, already-ended) and names the equivalent sibling for started campaigns. It stops short of an explicit routing rule such as 'prefer mail_campaign_end for new work', so the alternative selection is implied rather than prescribed.

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

dealmachine_mail_campaign_endA
Destructive
Inspect

Ends a Ready, Active or Paused mail campaign permanently. Unsent mail is stopped, no properties can be added, and it can never be resumed. Mail already printed or with the carrier still delivers. To reuse its steps, create a new campaign. A draft has not started and cannot be ended (campaign_is_draft). Warn the user that ending cannot be undone.

NameRequiredDescriptionDefault
confirmedYesSet to true only after the user confirms ending this campaign for good
campaign_idYes

TDQS

A4.1/5.0
Behavior5/5

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

The description adds substantial context beyond the destructiveHint annotation: unsent mail is stopped, no properties can be added, the campaign can never be resumed, already printed/carrier mail still delivers, drafts are excluded, and the user must be warned. This is exactly the kind of consequence disclosure a destructive tool needs.

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 front-loaded with the core action and is dense with useful caveats. Some points (permanent, cannot resume, cannot be undone) are slightly repetitive, but no sentence is wasted.

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 destructive nature and the annotation set, most behavioral consequences and state exclusions are covered. The two notable gaps are disambiguation from the cancel sibling and guidance on obtaining the campaign_id.

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 only 50%, and campaign_id has no schema description. The description does not explain where to obtain campaign_id or its expected format, and it only indirectly reinforces the confirmed flag via a user warning. Little parameter-level meaning is added 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 verb ('Ends') and resource ('mail campaign') with clear scope ('permanently') and applicable states ('Ready, Active or Paused'). It distinguishes itself from non-terminal operations like pause/resume without needing to open a 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?

It clearly states when to use (Ready/Active/Paused campaigns) and when not to use (drafts cannot be ended), and it directs reuse via a new campaign. However, it never mentions the sibling 'dealmachine_mail_campaign_cancel', leaving the agent to infer the distinction between ending and cancelling.

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

dealmachine_mail_campaign_sendA
Destructive
Inspect

Launches a draft mail campaign and spends wallet dollars for its recipients and scheduled steps.

NameRequiredDescriptionDefault
confirmedYesSet to true only after the user approves the current cost estimate
campaign_idYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description usefully adds that wallet dollars are actually spent, which is not in the annotations, but omits that the spend is irreversible, that the full estimated budget may be charged, and what happens on failure.

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?

One front-loaded sentence with no filler; the financial consequence is stated immediately. It is tight but arguably too terse given the operation's gravity.

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 two-parameter, destructive, money-spending action with no output schema, the description covers the core action and its cost side effect. It still leaves the agent without guidance on pre-flight checks (cost estimate) and post-launch state, which matters for an irreversible operation.

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

Parameters3/5

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

confirmed is fully documented in the schema, including the approval precondition, while campaign_id has no schema description. The description's reference to a 'draft mail campaign' and recipient spending adds only mild meaning to campaign_id and does not compensate for the 50% coverage 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?

Names a specific verb (launches) and resource (draft mail campaign), plus the monetary consequence. This clearly separates it from creating (post_mail_campaigns), editing (patch), and pause/resume siblings, though it doesn't explicitly call out those 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?

Implies the workflow (a draft is launched), but never states when to use this versus fetching a cost estimate first, nor what conditions should block a launch. The precondition is only hinted at through the confirmed parameter's schema text.

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

dealmachine_patch_lists_list_idA
Destructive
Inspect

Update list. Update the name of a list. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds genuinely non-redundant behavior: a human-approval gate tied to the confirmed flag and the fact that writes are never retried automatically. That retry semantics detail matters for a non-idempotent mutation and isn't derivable from the annotations. It stops short of describing failure modes or what state is left behind.

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 short sentences, front-loaded with purpose before the safety constraints. There is mild redundancy between 'Update list' and 'Update the name of a list', but nothing that wastes an agent's attention.

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 destructive, non-idempotent mutation with no output schema, the description covers the essentials an agent could get wrong (approval gating, no automatic retry). It omits what a successful or failed patch returns, permission requirements, and whether other list fields are preserved, which leaves meaningful gaps for a write operation.

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

Parameters3/5

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

Schema coverage is only 33%: list_id and confirmed have descriptions, but the nested body/name field does not (its min/max length constraints are in the schema only). The description clarifies that the body update is limited to the name and that confirmed is an approval gate, which adds some meaning, but it leaves the body object's structure largely to 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 states a specific verb and resource ('Update list') and then narrows the scope to renaming ('Update the name of a list'). That distinguishes it from siblings such as dealmachine_delete_lists_list_id, dealmachine_get_lists_list_id and dealmachine_list_add_items. It does not name those siblings explicitly, 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 Guidelines4/5

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

It gives a concrete precondition for use ('Requires user approval and confirmed=true before changes or credit use'), which tells the agent exactly what gate must be satisfied before calling. It does not compare against alternatives or state when not to use it, so it lacks the explicit routing that a 5 requires.

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

dealmachine_patch_mail_campaigns_idA
Destructive
Inspect

Update campaign. Update a draft campaign. Only draft campaigns can be updated. Audience updates must use exactly one of property_ids, contact_ids, or list_ids. Sending steps replaces the whole step set, so include every step you want to keep. To add properties to a ready, active or paused campaign, use POST /campaigns/{id}/properties. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint/idempotentHint, but the description adds non-derivable behavior beyond them: credit use requires confirmed=true and explicit user approval, and writes are never auto-retried. The whole-step-set replacement warning is exactly the kind of side effect an agent cannot infer and would otherwise cause data loss with.

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?

Dense and front-loaded, with the destructive precondition and the alternative endpoint placed first. The opening "Update campaign. Update a draft campaign." is mildly redundant, but the rest of the sentences each carry a distinct constraint.

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 destructive, non-idempotent mutation with no output schema and a nested body, the description covers eligibility, confirm gating, retry behavior, and set-replacement hazards. It doesn't say what a successful response looks like, which is the remaining minor gap.

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 33%, so the description must compensate and largely does: it encodes the mutual-exclusivity rule for property_ids/contact_ids/list_ids that the schema does not express as a oneOf, and explains steps as replace-all. Secondary body fields (name, description, qr_code_url, address_to, contact fields) get no mention, which keeps it from a 5.

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 the verb and resource ("Update a draft campaign") and immediately narrows scope with "Only draft campaigns can be updated," which is the key distinction from the other campaign tools. An agent can tell this apart from dealmachine_mail_campaign_add_properties or _send without opening a schema.

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

Usage Guidelines5/5

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

Gives explicit preconditions (draft-only), a field-level rule (audience updates must use exactly one of property_ids, contact_ids, or list_ids), and names the correct alternative endpoint for ready/active/paused campaigns. It also states the approval gate before mutation, so the agent knows when-not and what to do instead.

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

dealmachine_patch_mail_designs_idB
Destructive
Inspect

Update design. Update a design. Supplied HTML is validated before saving. Publishing revalidates both effective draft sides and requires complete front and back HTML. Custom HTML with one outer div declaring inline width and height: 4x6 = 1800 x 1200, 6x9 = 2700 x 1800, 6x11 = 3300 x 1800 CSS pixels. Use inline styles only. Stylesheets, scripts, SVG and embedded documents are unsupported. Put spacing, borders and layout inside the outer div; root transforms, margins and padding are unsupported. Each side must be nonempty and at most 2 MB. Invalid or ambiguous canvases return 400 VALIDATION_ERROR before saving. The API parses and sanitizes HTML without running a browser. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, and the description goes meaningfully beyond them: pre-save validation, sanitization without a browser, 400 VALIDATION_ERROR surfacing, per-side 2 MB cap, the confirmation gate, and the note that writes are never retried automatically. The notable gap is PATCH merge semantics — it never says whether omitted fields are left untouched, which matters most for a partial-update tool.

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

Conciseness3/5

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

The first two sentences are pure waste, and the validation/canvas rules are dumped as one long run-on block. The substantive content is dense and front-loaded well enough, but the duplicated HTML constraints and the redundant opening cost it structure points.

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 destructive, nested-body update tool with no output schema, the HTML authoring constraints, size limits, error behavior and approval requirement are all covered in useful detail. What is missing is the core update contract: which body fields are optional, whether the operation merges or replaces, and what a successful response contains.

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 33%; the id and confirmed parameters are already documented in the schema, and the html_front/html_back field descriptions repeat the body text almost verbatim, so the description adds little there. It does clarify the publish interaction by noting that publishing revalidates both draft sides, but name, theme and layout remain unexplained in both schema and 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?

The opening two sentences ('Update design. Update a design.') merely restate the name and title, which is near-tautological. The rest of the text reveals that the tool updates a mail design's HTML sides and can publish the draft, but it never enumerates the other mutable fields (name, theme, layout) or distinguishes itself from siblings like dealmachine_post_mail_designs or dealmachine_patch_mail_campaigns_id.

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?

There is real conditional guidance about publishing ('Publishing... requires complete front and back HTML') and a hard prerequisite ('Requires user approval and confirmed=true'), which is more than implied usage. However, there is no statement of when to choose this over the create endpoint or the get endpoint, and no exclusion or typical workflow context.

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

dealmachine_patch_mail_return_addresses_idA
Destructive
Inspect

Update return address. Update a return address. If address fields change, the new address is re-validated via USPS. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.6/5.0
Behavior5/5

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

Beyond the destructive/non-idempotent annotations, it discloses that changed address fields trigger USPS re-validation (an external side effect), that user approval plus confirmed=true is mandatory, and that writes are never auto-retried. These are meaningful operational traits not captured by 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.

Conciseness3/5

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

The critical constraints (USPS re-validation, approval/confirmed, no retry) are front-loaded and useful, but the duplicative opening 'Update return address. Update a return address.' is wasted text that should have been a single differentiated purpose statement.

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 destructive mutation with annotations covering the safety profile and no output schema, the behavioral story (validation, approval, retry) is well covered. However, the nested body's fields remain undocumented in both schema and description, leaving a real gap for a multi-field update.

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 33%; the nested body object fields have no descriptions. The description compensates partially by explaining confirmed=true and by implying body contains address fields subject to re-validation, but it gives no field-level detail for name/city/state/label/address lines.

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 verb (update) and resource (return address), but the opening two sentences ('Update return address. Update a return address.') merely restate the tool name and title. It never distinguishes this mutation from siblings like post_mail_return_addresses_id_default or delete_mail_return_addresses_id.

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 a concrete invocation precondition — 'Requires user approval and confirmed=true before changes or credit use' — which tells the agent exactly when and how it may be called. It stops short of explicit when-not/alternative guidance versus sibling tools, so it's clear context without exclusions.

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

dealmachine_patch_mail_settingsA
Destructive
Inspect

Update mail settings. Update one or more organization-level mail settings. Only the fields you include are changed; omitted fields are left untouched. Pass null to clear a setting back to its default. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.2/5.0
Behavior5/5

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

The description adds substantial behavior beyond annotations: partial-update semantics, null-clears-to-default behavior, the confirmed=true approval requirement, and the fact that writes are never retried automatically. These details materially inform safe invocation of a destructive, non-idempotent mutation.

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 core partial-update behavior and approval prerequisite stated early. The first two sentences are somewhat redundant, but the remaining sentences carry useful, non-repetitive behavior details.

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 nested-object mutation tool with annotations and no output schema, the description covers the key invocation semantics: partial updates, null clearing, approval confirmation, and no automatic retries. It does not describe response or error behavior, but the essential information needed to call it correctly is present.

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 documents the individual settings fields, and the description adds crucial body-level semantics: only included fields are changed, omitted fields are untouched, and null clears a setting to its default. The confirmed parameter's approval meaning is also reinforced in the 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?

The description states a specific verb and resource: update organization-level mail settings. It is clear enough to distinguish from read-only sibling tools like get_mail_settings, but it does not explicitly name an alternative or sibling for routing.

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 explains the update context and prerequisite that user approval plus confirmed=true are required before changes or credit use. It does not explicitly address when not to use this tool or name a read/view alternative, but the usage context is clear.

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

dealmachine_patch_prospectsA
Destructive
Inspect

Move prospects in bulk. Move the prospects for up to 1,000 records between active, opportunity, and archived in one call: the bulk form of the single update, and what the app’s selection action bar runs. Records that are not prospects are skipped, as are prospects already in the requested lifecycle; the response counts each. Archiving always ends each prospect’s mail and, unless cascade is false, closes its open opportunities. List memberships are kept either way. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructive/non-idempotent/non-read-only; the description adds substantial context beyond them: records not prospects or already in the target lifecycle are skipped and counted, archiving always ends mail, cascade closes open opportunities, list memberships are kept, user approval plus confirmed=true is required, and writes are never retried automatically. This is exactly the behavior an agent needs before a destructive bulk 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-loaded with the core action ('Move prospects in bulk') and organized as scope, then skip semantics, then side effects, then approval. Dense but each sentence carries operational weight; the archiving/mail/cascade sentences are slightly repetitive with the schema's cascade description.

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 nested-body bulk mutation with no output schema, the description covers side effects, skip behavior, response counting ('the response counts each'), approval requirements, and retry policy. Nothing an agent needs in order to call this safely 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 only 50%, so the description must compensate; it correctly explains cascade semantics (mail always ends even when false) and the confirmed=true approval gate. It does add the 1,000-record ceiling and the lifecycle targets, though record_type and the record_id formats are left to 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?

States a specific verb ('Move'), resource ('prospects'), scope ('in bulk', 'up to 1,000 records'), and the target states (active, opportunity, archived). It explicitly positions itself against the sibling single-update tool ('the bulk form of the single update') and against the app's selection action bar, so an agent can distinguish it from dealmachine_prospect_update without reading either 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 context for when to use: bulk moves of many records in one call, matching the app's selection action bar. The phrase 'the bulk form of the single update' implies the single-record alternative, but it never names it explicitly or states the exclusion ('use dealmachine_prospect_update for one record'). Clear guidance, but no explicit when-not.

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

dealmachine_patch_prospects_id_notes_note_idA
Destructive
Inspect

Edit prospect note. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, and the description adds real behavioral context beyond them: a mandatory approval gate and the fact that failed writes are never auto-retried. It stops short of saying what a failed or partial edit leaves behind, which is the remaining gap for a destructive 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?

Three short sentences, front-loaded with the action and immediately followed by the approval constraint. No filler, though the sentence fragment style leaves some terms implicit.

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 destructive, non-idempotent mutation with nested parameters and no output schema, the description covers the approval and retry semantics but omits whether the edit replaces or merges note content and what comes back. Adequate 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 only 33%, so the description carries extra burden. It correctly explains the gating role of `confirmed` (approval before change or credit use), but says nothing about the `body` payload, the note content being replaced, despite that being the core nested input.

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 ("Edit prospect note"), which clearly separates it from the delete and get siblings on the same note path. It does not explicitly name prospect_note_add as the create-side alternative, but the mutating scope is unambiguous.

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?

Gives a prerequisite (user approval plus confirmed=true) rather than a when-to-use rule. An agent can infer this is for modifying an existing note and not for creating one, but nothing explicitly routes to dealmachine_prospect_note_add or dealmachine_delete_prospects_id_notes_note_id.

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

dealmachine_patch_tags_idA
Destructive
Inspect

Update tag. Rename, describe, recolor, reorder, or archive a workspace tag. Built-in tags return 403. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.3/5.0
Behavior5/5

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

Going well beyond the annotations, it discloses the 403 failure mode for built-in tags, an approval gate requiring confirmed=true, and the non-retry policy for writes. Those are exactly the operational facts an agent needs before firing a destructive PATCH that annotations alone (destructiveHint, idempotentHint=false) cannot convey.

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

Conciseness5/5

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

Five short sentences, front-loaded with the action and the affected fields, then constraints. Nothing is repeated from the schema or annotations and no sentence is 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 destructive nested-body mutation with no output schema, the description covers the failure case, the approval workflow, and retry behavior. The main remaining gap is PATCH semantics — whether omitted fields are preserved or cleared — which matters for a partial-update 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?

At only 33% schema description coverage, the description compensates by mapping each verb to a body field: rename→name, describe→description, recolor→badge_variant, reorder→sort_order, archive→is_active. It also explains the meaning of confirmed. It omits the sort_order bounds and whether unspecified fields are left untouched.

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 ("Update tag") and then enumerates the exact mutations: rename, describe, recolor, reorder, archive. That enumeration distinguishes it in practice from dealmachine_delete_tags_id and dealmachine_post_tags, though no sibling is named explicitly.

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 a clear when-not condition (built-in tags return 403) and a hard precondition (user approval plus confirmed=true) before any change. It stops short of explicitly routing to the delete or reorder siblings, but the mutation scope is unambiguous.

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

dealmachine_patch_tasks_idB
Destructive
Inspect

Update task. Update a task. Set is_completed to true to mark as done. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=false. The description adds meaningful non-schema behavior: user approval/confirmed=true is required, and writes are never retried automatically. It does not explain partial-update semantics or effects on omitted fields, but it adds useful context beyond annotations.

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

Conciseness3/5

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

Short and front-loaded, but the first two sentences are redundant ('Update task. Update a task.'), wasting space. The remaining sentences earn their place by disclosing approval and retry behavior.

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 destructive PATCH with a nested body and no output schema, the description covers approval/retry requirements but omits partial-update behavior, permissions beyond approval, and most field semantics. Given low schema coverage, it is only minimally complete 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 coverage is only 33%, and the description explains just is_completed (while confirmed's schema already documents that field). It says nothing about path.id or most body fields such as title, due_date, person_id, property_id, opportunity_id, or assignment fields, so it fails to compensate for low coverage.

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 opens with 'Update task. Update a task.' which largely restates the title; it adds that setting is_completed marks done, but gives no scope or differentiation from siblings like get_tasks_id, delete_tasks_id, or post_tasks. It is a clear verb+resource but with a vague, repetitive purpose statement.

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 states a prerequisite: requires user approval and confirmed=true before changes. However, it does not say when to choose this tool over alternatives like delete_tasks_id or post_tasks, nor any exclusions. Usage is only implied beyond the approval gate.

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

dealmachine_patch_webhooks_idA
Destructive
Inspect

Update webhook. Change the URL, events, batch size, contact opt-in, or turn the webhook on or off. Re-enabling clears its failure count. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds genuinely new behavioral facts: re-enabling clears the failure count, and writes are never retried automatically. Those two statements materially change how an agent should handle failure and retry, which annotations alone do not convey. It stops short of describing the response or partial-update semantics for omitted 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?

Four short sentences, front-loaded with the verb and the mutable field list, with the confirmation requirement and non-retry caveat in descending priority. Slight redundancy with the schema's own description of the confirmed parameter, but nothing is padded.

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 destructive, open-world PATCH with no output schema and a nested body object, the definition covers the important unknowns: approval gating, a state side effect (failure count reset), and retry behavior. Missing only the partial-update contract for omitted fields and any hint about the returned representation.

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 only 33%, so the description must carry semantic weight, and it does: it maps 'events' to event_types, 'batch size' to batch_max, 'contact opt-in' to include_contacts, and on/off to is_active, plus it explains the confirmed=true gate. Only the free-text description field is left unaddressed, a minor omission.

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 ("Update webhook") and enumerates exactly which attributes can change: URL, events, batch size, contact opt-in, active status. This clearly separates it from dealmachine_delete_webhooks_id, dealmachine_get_webhooks_id, and the read/rotate/test webhook siblings, though it never names an alternative explicitly.

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?

"Requires user approval and confirmed=true before changes or credit use" gives a real precondition for invoking the tool, which is more than most mutation definitions offer. However it gives no guidance on related workflows, e.g. inspecting current config via dealmachine_get_webhooks_id first or choosing between patching versus recreating a webhook.

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

dealmachine_people_countA
Read-onlyIdempotent
Inspect

Count matching people without consuming credits. Filters use the people catalog.

NameRequiredDescriptionDefault
filtersNo
locationsYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the description correctly focuses on the one behavioral fact annotations cannot express: this call is free. That is genuinely valuable billing context. It does not disclose the shape or precision of the result (exact vs. approximate count), which would be the natural complement.

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 sentences with the differentiator (no credits) front-loaded. Nothing is wasted, though the second sentence is telegraphic and could be a clause clearer without adding length.

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?

No output schema exists, so the description is the only place an agent could learn what a 'count' response looks like — a bare number, a per-location breakdown, an estimate — and it says nothing. Combined with zero coverage on the locations parameter, the definition is adequate to invoke but not to interpret the result.

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% at the top level, so the description must compensate — 'Filters use the people catalog' does add real meaning by telling the agent that filter_id values come from the people catalog (dealmachine_filters), not the property catalog. However, the more complex `locations` parameter (types, polygon/bounds/radius, OR semantics) is given no treatment in the 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?

Uses a specific verb+resource ('Count matching people') that clearly separates it from dealmachine_people_search (which returns records) and dealmachine_property_count (which counts a different entity). It stops short of explicitly naming those siblings, so an agent has to infer the routing, but the core purpose is unambiguous.

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?

'Without consuming credits' implies the intended pattern — call this to size a search before spending on dealmachine_people_search — but that workflow and the alternative tool are never stated. Usage is implied rather than prescribed, and there is no guidance on when this tool is inappropriate.

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

dealmachine_people_getA
Destructive
Inspect

Returns one person by DealMachine person ID (id, required), with their name, phones, emails, optional extended fields and associated properties. Needs a connected DealMachine account with paid access. The person costs one people credit; chargeable property fields or associated properties can consume property credits.

NameRequiredDescriptionDefault
idYes
fieldsNo
property_limitNo
include_propertiesNo

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations, it discloses the connected paid-account prerequisite and valuable billing behavior: one people credit per person, with possible additional property credits for chargeable fields or associated properties. It does not explain what destructive side effect destructiveHint=true represents, leaving that part of the supplied behavioral profile unclear.

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 compact sentences front-load the operation and scope, then cover access prerequisites and credit consumption. There is no filler, and the billing detail is specific enough to earn 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 four-parameter billable lookup without an output schema, the description covers the core result, required identifier, access requirement, and important cost behavior. Fuller optional-parameter documentation, explicit sibling routing, and clarification of the destructive annotation would make it more complete.

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

Parameters3/5

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

With 0% schema description coverage, the text usefully clarifies that id is required and conveys the purpose of extended fields and associated properties, including their potential cost. However, it never explains property_limit, valid field identifiers, defaults, or how include_properties and property_limit interact.

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 gives a specific operation and resource: return one person by DealMachine person ID, including contact details and optional extended or property data. The single-record, known-ID scope functionally distinguishes it from dealmachine_people_get_many and dealmachine_people_search.

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 establishes a clear use case: the caller has a person ID and wants that person's details, with paid access and credit costs affecting the decision to call. It does not explicitly direct unknown-ID lookups to people_search or bulk retrieval to people_get_many, so selection guidance is not exhaustive.

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

dealmachine_people_get_manyA
Destructive
Inspect

Returns up to 250 people by DealMachine person ID (ids, required), with their names, phones, emails, optional extended fields and associated properties. Needs a connected DealMachine account with paid access. Each found person costs one people credit; chargeable property fields or associated properties can consume property credits.

NameRequiredDescriptionDefault
idsYes
fieldsNo
property_limitNo
include_propertiesNo

TDQS

A3.9/5.0
Behavior4/5

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

Adds substantive behavior beyond the annotations: paid-access requirement and a per-person credit charge with a secondary property-credit cost for chargeable fields or associated properties. That is exactly the kind of consumption/side-effect context annotations cannot express. It does leave the odd destructiveHint=true unexplained, since the described operation only returns data.

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: capability and scope first, then access prerequisite, then cost model. No filler, no repetition of schema constraints, and the most decision-relevant fact (cost) lands early enough to matter.

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

Completeness4/5

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

With no output schema and 0% schema coverage on four parameters, the description covers capability, prerequisites, cost, and the meaning of each parameter at a conceptual level. What is missing is partial-failure behavior (unknown or missing IDs) and any hint about the response envelope, which matters for a batch call up to 250 items.

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%, so the description must carry the load, and it does: ids is flagged as required, 'optional extended fields' maps to fields, and 'associated properties' maps to include_properties/property_limit. It does not explain the 250/100 caps or the interaction between property_limit and include_properties, which the schema only bounds numerically.

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 with scope: 'Returns up to 250 people by DealMachine person ID', plus enumerated return contents (names, phones, emails, extended fields, associated properties). The 'by person ID' phrasing implicitly distinguishes it from the search and single-get siblings, but it never names those siblings to make the routing explicit.

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?

Provides prerequisite context (connected DealMachine account with paid access) and a cost model, which shapes willingness to call, but gives no explicit when-to-use-this-vs-alternative guidance against dealmachine_people_search, dealmachine_people_get, or dealmachine_people_count. The batch-by-ID use case is implied rather than stated.

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

dealmachine_post_activity_searchB
Read-onlyIdempotent
Inspect

Search activity. Query your past searches, enrichments, and exports. Filter by activity type, date range, or specific entity IDs — or use free-text search. This endpoint does not consume credits. Retrieves data without changing records or spending credits. Requires confirmed=true for this request.

NameRequiredDescriptionDefault
bodyYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so 'Retrieves data without changing records' is pure repetition. The genuinely additive part is 'This endpoint does not consume credits', which matters in an API where siblings burn credits. However, 'Requires confirmed=true for this request' sits uneasily with a free, read-only call and is never explained, leaving the agent unsure whether a confirmation gate actually exists.

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

Conciseness3/5

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

Front-loaded and short, but 'This endpoint does not consume credits' and 'without changing records or spending credits' say the same thing twice, and the closing confirmed=true sentence adds ambiguity rather than information. Two sentences could be cut without loss.

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 read-only list tool with no output schema, an agent still lacks return-shape and pagination guidance, and the required 'confirmed' flag on a non-credit, non-mutating call is never justified. Credit-cost disclosure is a real strength, but the confirmation contradiction leaves a gap an agent must guess at.

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 50% schema description coverage, the description compensates well for the body object by mapping intent to the filters: activity type, date range, entity IDs, and free-text search. It says nothing about pagination, sort, or the legacy top-level 'types' vs 'filters.type' precedence the schema flags, and the confirmed parameter's meaning is muddled rather than clarified.

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 verb and resource ('Search activity', 'Query your past searches, enrichments, and exports') and enumerates the dimensions that can be filtered. It is clear what the tool returns conceptually, but it never names the sibling that returns a single record (dealmachine_get_activity_activity_id) or dealmachine_get_exports, so the boundary is left to inference.

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 gives the filter options and the free-text alternative, which implies when the tool is appropriate, but it never states when to prefer it over get_activity_activity_id, get_exports, or get_prospects_id_activity. There are no explicit exclusions or prerequisites beyond the unexplained 'confirmed=true' line.

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

dealmachine_post_addresses_validateA
Destructive
Inspect

Validate addresses. Validate and standardize US addresses using USPS address data. Returns USPS-standardized versions of each submitted address along with a validation status indicating whether the address is deliverable. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.7/5.0
Behavior4/5

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

Adds the key traits the agent needs beyond the annotations: the call consumes credits, requires an approval gate via confirmed=true, and writes are never auto-retried. That explains why destructiveHint=true and idempotentHint=false are set on what looks like a read-style validation. It could go further on cost magnitude or partial-failure behavior, but the gating and non-retry semantics are the important disclosures.

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?

Six short sentences, front-loaded with the purpose before the operational constraints. The opening 'Validate addresses. Validate and standardize...' repeats the title and restates itself, a minor waste in an otherwise tight definition.

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

Completeness4/5

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

With no output schema, the description usefully explains the return: standardized addresses plus a deliverability status per address. Combined with the approval and credit gating, an agent has enough to call it safely. Missing only batching and per-address failure handling, which the schema partly covers.

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 sits at 50%, so the description should carry more weight than it does. It reinforces confirmed=true and that each submitted address is validated, but it says nothing about the full_address vs. structured-fields alternative or the 1000-item batch cap, leaving the nested body variant selection entirely to 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?

States a specific verb and resource: 'Validate and standardize US addresses using USPS address data.' That is far more specific than the title alone. It stops short of differentiating from the sibling dealmachine_enrich_address or dealmachine_get_addresses_autocomplete, so an agent must open the schema to know which address tool to pick.

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?

Gives a real prerequisite ('confirmed=true' after user approval before credit use), which is useful when-to-call guidance. It never says when to choose this over the other address-related siblings or when validation is unnecessary, so the routing decision is only implied.

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

dealmachine_post_enrichment_reverse_geocodeA
Destructive
Inspect

Reverse geocode. Look up properties by latitude/longitude coordinates (reverse geocoding). Returns the closest property within 300 feet. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.7/5.0
Behavior4/5

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

Adds meaningful context beyond the annotations: it consumes credits, requires explicit user approval via confirmed=true, returns the closest match within a 300-foot radius, and is never retried automatically. That retry and credit disclosure is exactly the kind of behavior an agent needs and the annotations don't convey. It stops short of saying what the 300-foot radius miss returns or what the property payload contains.

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?

Four short sentences, front-loaded with what the tool does before the operational caveats. The opening 'Reverse geocode.' repeats the title and is mildly redundant, but nothing else wastes space.

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 two-parameter, credit-consuming tool with rich annotations and a fully described nested schema, the description covers purpose, the key return fact (closest property within 300 feet), credit/approval requirements, and retry behavior. The main remaining gaps are the absence of output-detail guidance and the missing differentiation from the overlapping enrich_latlng sibling.

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 50%, with the nested body object (coordinate array with min/max items, fields, contact_audience credit semantics) documented reasonably well in the schema itself. The description adds nothing about the parameters — not the 250-coordinate cap, not the fields use case, not the contact_audience credit tradeoff. Adequate only because the schema carries the load.

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?

Specific verb and resource: 'Look up properties by latitude/longitude coordinates' with the added constraint that it returns the closest property within 300 feet. An agent immediately knows what the tool does. It does not, however, distinguish itself from the sibling dealmachine_enrich_latlng, which appears to serve the same reverse-geocoding purpose.

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?

Gives one real usage prerequisite — user approval and confirmed=true are required for credit use — but never states when to pick this over dealmachine_enrich_latlng, dealmachine_enrich_address, or dealmachine_property_search. The when-to-use is implied by the tool's name rather than explained.

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

dealmachine_post_lists_list_id_buildA
Destructive
Inspect

Build list from search filters. Add the records matching the given filters and locations to this list. Records already on the list stay, so building again adds to it. Runs asynchronously: the response is this list with status building; poll GET /v1/lists/{list_id} until status is completed. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses asynchronous execution with a `building` status and polling instructions, states that existing records are retained, requires user approval and confirmed=true, and warns that writes are never retried automatically. These details complement the destructiveHint and non-idempotent annotations without contradicting them.

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

Conciseness5/5

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

Front-loads purpose, then layers behavior, async polling, and approval requirements in a tight sequence. Every sentence carries operational value: scope, additive behavior, async status, polling, approval, and retry policy. 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?

No output schema exists, but the description explains the response (the list with status `building`) and how to poll to completion. It also covers approval prerequisites and retry semantics, making it complete for an agent to call this destructive, asynchronous mutation 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 33%; the nested filter and location parameters are documented in the schema itself with useful property-level descriptions. The description mentions filters, locations, and confirmed=true in prose but does not add meaning for add_as_prospects or prospect_search_id, leaving some parameters unilluminated 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 verb and resource (build a list) and the precise scope: add records matching given filters and locations to this list. It also distinguishes the operation from siblings implicitly by describing filter-driven building rather than adding specific items (list_add_items) or creating a list (list_create). An agent can tell what this does 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?

Clear guidance on behavior: existing records stay, building again adds to the list, and user approval with confirmed=true is mandatory before changes or credit use. It does not explicitly name alternative siblings (e.g., list_add_items for explicit items vs. this tool for filter-based builds), leaving a small gap in when-to-use vs. what-not.

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

dealmachine_post_lists_list_id_exportA
Destructive
Inspect

Export list. Export all items from a completed list. The list must have status "completed" before export. Credits are charged per record. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.6/5.0
Behavior4/5

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

Adds real value beyond the annotations: per-record credit cost, an explicit user-approval requirement before credit use, and the fact that writes are never auto-retried. It does not explain whether the call is synchronous or returns an export job/id to poll, which matters given there is no output schema and a sibling get_exports_exportId 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?

Short, front-loaded sentences that lead with the action and then the preconditions. The opening pair ('Export list. Export all items from a completed list.') is mildly redundant but costs little.

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 destructive, credit-consuming mutation with a nested body and no output schema, the description covers preconditions and cost but omits result handling (sync vs async, export id retrieval) and most body parameters. Adequate to avoid misuse on the cost/approval side, incomplete on the data side.

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 adds no meaning beyond the schema — the only parameter it mentions, confirmed=true, is already described in the schema. Key body fields such as limit and fields, plus the nested body structure, remain undocumented in both places, so the description fails to compensate for the coverage 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?

States a specific verb and resource: export all items from a list, with the 'completed' status precondition. An agent can distinguish it from read-style siblings like get_lists_list_id_items, but it never names those alternatives or explains how it differs from other export entry points (post_people_export, property_export).

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 a hard precondition (list must have status 'completed') and an approval gate (user approval + confirmed=true) that must be satisfied before calling. It stops short of routing guidance — nothing says to use get_lists_list_id_items for a preview or get_exports_exportId to fetch results instead.

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

dealmachine_post_lists_list_id_importA
Destructive
Inspect

Import IDs into list. Add property or person ids to this list, matching the list's source_type. Records already on the list stay, so importing again adds to it. Runs asynchronously: the response is this list with status building; poll GET /v1/lists/{list_id} until status is completed. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses asynchronous execution with a `building` status and the specific poll target, the credit-use/approval gate via confirmed=true, and that writes are never retried automatically. These are exactly the operational facts an agent needs before a non-idempotent, destructive-flagged write.

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?

Front-loads the action in one word, then layers constraint, idempotency behavior, async/polling contract, and approval requirement in five tight sentences. Nothing repeats what annotations already say and no sentence is 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?

With no output schema, the description correctly describes the response shape (the list with status `building`) and the follow-up poll. Minor gap: it says nothing about partial-failure behavior or the practical batch limits, which matter for a 1,000,000-item import.

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 33%, so the description carries meaningful weight, and it does explain the source_type matching rule and the confirmed gate. But it never touches `add_as_prospects`, whose default-true behavior changes whether records become prospects in the workspace — a material side effect left only to 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 states a specific verb and resource — importing property or person IDs into a specific list — and clarifies the source_type matching constraint, which disambiguates the two record kinds. It does not, however, distinguish this from the sibling dealmachine_list_add_items or dealmachine_post_lists_list_id_build, leaving the agent to infer which operation applies.

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 operating context: IDs must match the list's source_type, re-importing is additive rather than replacing, and the user must approve and set confirmed=true. It stops short of naming when to prefer this over the sibling add-items or build endpoints, so an agent facing overlapping list-mutation tools still has to guess.

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

dealmachine_post_mail_campaignsA
Destructive
Inspect

Create campaign. Create a new mail campaign. Each step can reference an existing design or provide a design_prompt to generate one; designs are HTML, so generation is instant (no polling required). Provide at most one audience type: property IDs, contact IDs, or saved list IDs. With an audience, set launch=true to send immediately, or leave it as a draft and call POST /campaigns/{id}/send later. Set accepts_properties=true to keep adding properties with POST /campaigns/{id}/properties after it starts; without it the campaign works as before and ends when its mail is done. Without an audience, the campaign is saved as ready with no properties and no charge, and it accepts properties: add them any time with POST /campaigns/{id}/properties. Saving as ready needs a name that does not start with "Draft - " and a design on every step. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already flag destructive/openWorld/non-idempotent, and the description adds genuinely non-obvious behavior: credit use and changes require user approval with confirmed=true, writes are never auto-retried, saving without an audience incurs no charge, and design generation is instant with no polling. These are exactly the operational risks an agent needs before invoking a paid, destructive 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?

Purpose is front-loaded and the sentences are dense with distinct rules rather than filler. It is a single long block that repeats some schema-documented behavior (launch defaults, accepts_properties defaults), and the redundant opening sentence could be dropped.

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 complex, credit-consuming mutation with a nested body and no output schema, the description covers audience rules, draft-vs-ready-vs-launch states, post-creation property additions, approval gating, and retry semantics. It does not say what the response returns (e.g., the new campaign id), which an agent would need to chain follow-up calls.

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 moderate and the nested properties already carry descriptions, but the description adds constraints not present in the schema: the name must not start with 'Draft - ' and every step needs a design when saving as ready. It also restates the audience mutual-exclusivity and accepts_properties rules, which are already in the schema, so it is additive but partly redundant.

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 second sentence states a clear verb+resource ('Create a new mail campaign'), which unambiguously separates it from the read/patch siblings (get_mail_campaigns, patch_mail_campaigns_id). The opening 'Create campaign.' merely restates the title and adds nothing, but the rest is specific about what is being created and how steps/audiences work.

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 explicit branching: with an audience, either launch=true now or leave as draft and call POST /campaigns/{id}/send later; without an audience, it is saved as ready and accepts properties. It also states the accepts_properties=true condition for adding properties after start. The only gap is that it names HTTP endpoints rather than the sibling tool names (dealmachine_mail_campaign_send, dealmachine_mail_campaign_add_properties).

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

dealmachine_post_mail_campaigns_id_pauseA
Destructive
Inspect

Pause campaign. Pause an active campaign, or a ready campaign that accepts properties. Properties added while it is paused wait at step 1 until it is resumed. Mail already submitted to the vendor will still be delivered. An ended campaign cannot be paused. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations by explaining the exact consequences of the call: newly added properties queue at step 1 until resume, already-submitted mail still delivers, and writes are never auto-retried. It also discloses the approval/confirmed prerequisite, which the destructiveHint annotation alone would not convey.

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 action, then layered consequences and constraints in short, information-dense sentences. The opening 'Pause campaign.' slightly duplicates the title/annotations, but every following 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?

For a destructive, credit-consuming mutation with no output schema, the description covers preconditions, side effects, and failure semantics well. It stops short of describing what the call returns (e.g., resulting campaign state), which would complete the picture.

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 50%; the description clarifies the meaning of 'confirmed' (only true after user approval of the change or credit use), which adds real value. However it never states that path.id is the campaign identifier, so half the parameter surface is left to the schema and the tool 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?

States a specific verb (pause) and resource (campaign), then qualifies which campaign states are pausable ('active campaign, or a ready campaign that accepts properties'). This distinguishes it clearly from the sibling resume/cancel/end tools without needing to open a 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 concrete when-to-use context (active or ready-with-properties campaigns) and an explicit when-not ('An ended campaign cannot be paused'). It also gates invocation on user approval with confirmed=true. It does not name the alternative siblings (resume, cancel, end) directly, which keeps it from a 5.

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

dealmachine_post_mail_campaigns_id_resumeA
Destructive
Inspect

Resume campaign. Resume a paused campaign. An ended campaign cannot be resumed. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructive=true, idempotent=false and openWorld=true; the description adds genuinely new behavioral facts: the approval gate, the confirmed=true requirement before credit use, the unrecoverable ended-state restriction, and that writes are never auto-retried. Those are exactly the traits an agent needs before calling a destructive, credit-consuming mutation.

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 and only four short sentences, with the safety-critical constraints placed early. The opening 'Resume campaign.' merely restates the name/title and is redundant with the sentence that follows, a minor waste.

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

Completeness4/5

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

For a destructive, non-idempotent mutation with no output schema, the definition covers preconditions, approval, and retry semantics, which is most of what matters. It says nothing about what resuming actually does to recipients, scheduled sends, or credits consumed, leaving some behavioral consequence unexplained.

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%, but both fields carry descriptions; the description nevertheless adds meaning by tying confirmed=true to an external user-approval event and to credit usage, which the schema's field text does not state. The nested path.id parameter is left to the schema's 'Resource ID' label, a small remaining 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?

States a specific verb and resource ('Resume a paused campaign') and immediately bounds the scope with 'An ended campaign cannot be resumed.' That precondition is what distinguishes it from the sibling pause/end/cancel operations, so an agent can select 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 a clear usage condition — only paused campaigns, never ended ones — plus a hard prerequisite (user approval and confirmed=true) before any change or credit spend. It does not explicitly name alternatives to use for ended campaigns, which keeps it short of a 5.

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

dealmachine_post_mail_designsA
Destructive
Inspect

Create design. Create a mail design from custom HTML, or save a prompt as a draft. Custom HTML with one outer div declaring inline width and height: 4x6 = 1800 x 1200, 6x9 = 2700 x 1800, 6x11 = 3300 x 1800 CSS pixels. Use inline styles only. Stylesheets, scripts, SVG and embedded documents are unsupported. Put spacing, borders and layout inside the outer div; root transforms, margins and padding are unsupported. Each side must be nonempty and at most 2 MB. Invalid or ambiguous canvases return 400 VALIDATION_ERROR before saving. The API parses and sanitizes HTML without running a browser. Publishing requires complete validated front and back HTML. Prompt-only designs cannot be auto-published. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already flag a destructive, non-idempotent, open-world write, but the description adds real operational context beyond them: writes are never retried automatically, credit use requires approval, invalid canvases return 400 VALIDATION_ERROR before saving, and HTML is parsed and sanitized without running a browser. That tells the agent both how failures surface and that a retry is unsafe.

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 purpose then constraints, and nearly every sentence carries actionable rules. The main inefficiency is that the long canvas/HTML-rules passage appears twice in the schema (html_front and html_back) and again in the description, so a portion of the text is redundant rather than value-adding.

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 destructive nested-object write with no output schema, the description covers validation, publishing and approval well. It does not say what a successful call returns (design ID, draft status) or how the design must later be attached to a campaign, which an agent needs to chain the next step.

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 50% schema coverage, the description does meaningful work: it explains the pixel canvas per size option, the inline-style-only constraint, the 2 MB per-side cap, and that auto_publish degrades to a draft unless both sides carry validated HTML. Still missing is any meaning for theme, layout, include_street_view or orientation beyond what their short schema strings say.

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 opening sentence pairs a specific verb with the resource ('Create a mail design') and immediately distinguishes the two creation modes: custom HTML versus a saved prompt draft. An agent can tell this is the create endpoint rather than the update path (dealmachine_patch_mail_designs_id) 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?

It states the conditions that select each mode ('Custom HTML', 'or save a prompt as a draft'), that publishing requires complete validated front and back HTML, and that prompt-only designs cannot be auto-published. It also sets a hard prerequisite of user approval and confirmed=true. It stops short of naming sibling alternatives such as patch_mail_designs_id for edits.

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

dealmachine_post_mail_return_addressesA
Destructive
Inspect

Create return address. Create a new return address. The address is validated via USPS before saving. If the address is invalid, the request is rejected. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.6/5.0
Behavior4/5

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

Goes meaningfully beyond the annotations: annotations only say not-readonly, destructive and non-idempotent, while the description adds that addresses are validated via USPS, that invalid addresses cause the whole request to be rejected, that approval is required, and that writes are never auto-retried. The rejection-on-invalid and no-retry semantics are exactly the kind of context an agent needs before a destructive write.

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

Conciseness3/5

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

Front-loaded and short, but the first two sentences say the same thing twice ('Create return address. Create a new return address.'), which is pure duplication. The remaining clauses each earn their 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 destructive, non-idempotent write with no output schema, the description covers the critical facts: validation gate, rejection behavior, approval/confirmed requirement, and no automatic retry. Only the response shape and the effect of set_as_default go unmentioned, which is 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 50% with a nested body object, and most leaf properties (name, state, address_1, address_2, set_as_default) already carry schema descriptions. The description only reinforces the confirmed parameter's meaning, adding no syntax or format detail for the nested address fields.

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 ('Create a new return address'), and the tool name plus the USPS validation clause make the operation unambiguous against siblings like get_mail_return_addresses or patch_mail_return_addresses_id. It never explicitly names those alternatives, 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 Guidelines3/5

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

The description tells you the preconditions for calling (user approval and confirmed=true) but not when to choose this over patching an existing address or setting one as default via dealmachine_post_mail_return_addresses_id_default. Usage context is implied by the verb rather than stated.

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

dealmachine_post_mail_return_addresses_id_defaultA
Destructive
Inspect

Set default return address. Set a return address as the default for your organization. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover destructiveHint=true, idempotentHint=false and openWorldHint=true, and the description adds genuine behavioral context beyond that: a user-approval gate, a confirmed flag requirement, mention of credit use, and the fact that writes are never auto-retried. What it doesn't disclose is the side effect on the previously-defaulted address, which matters for a destructive mutation.

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?

Four short sentences, front-loaded with the action before the preconditions. The first sentence is essentially a restatement of the annotation title, which is slightly wasteful, but nothing else pads the text.

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 destructive one-target mutation with annotations carrying the safety profile and no output schema, the description covers the critical operational facts (approval, confirmed flag, no retry). The remaining gap is the effect on the incumbent default address and whether this operation consumes credits.

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 50%, so the description has to compensate but doesn't fully. It restates the confirmed=true requirement (already documented in the schema) and leaves the nested path.id 'Resource ID' param unclarified — it never says the id is the return-address id being promoted to default.

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 gives a specific verb + resource ('Set default return address') and clarifies scope as organization-level ('as the default for your organization'), which distinguishes it from the update sibling dealmachine_patch_mail_return_addresses_id. It never names that sibling explicitly, so routing still relies on inference from the name.

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?

Usage context is stated concretely: this is the tool for making a return address the org default, and it must not be called until the user approves and confirmed=true is supplied. No explicit when-not guidance or named alternative (e.g. patch for editing address fields) is provided.

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

dealmachine_post_people_exportA
Destructive
Inspect

Export people to CSV. Export matching people as a CSV file. Returns signed download URLs. Limited to 1,000,000 records per export. Pass limit to export only the first N matching records. The request is synchronous — the response is returned once the export is complete (typically up to 30 seconds). Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false; the description adds real value beyond them by disclosing credit consumption, a 1,000,000 record ceiling, synchronous behavior with a typical 30-second ceiling, signed download URLs as the return, and that writes are never retried. It does not explain cost magnitude or what happens on timeout/partial failure, which keeps it below a 5.

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

Conciseness4/5

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

Front-loaded with purpose, then limits, latency, and the approval precondition in short scannable sentences. The opening two sentences are near-duplicates ('Export people to CSV' / 'Export matching people as a CSV file'), the only real waste in an otherwise tight description.

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 destructive, credit-consuming, synchronous export with a large nested body schema and no output schema, the description correctly covers the return value (signed URLs) and the approval gate. It is nonetheless incomplete on how to construct a valid request — the locations-or-people_ids requirement, filter discovery via dealmachine_filters, and deduplication behavior are all unaddressed.

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 schema is deeply nested, so the description must compensate. It clarifies the intent of limit (first N matches) and confirmed (approval gate), but adds nothing about anchor, filters, locations, people_ids, property_match or the list-exclusion protocols — the parameters that most determine a correct call. Only partial compensation.

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: 'Export people to CSV' / 'Export matching people as a CSV file'. An agent immediately knows this produces a downloadable CSV of people records. It does not name or distinguish itself from nearby siblings such as dealmachine_property_export or dealmachine_post_lists_list_id_export, so the sibling differentiation is left to inference.

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?

Provides a usage hint ('Pass limit to export only the first N matching records') and a hard precondition ('Requires user approval and confirmed=true before changes or credit use'), which is genuinely actionable. However there is no guidance on when to choose this over the other export tools, nor on what inputs are required (locations vs people_ids) to make a valid call.

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

dealmachine_post_phones_dncA
Destructive
Inspect

Check DNC status. Check Do Not Call (DNC) registry status and phone type for an array of phone numbers. Returns DNC status and phone type without performing a full person enrichment. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds the reasons behind that profile — credit use, a required confirmed=true approval gate, and no automatic retry of writes. This is useful context beyond the annotations, though it doesn't explain result limits or rate 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?

Four short sentences front-load the purpose before the approval/credit/retry caveats. The opening 'Check DNC status.' slightly duplicates the following sentence, but there is minimal waste overall.

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

Completeness4/5

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

With no output schema, the description helpfully states the return values (DNC status and phone type). It also covers the approval and retry behavior. Only minor gaps remain around batch/pagination and what 'phone type' values mean.

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 50% and the schema already describes both the phones array (max 1,000) and the confirmed flag. The description repeats 'array of phone numbers' and 'confirmed=true' without adding format or validation detail beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (check) and resource (DNC registry status and phone type) for an array of numbers. It explicitly distinguishes itself from a full person enrichment, which routes the agent away from siblings like dealmachine_enrich_phone.

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 'without performing a full person enrichment' clause implies when to prefer this over an enrichment tool, and it notes approval is needed for credit use. However, no sibling is named explicitly and there are no stated when-not conditions, so 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.

dealmachine_post_prospects_checkA
Read-onlyIdempotent
Inspect

Check prospect state. For up to 500 record IDs, say which are prospects and where they are. Use it to avoid duplicate adds. Retrieves data without changing records or spending credits. Requires confirmed=true for this request.

NameRequiredDescriptionDefault
bodyNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, yet the description adds real context: no credit spend and no record mutation, plus a required confirmed=true gate. It does not explain why a read-only, zero-cost call still needs confirmation when the schema says confirmed is for 'this change or credit use', leaving a small ambiguity.

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?

Four short, front-loaded sentences with the core capability first and the guardrail last. Minor waste in 'Retrieves data without changing records', which largely repeats the readOnly annotation.

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?

No output schema exists, so the description must convey the return shape; 'say which are prospects and where they are' is vague about what 'where' means (list membership? tags? counts?). It also doesn't reconcile the confirmed=true requirement with the read-only, no-credit claim.

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 50% with a nested body object, so the description must carry weight. It restates the 500-ID cap and calls out the confirmed flag, but says nothing about record_type (property/person/company) and does not clarify that record_ids may be prefixed strings or bare numbers.

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?

Specific verb+resource ('Check prospect state') plus scope ('up to 500 record IDs, say which are prospects and where they are'). However, it never differentiates itself from the near-identical sibling dealmachine_get_prospects_by_record, which an agent could easily pick instead.

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 one intent ('Use it to avoid duplicate adds'), which implies usage before dealmachine_prospect_add, but no explicit when-not condition and no named alternative. With dealmachine_get_prospects_by_record and dealmachine_prospect_get in the sibling list, the agent is left to infer which one applies.

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

dealmachine_post_prospects_id_filesA
Destructive
Inspect

Register uploaded file. Step two: after the PUT succeeds, record the file on the prospect. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructive=true, readOnly=false, and idempotent=false, so the description does not need to restate safety. It adds useful context beyond annotations: user approval is required, confirmed=true gates the write, and writes are never retried automatically.

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, front-loaded with the action and sequence, with no filler. Every sentence contributes either purpose, prerequisite, or write behavior.

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 high-level workflow and approval gate well for a destructive write. However, it leaves important nested body parameters unexplained, which matters given the low schema description 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 low at 33%, so the description should compensate for undocumented parameters. It only mentions confirmed=true, which the schema already describes, and says nothing about path.id or the nested body fields s3_key, file_name, file_size, and content_type.

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: 'Register uploaded file' and 'record the file on the prospect.' It also distinguishes this step from its sibling upload-URL tool by explicitly framing it as 'Step two: after the PUT succeeds.'

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 usage context: call this only after the PUT succeeds, and require user approval plus confirmed=true. It does not explicitly name the upload_url sibling or list when not to use it, but the sequencing guidance is strong.

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

dealmachine_post_prospects_id_files_upload_urlA
Destructive
Inspect

Get file upload URL. Step one of attaching a file: returns a presigned URL to PUT the bytes to (valid 5 minutes, max 25 MB) and the s3_key to register afterwards with POST /files. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark it as destructive and non-idempotent, but the description adds important behavior: URL expires in 5 minutes, 25 MB max, approval is required, and writes are never retried automatically. These details go meaningfully beyond the annotations.

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

Conciseness5/5

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

The description is front-loaded with purpose, then gives the sequence and constraints in compact sentences. Every sentence carries operational value 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?

There is no output schema, and the description does a good job explaining the returned presigned URL and s3_key plus key constraints. It still omits some required body-field details (notably file_name and content_type), so it is not fully self-contained.

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 33%, and the description compensates partially by explaining confirmed=true and the 25 MB file_size cap. However, it does not explain the required body.file_name, content_type, or path.id semantics, leaving a clear gap for a low-coverage 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?

Names the specific action (get file upload URL) and identifies it as step one of attaching a file. It enumerates the return values (presigned URL and s3_key) and clearly separates this from the sibling registration endpoint POST /files.

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 states the sequence: use this first, PUT bytes to the URL, then register the s3_key with POST /files. It also states the approval precondition and confirmed=true requirement, leaving little inference for the agent.

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

dealmachine_post_prospects_id_photosA
Destructive
Inspect

Add prospect photo. Attach a photo to the prospect’s property from base64 (small images) or a public https URL (up to 10 MB). Needs an API key created by a user. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.9/5.0
Behavior4/5

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

Adds context beyond the annotations: it warns about approval and possible credit use, and discloses that writes are never retried automatically — important for a non-idempotent, destructive write. It doesn't say what an attach does to existing photos or what the failure/response shape is.

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?

Four short sentences, front-loaded with the action and the input options, then the prerequisites. 'Needs an API key created by a user' is slightly awkward but 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?

Covers the essential preconditions for a nested-parameter write with no output schema: auth requirement, approval flag, size limits, non-retry semantics. Remaining gaps (return value, effect on existing photos) 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 coverage is 33%; the description explains the two mutually exclusive image inputs and the confirmed gate, but caption, latitude, longitude, photo_type and the path id parameter get no meaning added in prose.

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 ('Add prospect photo', 'Attach a photo to the prospect's property') and names both accepted sources, making it clearly distinct from the sibling read/delete photo tools.

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

Usage Guidelines3/5

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

Gives an input-mode hint (base64 for small images, https URL for up to 10 MB) but never says when to prefer this over the sibling upload-url or files endpoints, nor when not to attach a photo. The confirmed=true gate is stated, which is real usage context.

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

dealmachine_post_prospects_id_tags_tag_idA
Destructive
Inspect

Add tag to prospect. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds real context beyond them: the human-approval gate, the required confirmed=true flag, and that writes are never retried automatically. That retry/approval policy is exactly the kind of behavior an agent cannot read off the annotations.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and immediately followed by the approval/retry constraints. No filler, though the sentences are terse enough that the connective intent between approval and confirmed=true is slightly compressed.

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 non-idempotent destructive mutation, the description covers the two things the schema and annotations cannot: the approval gate and the no-auto-retry policy. With no output schema, a brief note on the response would be the only missing piece, and the core call requirements are complete.

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

Parameters3/5

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

Schema coverage is reported at 50%; the nested prospect id, tag_id and confirmed all carry schema descriptions with examples. The description echoes confirmed=true but adds no format or constraint detail for the path parameters, so it does little beyond the schema baseline.

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 ('Add tag to prospect'), which cleanly separates it from the sibling dealmachine_delete_prospects_id_tags_tag_id. It doesn't name the alternative (e.g. dealmachine_prospect_tags_set) so sibling routing is left implicit, keeping it below 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?

Provides a precondition ('Requires user approval and confirmed=true before changes or credit use'), which is genuine usage guidance. However it never states when to use this single-tag endpoint versus dealmachine_prospect_tags_set or the delete counterpart, so the agent must infer routing from the name.

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

dealmachine_post_tagsA
Destructive
Inspect

Create tag. Add a workspace tag. Names are unique per workspace and cannot reuse a built-in tag’s name. Up to 200 tags per workspace. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations: the uniqueness rule, the built-in-name collision failure mode, the 200-tag ceiling, the mandatory human approval with confirmed=true, and the note that writes are never retried automatically. These are exactly the failure and retry semantics an agent needs for a non-idempotent mutation.

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?

Four short sentences, front-loaded with the action and followed by constraints in priority order. The opening pair "Create tag. Add a workspace tag." is mild redundancy rather than waste.

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

Completeness4/5

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

With no output schema and a nested body object, the description covers the critical rules: approval gate, capacity, name collisions, and non-retry behavior. The unexplained sort_order and description body fields are the remaining gap, plus an ambiguous mention of "credit use" for an operation that appears not to spend credits.

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 50%; the description explains confirmed=true's approval meaning and adds the uniqueness constraint on name, but sort_order and description are unexplained in both places. badge_variant is covered by the schema's own description, so the description adds only partial value.

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 ("Create tag. Add a workspace tag.") and scopes it to the workspace, which separates it from dealmachine_patch_tags_id and dealmachine_post_tags_reorder. It never names those siblings explicitly, so differentiation is implicit.

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 concrete preconditions for use: names must be unique per workspace, cannot collide with a built-in tag, and the workspace cap is 200. The requirement for user approval before calling is a clear gating rule. It stops short of saying which sibling to use for renaming/reordering.

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

dealmachine_post_tags_reorderA
Destructive
Inspect

Reorder tags. Set the display order of workspace tags. IDs not listed keep their order after the listed ones. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint and non-idempotent annotations, the description discloses that user approval and confirmed=true are required before changes or credit use, and that writes are never retried automatically. It also explains the ordering behavior for unlisted tag IDs.

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 four compact sentences, front-loads the core action, then adds ordering semantics and approval/retry behavior. Every sentence adds useful information with no repetition.

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, non-idempotent mutation tool, the description covers approval requirements, the confirmed flag, ordering semantics, and retry behavior. No output schema exists, and the key operational constraints an agent needs are present.

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 50%: confirmed is documented in the schema, while tag_ids has no schema description. The description compensates by explaining that IDs not listed retain order after listed ones and by reinforcing the confirmed=true requirement, though it does not describe tag_ids shape or limits.

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: 'Reorder tags. Set the display order of workspace tags.' It distinguishes the operation from sibling tools like dealmachine_patch_tags_id by making clear this changes ordering rather than individual tag fields.

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 when to use the tool: setting display order, with unlisted IDs keeping their order after listed ones. It does not explicitly compare against alternatives such as patch_tags_id, but the usage context is still clear.

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

dealmachine_post_tasksB
Destructive
Inspect

Create task. Create a new task. Optionally link it to an opportunity, property, or person. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
bodyNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, and the description adds meaningful context beyond them: the approval gate via confirmed=true and the fact that writes are never auto-retried. That retry/approval behavior is not visible in the annotations and is directly useful to an agent.

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

Conciseness3/5

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

The first two sentences are redundant restatements of the title, wasting the front-loaded position. The remaining sentences are dense and useful, so the description is compact overall but not efficiently led.

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 destructive write with a nested body of nine fields and no output schema, the description covers the safety/approval story but leaves most body field semantics and the response shape to the schema. Adequate but with clear gaps.

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?

Coverage is 50% with a nested body; the description notes optional linking to opportunity, property, or person, which echoes schema field descriptions, and explains the confirmed flag's meaning. It adds little about due_date, assigned_to_user_id, or the retired assigned_to_agent_id field, so a baseline 3 is right.

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 names a specific verb+resource (create a task), but opens with 'Create task. Create a new task.' which merely repeats the name and adds nothing. It does not distinguish this tool from siblings like dealmachine_patch_tasks_id or dealmachine_get_tasks, so an agent gets only the bare purpose.

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 states a real gating condition ('Requires user approval and confirmed=true') which implies when the call is legitimate, but gives no guidance on choosing this tool over patch_tasks_id or on when task creation is appropriate. Usage is implied rather than directed.

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

dealmachine_post_webhooks_id_deliveries_delivery_id_redeliverA
Destructive
Inspect

Redeliver. Queue one delivery to be sent again. Pass delivery_id=all with since to requeue every delivery after a time. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
queryNo
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds genuinely new context: user approval and `confirmed=true` are required, credits may be consumed, and writes are never retried automatically (explaining why manual redelivery exists). It stops short of describing what a redelivery produces or any rate limits.

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

Conciseness5/5

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

Four short sentences, front-loaded with the core action, then the bulk-mode rule, then the safety gate. No filler or restated 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?

For a destructive mutation with no output schema, it covers the approval gate, bulk behavior, and credit implications. It omits what the redelivery returns or whether a new delivery record/id is created, which would help an agent report results.

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 33% schema coverage, the description carries real weight: it documents the `delivery_id=all` sentinel value combined with `since`, a semantics the schema does not express, and reiterates the `confirmed` gate. The `id` (webhook) parameter is left to the schema's example 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?

Specific verb (redeliver) plus resource (a webhook delivery), and it immediately clarifies the scope: queue one delivery to be sent again, or all deliveries after a timestamp. An agent can distinguish it from the read-only `get_webhooks_id_deliveries_delivery_id` sibling without opening either 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 conditions for the two modes (single `delivery_id` vs `delivery_id=all` with `since`) and states the approval prerequisite (`confirmed=true`). It does not name a sibling alternative for inspecting deliveries first, so it stops short of a 5.

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

dealmachine_post_webhooks_id_rotate_secretA
Destructive
Inspect

Rotate webhook secret. Issue a new signing secret. The old one keeps validating signatures for 24 hours so your consumer can switch over. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint=true, idempotentHint=false) by disclosing the operational traits that matter: the old secret stays valid for 24 hours to allow consumer cutover, an explicit approval/confirmed gate exists, and writes are never auto-retried. These are exactly the details an agent needs before triggering an irreversible credential change.

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, front-loaded with the action and its immediate effect, then the grace period, then the approval gate. Every sentence carries distinct information with no 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 destructive, non-idempotent, openWorld mutation with no output schema, the description covers safety, approval, and the credential transition window. The only gap is the return shape (whether the new secret is returned in the response), which an agent must guess.

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 50% and the two parameters (nested path.id and confirmed) already carry their own descriptions with an example ID. The description restates that confirmed relates to approval but adds no new syntax or semantics, and it never explains the nested `path.id` wrapper. 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?

States a specific verb and resource ('Rotate webhook secret. Issue a new signing secret'), then defines the exact effect (a new secret replaces the old). This is clearly distinguishable from siblings like dealmachine_patch_webhooks_id (updating webhook config) or dealmachine_webhook_create.

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

Usage Guidelines4/5

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

Provides an explicit precondition for invocation: user approval is required and confirmed=true must be set before changes or credit use. It doesn't explicitly contrast with the patch/delete webhook siblings, so it falls short of full when/when-not routing, but the gating condition is unambiguous.

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

dealmachine_post_webhooks_id_testA
Destructive
Inspect

Send test event. Sends one ping event to the URL right now, signed like a real delivery, and returns what came back. Requires user approval and confirmed=true before changes or credit use. Writes are never retried automatically.

NameRequiredDescriptionDefault
pathYes
confirmedNoSet true only after the user approves this change or credit use.

TDQS

A4.4/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: it sends one ping immediately, signs it like a real delivery, returns the response, requires approval/confirmation, and notes writes are never retried automatically. This is consistent with the destructive/openWorld/non-idempotent annotations and does not contradict them.

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 front-loaded. It opens with the action, then explains the immediate test delivery, approval requirement, and retry behavior with no wasted sentences.

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 destructive/openWorld test-delivery tool with no output schema, the description covers the essential behavior: what is sent, that it is signed, that it returns a response, approval requirements, and no automatic retry. The only minor gap is that it does not elaborate on the shape of the returned response, though no output schema exists.

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 50% schema description coverage, the description partially compensates by reinforcing `confirmed=true` and approval requirements. However, it does not add meaning for the nested `path.id` webhook identifier beyond what the schema already provides, so parameter guidance remains adequate but incomplete.

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: sending a test `ping` event to a URL right now. It clearly distinguishes this from real webhook delivery or redelivery by calling it a test event and specifying one ping event. An agent can tell what it does 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?

The description provides clear context for use: testing a webhook URL by sending a signed ping. It also states a prerequisite: user approval and `confirmed=true` before changes or credit use. It does not explicitly compare against alternatives such as `redeliver`, but the intended usage is clear.

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

dealmachine_property_countA
Read-onlyIdempotent
Inspect

Counts properties matching locations (required) and filters, such as is_corporate_owned for corporation, LLC or business owners, or with anchor=people their matching contacts. Use the same anchor, contact_audience and require_phone as the search. Needs a connected DealMachine account; counting consumes no credits.

NameRequiredDescriptionDefault
anchorNo
filtersNo
locationsYes
require_phoneNoWith anchor=people, count only contacts with a phone
contact_audienceNoRequired for anchor=people; cannot be none

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent and non-destructive behavior, so the bar is lower. The description still adds two genuinely useful facts beyond them: a connected DealMachine account is required, and counting consumes no credits, which materially affects how aggressively an agent can call it. It stops short of describing the response payload.

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 sentences, front-loaded with what is counted and what is required, with the auth and credit notes correctly placed last. The clause 'or with anchor=people their matching contacts' is grammatically tangled and slows parsing of an important behavior.

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?

There is no output schema, so the description should say what comes back, yet it never states whether the result is a single integer, a per-location breakdown, or separate property and contact counts when anchor=people. Auth and cost are covered, and parameter prerequisites (contact_audience required for people) are partly covered, so it is adequate but with a clear 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 only 40%, so the description must carry weight: it does explain that anchor=people shifts the target to contacts, gives a concrete filter example (is_corporate_owned for corporation/LLC/business owners), and ties contact_audience and require_phone to the search tool's semantics. It leaves the location geometry parameters (radius, polygon, bounds, lat/lng) and the filter operator field entirely to 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?

States a specific verb and resource ('Counts properties matching locations and filters') and flags locations as required, plus the anchor=people variant that counts contacts instead. It implicitly separates itself from the search/count siblings by referencing 'the search' as a separate tool, but never names dealmachine_property_search or dealmachine_people_count explicitly.

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 instruction to reuse the same anchor, contact_audience and require_phone as the search implies this is a pre-flight/counting companion to a search call, and 'counting consumes no credits' hints at when it is cheap to use. However, there is no explicit statement of when to use count versus property_search or people_count, and no exclusion conditions.

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

dealmachine_property_exportA
Destructive
Inspect

Creates a downloadable CSV of properties or property-owner contacts matching locations and filters. Defaults to owner contact rows (contact_audience=owners, anchor=person) with names, phones, emails, and property addresses. contact_audience=none or anchor=property produces property rows without contacts. Exported records can consume credits.

NameRequiredDescriptionDefault
limitNoMaximum records to export
anchorNodefault: person for property-owner contact rows
fieldsNoAdditional fields to include. Omit for the owner-contact default fields.
filtersNo
locationsYes
scrub_dncNoExclude contacts on the Do Not Call registry
mobile_onlyNoOnly include wireless phone numbers
landline_onlyNoOnly include landline phone numbers
require_emailNoOnly include contacts with an email address
require_phoneNoOnly include contacts with a phone number
contact_audienceNodefault: owners; "none" creates a property-only export
active_phones_onlyNoOnly include phone numbers with active reported phone activity

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, but the description supplies the reason a nominally read-like operation is destructive: 'Exported records can consume credits.' That is real value beyond the structured fields. It still omits what the call returns (URL vs. async job) and whether the download expires.

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, front-loaded with the core verb-and-artifact, then defaults, then the alternate mode, then cost. No sentence is filler or a restatement of the 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 12-parameter tool with no output schema, the description should say what an export call yields (a link, a job, an emailed file) and roughly how credits scale with limit. It covers row-shape defaults well but leaves the delivery mechanics of a downloadable export unaddressed.

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 83%, so the schema already documents most parameters, including the defaults it restates. The description does add one genuinely new idea — the anchor/contact_audience interaction and which fields land in each row type — but it says nothing about limit, filters, or the many location shapes.

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 artifact ('Creates a downloadable CSV of properties or property-owner contacts') plus the scoping inputs (locations and filters). The CSV-deliverable framing implicitly separates it from sibling search/get tools, but no sibling is named, so differentiation is left to inference.

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 does explain configuration branches ('contact_audience=none or anchor=property produces property rows without contacts') and defaults, which is useful mode selection. However, it never says when to choose this export over dealmachine_property_search, dealmachine_people_search, or dealmachine_people_count, nor any prerequisite for export.

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

dealmachine_property_getA
Destructive
Inspect

Returns one property by DealMachine property ID (id, required), with its owners and their names, phones and emails by default. contact_audience=none returns property-only data. Needs a connected DealMachine account with paid access. Enriched data costs one property credit unless enrich=false; owner contacts cost people credits.

NameRequiredDescriptionDefault
idYesprop_XXXXX
enrichNofalse = base fields only, 0 credits
fieldsNoDealMachine property field IDs
contact_audienceNodefault: owners; use none for property-only data with zero people credits

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the paid-access prerequisite, that enriched data costs one property credit unless `enrich=false`, and that owner contacts consume separate people credits. These are the operational side effects that justify the conservative non-read-only/destructive flags, so the description adds real value rather than repeating structured data.

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 tight sentences, front-loaded with the identity and required parameter, then defaults, prerequisites, and costs. Nothing is redundant.

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 no output schema, the description compensates by stating what is returned by default (owners with names, phones, emails). For a 4-parameter lookup with full schema coverage, the prerequisites, defaults, and cost model make it complete enough to call 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%, so the baseline would be 3, but the description adds credit-level meaning to `enrich` and `contact_audience` ('zero people credits', 'one property credit') that the schema only hints at. The `fields` parameter is left to 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?

States a specific verb and resource ('Returns one property by DealMachine property ID'), and the singular 'one property ... by ID' implicitly separates it from the sibling listing/search tools (property_search, property_get_many). It never names a sibling explicitly, so the differentiation is inferred rather than stated.

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 context: call it with a DealMachine property ID, add `contact_audience=none` for property-only data, and use `enrich=false` to avoid credits. It does not say when to prefer property_search or property_get_many over this, so the routing guidance is partial.

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

dealmachine_property_get_manyA
Destructive
Inspect

Returns up to 25 properties by DealMachine property ID (ids, required), with their owners and their names, phones and emails by default. contact_audience=none returns property-only data. Needs a connected DealMachine account with paid access. Owner contacts cost people credits; same-cycle repeats are free.

NameRequiredDescriptionDefault
idsYes
enrichNo
contact_audienceNodefault: owners; use none for property-only data with zero people credits

TDQS

A4.2/5.0
Behavior4/5

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

Adds real context beyond the annotations: default inclusion of owner contacts, a hard 25-record cap, the paid-access prerequisite, per-contact credit consumption, and free repeats within the same cycle. The credit-cost disclosure is especially valuable given destructiveHint=true on what is otherwise a read-shaped tool. It stops short of describing what a partial/missing ID does or the shape of the response beyond field names.

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, front-loaded with the payload and cap, then the opt-out flag, then prerequisites and cost. Every clause carries operational information; nothing is redundant.

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

Completeness4/5

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

With no output schema and three parameters, the description covers the returned entities, default fields, batch limit, auth requirement and billing model adequately. The remaining hole is the undocumented `enrich` flag and the absence of any note on behavior when an ID is invalid or not found.

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 33%, and the description compensates partially: it marks `ids` as required and bounded at 25, and explains that `contact_audience` defaults to owners with `none` yielding zero-credit property-only data. The `enrich` boolean is left completely unexplained in both schema and description, leaving a genuine 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?

States a specific verb and resource (returns properties by DealMachine property ID), plus the batch ceiling of 25 and the default payload (owners with names, phones, emails). This clearly separates it from siblings like dealmachine_property_get (single ID) and dealmachine_property_search (criteria-based).

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 a concrete selection rule for the main variant: `contact_audience=none` for property-only data, and warns that a connected account with paid access is prerequisite. It does not explicitly route callers to dealmachine_property_get for a single ID or to dealmachine_property_search for discovery, so sibling differentiation is implied rather than stated.

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

dealmachine_prospect_addA
Idempotent
Inspect

Tracks one record or up to 1,000 records as prospects in the workspace. Records that are prospects already are returned unchanged; archived ones come back to active. Free; no credits are charged.

NameRequiredDescriptionDefault
favoriteNoAlso star them for the connected user
record_idsYesRecord IDs such as `prop_12345` or `person_777`, or bare numbers
record_typeNoWhat kind of record. Defaults to property.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare idempotentHint=true and destructiveHint=false, and the description adds real value beyond that: the exact idempotent outcome (existing prospects returned unchanged), the reactivation behavior for archived records, and that no credits are charged. It doesn't cover auth needs or the response shape.

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 compact sentences; the scope and batch limit come first, followed by the two behavioral facts an agent would otherwise get wrong (no-op on existing prospects, reactivation of archived). Nothing is wasted.

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 3-parameter, non-destructive, idempotent mutation with no output schema, the description covers cost, idempotency semantics, and batch limits. The only mild gap is what the call returns and any permission requirements.

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 record_ids, record_type, and favorite are already documented in the schema. The description only echoes the 1,000-record cap and adds no format or type-selection guidance beyond the schema's examples.

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 ('Tracks ... as prospects in the workspace') with a concrete batch bound of 1,000 records. It also defines the state transitions (already-prospects unchanged, archived reactivated), which separates it semantically from prospect_update, though siblings are never named.

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 the tool applies (adding records to the prospect set, reactivating archived ones) and mentions it is free of credit cost, but it does not say when to choose this over dealmachine_prospect_update or dealmachine_list_add_items, leaving routing to inference.

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

dealmachine_prospect_getA
Read-onlyIdempotent
Inspect

Returns one prospect by prospect ID, or by the record it tracks, with its lifecycle, status (Hot, Warm, Cold, Follow up, Do Not Contact; read only), tags, and note and file counts. Free.

NameRequiredDescriptionDefault
record_idNoRecord ID such as `prop_12345`, used when prospect_id is not known
prospect_idNoProspect ID such as `prospect_8812`
record_typeNoWhat kind of record. Defaults to property.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent and non-destructive, and the description adds genuinely new behavioral facts: the call is free (no credit consumption) and the status field is read-only. It does not say what happens when neither identifier is supplied, which is the main remaining 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?

A single front-loaded sentence with the lookup keys first and the returned payload second, followed by the cost note. 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?

With no output schema, the description carries the return-value burden and does so by enumerating lifecycle, status, tags and note/file counts. Only the fallback behavior when no identifier is given is missing, which is minor for a free lookup 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 coverage is 100%, so baseline is 3, but the description adds the important lookup-mode semantics: the tool accepts either a prospect ID or a record ID plus its type, information the zero-required-parameter schema does not make explicit.

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 (returns) and resource (one prospect) plus the two lookup keys and the returned fields, which clearly separates it from the sibling prospect_search / prospect_add tools. It stops short of naming the sibling, but the singular-vs-list distinction is unambiguous.

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 'or by the record it tracks' phrasing implies when to use record_id instead of prospect_id, and 'Free' hints it costs nothing to call. There is no explicit when-to-use/when-not guidance, e.g. whether to prefer this over prospect_search when only a property ID is known.

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

dealmachine_prospect_note_addBInspect

Adds a note (up to 10,000 characters) to a prospect. Free.

NameRequiredDescriptionDefault
bodyYesThe note text
prospect_idYesProspect ID such as `prospect_8812`

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent operation. The description adds useful context beyond annotations: the 10,000-character cap and the fact that the operation is free. However, it does not clarify whether notes are appended to existing notes, who can see them, or what permissions are required.

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 clauses with the core action front-loaded and no filler. The length constraint and cost note are both useful and efficiently placed.

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 two-parameter mutation with annotations and a fully described schema, the description covers the action, size limit, and cost. It is still missing important operational context such as whether the note is appended or replaces anything, what permissions are needed, and what the call returns.

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%, and the schema already documents both prospect_id and body, including the 10,000-character maximum. The description repeats the length cap but adds no additional parameter meaning such as ID format expectations or note-body formatting rules, 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.

Purpose4/5

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

The description gives a specific verb and resource: it adds a note to a prospect. That is enough to distinguish it from sibling tools like dealmachine_prospect_update or dealmachine_prospect_tags_set, though it does not explicitly name or contrast those 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?

The only usage-relevant information is the word "Free", which hints at cost but does not explain when to use this note tool versus updating a prospect, setting tags, or adding the prospect itself. There are no exclusions, prerequisites, or alternative-tool guidance.

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

dealmachine_prospect_tags_setA
DestructiveIdempotent
Inspect

Replaces the tags on a prospect with exactly the given tag IDs; an empty list clears them. Free.

NameRequiredDescriptionDefault
tag_idsYesTag IDs such as `tag_31`
prospect_idYesProspect ID such as `prospect_8812`

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds value the annotations don't: it specifies replace-in-full semantics (not merge), that an empty list is the clear path, and that the call is free. It does not mention failure behavior for unknown tag IDs or whether IDs are validated.

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 with zero filler; the replace semantics come first and the edge case (empty list) and cost note follow immediately.

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

Completeness4/5

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

For a 2-parameter mutation with no output schema and rich annotations, the description covers the essential behaviors: overwrite vs merge, clearing, and cost. Minor gaps remain around ID validation and response/return behavior, which matter less because the mutation semantics are clear.

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 goes beyond the schema by defining that tag_ids is a complete replacement set and that an empty array clears tags — semantics the schema itself does not state.

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 ('replaces') and resource ('tags on a prospect') with precise semantics — full overwrite, not append — which separates it from add-style siblings like dealmachine_list_add_items. It does not, however, explicitly distinguish itself from dealmachine_prospect_update, which could also touch prospect fields.

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?

There is no explicit when-to-use/when-not guidance or named alternative. The clause 'an empty list clears them' implicitly documents the clear operation, and 'Free' hints at a cost trade-off, but the agent must infer which sibling to pick for tag mutation.

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

dealmachine_prospect_updateA
DestructiveIdempotent
Inspect

Moves a prospect between active, opportunity, and archived, or stars it. Archiving ends its mail. With cascade enabled, it also closes open opportunities. List memberships are kept either way. Free.

NameRequiredDescriptionDefault
cascadeNoWhen archiving, close open opportunities. Mail ending is unaffected and list memberships are kept either way. Defaults to true
favoriteNo
lifecycleNo
prospect_idYesProspect ID such as `prospect_8812`

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true annotation by naming the concrete consequences: archiving ends mail, cascade closes open opportunities, and list memberships survive either way. It also volunteers cost information ("Free"), which no annotation covers. This is exactly the 'what gets destroyed' disclosure a destructive mutation needs.

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, each carrying distinct information: the action, the mail side effect, the cascade side effect, and the invariant (list memberships) plus cost. No filler and the primary action 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 destructive, idempotent mutation with no output schema, the description covers side effects, invariants, and cost well. It stops short of saying what the call returns or whether the prospect object is echoed back, but the idempotentHint annotation and lack of an output schema make that a minor gap.

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% (cascade and prospect_id documented; lifecycle and favorite are bare), yet the description compensates by enumerating the lifecycle states and explaining that favorite means 'stars it'. The cascade sentence also restates the key default behavior, though it doesn't clarify parameter interaction ordering.

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?

Specific verb plus resource: moves a prospect across the active/opportunity/archived lifecycle, or stars it. An agent can immediately distinguish this from dealmachine_prospect_add, dealmachine_prospect_get, and dealmachine_prospect_tags_set 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 Guidelines3/5

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

Usage is implied by the mutation semantics (use it to change lifecycle state or favorite flag), but the description never states when to prefer it over siblings like dealmachine_prospect_tags_set or dealmachine_list_add_items, nor any preconditions. The cascade note hints at a workflow decision but does not frame it as guidance.

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

dealmachine_signupA
Read-onlyIdempotent
Inspect

Start a free DealMachine account. Returns the secure browser signup URL. Ask the user to finish signup and connect DealMachine using OAuth. Never ask for passwords, payment details or API keys in chat. Signup does not purchase a plan.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description stays consistent with that by framing the tool as URL generation rather than the actual account creation. It adds real behavioral context annotations can't carry: the handoff to an out-of-band browser/OAuth flow and the prohibition on collecting passwords, payment details or API keys in chat.

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 in a deliberate order: what it does, what it returns, what the agent must do next, and what must never be requested. No repetition and no filler; the key safety rule is prominent.

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 zero-parameter tool with no output schema, the description supplies the critical missing pieces: the return value is a URL and the flow completes outside chat via OAuth. Minor gap: no note on whether the URL expires or is single-use, which would help an agent decide when to re-call.

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?

Zero parameters, so there is nothing to document; baseline 4 applies. The description correctly signals a no-argument call, and adding parameter text would be noise.

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+resource ('Start a free DealMachine account') and immediately discloses the concrete output ('Returns the secure browser signup URL'), so an agent knows exactly what calling it produces.

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?

Explains the required next step (ask the user to finish signup in the browser and connect via OAuth) and draws a boundary against the sibling checkout flow with 'Signup does not purchase a plan.' It never names dealmachine_checkout explicitly, so routing is implied 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.

dealmachine_tags_listA
Read-onlyIdempotent
Inspect

Lists the prospect tag catalog: the built-in tags every workspace has plus the workspace’s own, with how many prospects carry each. Free.

NameRequiredDescriptionDefault
include_inactiveNoInclude archived tags

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false. The description adds real context beyond them: the result mixes built-in and workspace tags, includes per-tag prospect counts, and costs no credits. It stops short of noting that archived tags are omitted by default.

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 with the resource, scope and return payload front-loaded; the closing "Free." is a deliberate and useful cost signal. No waste.

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

Completeness4/5

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

For a trivial single-optional-parameter read tool with full annotation coverage, the description covers what is returned (catalog plus counts) and who owns each tag. Only the default exclusion of archived tags is left implicit.

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 single include_inactive parameter with its "Include archived tags" description already carries the semantics. The description never mentions archived/inactive tags, so it adds nothing here — baseline 3 applies.

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 ("Lists") and a precise resource ("the prospect tag catalog"), then narrows scope to built-in plus workspace-owned tags with per-tag prospect counts. It is clearly distinct from the mutating sibling dealmachine_prospect_tags_set, though no sibling is named explicitly.

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 one-word note "Free" tells an agent there is no credit cost, which implicitly makes this a safe discovery call before tagging. However, it never states when to use this versus alternatives (e.g. before dealmachine_prospect_tags_set) or any exclusions.

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

dealmachine_usageA
Read-onlyIdempotent
Inspect

Returns live credit usage for the current billing cycle, including the total cap, spendable balance, monthly and additional pools, and usage by entity type. This read-only request is free.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description still adds real value beyond them: the data is "live" for the "current billing cycle" and the call itself is free, which matters for a credit-metered API where an agent weighs call 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?

Two tight sentences with zero waste: what is returned first, then the cost/read-only note. Every clause carries information an agent cannot get from the structured fields.

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 no output schema, the description carries the burden of describing return content, and it does so by enumerating the balance components and the entity-type breakdown. Annotations cover safety, so nothing an agent needs to invoke 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?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly implies no input is needed by framing the result as a snapshot of the current cycle.

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 verb and resource ("Returns live credit usage") and enumerates exactly what is included: total cap, spendable balance, monthly and additional pools, and usage by entity type. It is clearly distinguishable from the search/enrich siblings, though it never explicitly contrasts with dealmachine_account, which is the nearest neighbor in the credit/billing space.

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

Usage Guidelines3/5

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

Usage is only implied — an agent can infer it should call this before spending credits, reinforced by "This read-only request is free." There is no explicit when-to-use statement, no condition selecting it over dealmachine_account or dealmachine_plans, and no stated exclusions.

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

dealmachine_webhook_createAInspect

Registers an https URL to receive prospect and list events. Returns the signing secret once; relay it to the user. Free.

NameRequiredDescriptionDefault
urlYesPublic https URL that accepts POST requests
batch_maxNoMost events per request. Default 50
descriptionNo
event_typesYesEvent types such as `prospect.added`, `prospect.*`, or `*`
include_contactsNoInclude phone numbers and emails on person prospects

TDQS

A3.8/5.0
Behavior4/5

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

Adds real context beyond the annotations: the signing secret is returned exactly once and must be relayed to the user, and the operation is free. That 'returned once' warning is the critical operational detail an agent would otherwise miss. It does not address duplicate-URL behavior or verification/retry flow, keeping it from a 5.

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

Conciseness5/5

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

Three short sentences, zero filler, with the core action front-loaded and the agent-critical instruction ('relay it to the user') placed immediately after. Nothing is redundant with the title or annotations.

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 5-parameter mutation with no output schema, the description covers the action, the one-time secret return, and the cost. Remaining gaps (what happens on duplicate registration, whether the URL is verified before events flow) are modest but real for a non-idempotent create.

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 80%, so the schema already documents url, batch_max, event_types and include_contacts. The description adds no parameter-level meaning beyond the https constraint already in the schema, 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.

Purpose4/5

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

States a specific verb and resource ('Registers an https URL to receive prospect and list events'), which is unambiguous and clearly distinct from the read-only sibling dealmachine_webhook_list. It stops short of explicitly naming the sibling as an alternative, so it is clear but not fully differentiated in-text.

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 is implied by the description (you register a URL to receive events), but there is no explicit guidance on when to call this versus dealmachine_webhook_list, no prerequisites beyond the https constraint, and no note on whether re-registering the same URL is allowed or creates a duplicate.

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

dealmachine_webhook_listA
Read-onlyIdempotent
Inspect

Lists the workspace’s outbound webhooks with their event types and delivery health, plus the catalog of event types when asked. Free.

NameRequiredDescriptionDefault
include_eventsNoAlso return the event catalog with example bodies

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavioral value by disclosing the payload contents ('event types and delivery health') and that the event catalog can include example bodies. It stops short of mentioning pagination or ordering, which for a list tool would be the remaining useful detail.

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 that delivers scope, return contents, and the optional catalog behavior with no filler. The trailing 'Free' is short and carries a real cost signal.

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, fully-annotated, zero-required-parameter read tool with no output schema, the description tells the agent what comes back in enough detail to decide to call it. Only minor gaps remain (result ordering/pagination, whether delivery health is computed live).

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

Parameters3/5

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

Schema coverage is 100% and the single parameter's own description ('Also return the event catalog with example bodies') is already precise. The description's phrase 'when asked' restates that flag but adds nothing new about format or cost of enabling it. Baseline 3 applies when the 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?

States a specific verb ('Lists') and resource ('outbound webhooks') and names what is returned: event types, delivery health, and an optional event catalog. The read/list nature is distinguishable from the only sibling webhook tool, dealmachine_webhook_create, though the description never explicitly names an alternative.

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

Usage Guidelines3/5

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

Usage is only implied: 'plus the catalog of event types when asked' hints at the include_events flag, and 'Free' signals there is no cost barrier to calling it. There is no statement of when to prefer this over other listing tools or any exclusion/precondition.

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

dealmachine_whoamiA
Read-onlyIdempotent
Inspect

Returns whether the current credential is valid, the active organization name, and the authentication type. This read-only request is free.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the description is not required to restate safety. It does add genuinely new context: the request is free (no quota/cost impact) and it enumerates what the response contains, which is valuable for a credential probe.

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 short sentences with no filler; the return contents come first and the cost property is front-loaded at the end. Every clause carries independent 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?

With no output schema, the description carries the burden of describing returns and does so by naming the three values returned. It could go one step further on the failure case (what an invalid credential looks like), but for a zero-parameter probe it is nearly 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 tool takes zero parameters, so there is nothing to disambiguate and the schema is trivially complete. Baseline 4 applies; the description correctly implies the call is parameterless.

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 resource and outcome: credential validity, active organization name, and authentication type, which is more concrete than the bare name 'whoami'. It does not explicitly differentiate from nearby siblings like dealmachine_account or dealmachine_usage, but the identity/credential framing is distinct enough to be actionable.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is a pre-flight credential check, but the description never says when to call it or why it beats dealmachine_account for similar information. No exclusions or alternative routing is given.

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. 1 tool update
    • Changeddealmachine_post_lists_list_id_export1 field changed
      • addedInput schema / properties / body / properties / require_phone
        Added value: +{
        +  "description": "Only include people with a phone number on a person-anchored export.",
        +  "type": "boolean"
        +}
  2. 11 tool updates
    • Changeddealmachine_comps2 fields changed
      • addedInput schema / properties / criteria / properties / max_year_built
        Added value: +{
        +  "description": "Latest year built, inclusive. Either year bound excludes unknown years.",
        +  "maximum": 9999,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / criteria / properties / min_year_built
        Added value: +{
        +  "description": "Earliest year built, inclusive. Omit both year bounds for no year filter.",
        +  "maximum": 9999,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changeddealmachine_enrich_apn2 fields changed
      • addedInput schema / properties / data
        Added value: +{
        +  "description": "Batch of parcel lookups sharing the location and requested fields. Prefer one batch when the user requests multiple lookups.",
        +  "items": {
        +    "properties": {
        +      "apn": {
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "apn"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 250,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "apn"
        -]
    • Changeddealmachine_enrich_name3 fields changed
      • addedInput schema / properties / data
        Added value: +{
        +  "description": "Batch of name lookups sharing location, fields and pagination. Prefer batching multiple requested lookups.",
        +  "items": {
        +    "properties": {
        +      "first_name": {
        +        "type": "string"
        +      },
        +      "last_name": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "middle_initial": {
        +        "maxLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "last_name"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 250,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedInput schema / properties / last_name / description
        Previous value: -"Last name (required)"New value: +"Last name (required for a single lookup)"
      • removedInput schema / required
        Removed value: -[
        -  "last_name"
        -]
    • Changeddealmachine_get_mail_campaigns2 fields changed
      • changedInput schema / properties / query / properties / status / description
        Previous value: -"Filter by campaign status: draft, ready, active, paused or ended. The older values completed and cancelled still work and match the ended campaigns they matched before."New value: +"Filter by campaign status: draft, ready, active, paused, ended or archived. The older values completed and cancelled still work and match the ended campaigns they matched before."
      • changedInput schema / properties / query / properties / status / enum
        Previous value: -[
        -  "draft",
        -  "ready",
        -  "active",
        -  "paused",
        -  "ended",
        -  "completed",
        -  "cancelled"
        -]New value: +[
        +  "draft",
        +  "ready",
        +  "active",
        +  "paused",
        +  "ended",
        +  "archived",
        +  "completed",
        +  "cancelled"
        +]
    • Addeddealmachine_mail_campaign_archive
    • Changeddealmachine_patch_mail_designs_id2 fields changed
      • addedInput schema / properties / body / properties / html_back / description
        Added value: +"Custom HTML with one outer div declaring inline width and height: 4x6 = 1800 x 1200, 6x9 = 2700 x 1800, 6x11 = 3300 x 1800 CSS pixels. Use inline styles only. Stylesheets, scripts, SVG and embedded documents are unsupported. Put spacing, borders and layout inside the outer div; root transforms, margins and padding are unsupported. Each side must be nonempty and at most 2 MB. Invalid or ambiguous canvases return 400 VALIDATION_ERROR before saving. The API parses and sanitizes HTML without running a browser."
      • addedInput schema / properties / body / properties / html_front / description
        Added value: +"Custom HTML with one outer div declaring inline width and height: 4x6 = 1800 x 1200, 6x9 = 2700 x 1800, 6x11 = 3300 x 1800 CSS pixels. Use inline styles only. Stylesheets, scripts, SVG and embedded documents are unsupported. Put spacing, borders and layout inside the outer div; root transforms, margins and padding are unsupported. Each side must be nonempty and at most 2 MB. Invalid or ambiguous canvases return 400 VALIDATION_ERROR before saving. The API parses and sanitizes HTML without running a browser."
    • Changeddealmachine_post_mail_designs4 fields changed
      • changedInput schema / properties / body / properties / auto_publish / description
        Previous value: -"Automatically publish the design after creation"New value: +"Publish only when both sides have complete validated HTML; prompt-only designs remain drafts"
      • changedInput schema / properties / body / properties / html_back / description
        Previous value: -"Custom HTML for the back side"New value: +"Custom HTML with one outer div declaring inline width and height: 4x6 = 1800 x 1200, 6x9 = 2700 x 1800, 6x11 = 3300 x 1800 CSS pixels. Use inline styles only. Stylesheets, scripts, SVG and embedded documents are unsupported. Put spacing, borders and layout inside the outer div; root transforms, margins and padding are unsupported. Each side must be nonempty and at most 2 MB. Invalid or ambiguous canvases return 400 VALIDATION_ERROR before saving. The API parses and sanitizes HTML without running a browser."
      • changedInput schema / properties / body / properties / html_front / description
        Previous value: -"Custom HTML for the front side (alternative to prompt)"New value: +"Custom HTML with one outer div declaring inline width and height: 4x6 = 1800 x 1200, 6x9 = 2700 x 1800, 6x11 = 3300 x 1800 CSS pixels. Use inline styles only. Stylesheets, scripts, SVG and embedded documents are unsupported. Put spacing, borders and layout inside the outer div; root transforms, margins and padding are unsupported. Each side must be nonempty and at most 2 MB. Invalid or ambiguous canvases return 400 VALIDATION_ERROR before saving. The API parses and sanitizes HTML without running a browser."
      • changedInput schema / properties / body / properties / prompt / description
        Previous value: -"AI prompt to generate an HTML design. Returns immediately since HTML generation is fast."New value: +"Prompt saved with a draft. Supply complete HTML for both sides before publishing."
    • Changeddealmachine_post_people_export3 fields changed
      • changedInput schema / properties / body / properties / exclude_lists / anyOf
        Previous value: -[
        -  {
        -    "description": "Query Builder list protocol object. For people, use people_list_ids with numeric list IDs.",
        -    "example": {
        -      "people_list_ids": [
        -        123,
        -        456
        -      ]
        -    }
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Query Builder list protocol object, with numeric list IDs or list UUIDs. people_list_ids matches the people; property_list_ids matches their properties, so a person stays only through a property that is not on an excluded property list.",
        +    "example": {
        +      "people_list_ids": [
        +        123,
        +        456
        +      ]
        +    }
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / body / properties / fields / description
        Previous value: -"Field IDs to include in the export. Omit for the default set. Use person_coordinates to add separate person_latitude and person_longitude columns."New value: +"Field IDs to include in the export. Omit for the default set. Use person_coordinates to add separate person_latitude and person_longitude columns. Add prospect, prospect_source, prospect_added_by, prospect_added_date or prospect_status for the Prospect columns, read from the person on each row: prospect is Yes or No (archived prospects read No), prospect_added_date is the UTC day as YYYY-MM-DD, and the rest are blank when the person is not a prospect; they add no credits."
      • changedInput schema / properties / body / properties / include_lists / anyOf
        Previous value: -[
        -  {
        -    "description": "Query Builder list protocol object. For people, use people_list_ids with numeric list IDs.",
        -    "example": {
        -      "people_list_ids": [
        -        123,
        -        456
        -      ]
        -    }
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Query Builder list protocol object, with numeric list IDs or list UUIDs. people_list_ids matches the people; property_list_ids matches their properties, so a person stays only through a property that is not on an excluded property list.",
        +    "example": {
        +      "people_list_ids": [
        +        123,
        +        456
        +      ]
        +    }
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changeddealmachine_property_count3 fields changed
      • addedInput schema / properties / anchor
        Added value: +{
        +  "enum": [
        +    "properties",
        +    "people"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / contact_audience
        Added value: +{
        +  "description": "Required for anchor=people; cannot be none",
        +  "enum": [
        +    "owners",
        +    "owners_and_family",
        +    "renters",
        +    "residents",
        +    "none"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / require_phone
        Added value: +{
        +  "description": "With anchor=people, count only contacts with a phone",
        +  "type": "boolean"
        +}
    • Changeddealmachine_property_search2 fields changed
      • addedInput schema / properties / anchor
        Added value: +{
        +  "description": "Default properties; people returns contacts of matching properties",
        +  "enum": [
        +    "properties",
        +    "people"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / require_phone
        Added value: +{
        +  "description": "With anchor=people, only contacts with a phone",
        +  "type": "boolean"
        +}
    • Changeddealmachine_prospect_search5 fields changed
      • addedInput schema / properties / added_after
        Added value: +{
        +  "description": "Only prospects added on or after this ISO 8601 date or date-time. A date such as 2026-10-01 means midnight UTC",
        +  "type": "string"
        +}
      • addedInput schema / properties / added_before
        Added value: +{
        +  "description": "Only prospects added before this ISO 8601 date or date-time (not including it). A date means midnight UTC",
        +  "type": "string"
        +}
      • addedInput schema / properties / added_by
        Added value: +{
        +  "description": "Only prospects added by these user IDs, such as [7, 12]",
        +  "items": {
        +    "exclusiveMinimum": 0,
        +    "maximum": 9007199254740991,
        +    "type": "integer"
        +  },
        +  "maxItems": 100,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / source_group
        Added value: +{
        +  "description": "d4d for prospects added while driving; map for prospects added any other way",
        +  "enum": [
        +    "d4d",
        +    "map"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "description": "Only prospects with any of these statuses; none means no status set",
        +  "items": {
        +    "enum": [
        +      "hot",
        +      "warm",
        +      "cold",
        +      "follow_up",
        +      "do_not_contact",
        +      "none"
        +    ],
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
  3. 98 tool updates
    • Removeddealmachine_checkout
    • Addeddealmachine_delete_lists_list_id
    • Addeddealmachine_delete_lists_list_id_items
    • Addeddealmachine_delete_mail_designs_id
    • Addeddealmachine_delete_mail_return_addresses_id
    • Addeddealmachine_delete_prospects_id
    • Addeddealmachine_delete_prospects_id_files_file_id
    • Addeddealmachine_delete_prospects_id_notes_note_id
    • Addeddealmachine_delete_prospects_id_photos_photo_id
    • Addeddealmachine_delete_prospects_id_tags_tag_id
    • Addeddealmachine_delete_tags_id
    • Addeddealmachine_delete_tasks_id
    • Addeddealmachine_delete_webhooks_id
    • Removeddealmachine_driving_read
    • Addeddealmachine_get_activity_activity_id
    • Addeddealmachine_get_addresses_autocomplete
    • Addeddealmachine_get_driving_drives
    • Addeddealmachine_get_driving_drives_id
    • Addeddealmachine_get_exports
    • Addeddealmachine_get_exports_exportId
    • Addeddealmachine_get_lists
    • Addeddealmachine_get_lists_list_id
    • Addeddealmachine_get_lists_list_id_items
    • Addeddealmachine_get_locations_locationId
    • Addeddealmachine_get_mail_analytics_summary
    • Addeddealmachine_get_mail_analytics_timeseries
    • Addeddealmachine_get_mail_campaigns
    • Addeddealmachine_get_mail_campaigns_id
    • Addeddealmachine_get_mail_campaigns_id_analytics
    • Addeddealmachine_get_mail_campaigns_id_cost_estimate
    • Addeddealmachine_get_mail_campaigns_id_properties_estimate
    • Addeddealmachine_get_mail_campaigns_id_recipients
    • Addeddealmachine_get_mail_designs
    • Addeddealmachine_get_mail_designs_id
    • Addeddealmachine_get_mail_return_addresses
    • Addeddealmachine_get_mail_return_addresses_id
    • Addeddealmachine_get_mail_settings
    • Addeddealmachine_get_mail_wallet_balance
    • Addeddealmachine_get_mail_wallet_pricing
    • Addeddealmachine_get_mail_wallet_transactions
    • Addeddealmachine_get_prospects_by_record
    • Addeddealmachine_get_prospects_counts
    • Addeddealmachine_get_prospects_id_activity
    • Addeddealmachine_get_prospects_id_files
    • Addeddealmachine_get_prospects_id_files_file_id_download
    • Addeddealmachine_get_prospects_id_notes
    • Addeddealmachine_get_prospects_id_notes_note_id
    • Addeddealmachine_get_prospects_id_photos
    • Addeddealmachine_get_prospects_id_tags
    • Addeddealmachine_get_subscription
    • Addeddealmachine_get_tags_id
    • Addeddealmachine_get_tasks
    • Addeddealmachine_get_tasks_id
    • Addeddealmachine_get_webhooks_events
    • Addeddealmachine_get_webhooks_id
    • Addeddealmachine_get_webhooks_id_deliveries
    • Addeddealmachine_get_webhooks_id_deliveries_delivery_id
    • Removeddealmachine_mail_campaign_draft
    • Removeddealmachine_mail_read
    • Removeddealmachine_operation_execute
    • Removeddealmachine_operation_schema
    • Removeddealmachine_operations_search
    • Addeddealmachine_patch_lists_list_id
    • Addeddealmachine_patch_mail_campaigns_id
    • Addeddealmachine_patch_mail_designs_id
    • Addeddealmachine_patch_mail_return_addresses_id
    • Addeddealmachine_patch_mail_settings
    • Addeddealmachine_patch_prospects
    • Addeddealmachine_patch_prospects_id_notes_note_id
    • Addeddealmachine_patch_tags_id
    • Addeddealmachine_patch_tasks_id
    • Addeddealmachine_patch_webhooks_id
    • Removeddealmachine_plans
    • Addeddealmachine_post_activity_search
    • Addeddealmachine_post_addresses_validate
    • Addeddealmachine_post_enrichment_reverse_geocode
    • Addeddealmachine_post_lists_list_id_build
    • Addeddealmachine_post_lists_list_id_export
    • Addeddealmachine_post_lists_list_id_import
    • Addeddealmachine_post_mail_campaigns
    • Addeddealmachine_post_mail_campaigns_id_pause
    • Addeddealmachine_post_mail_campaigns_id_resume
    • Addeddealmachine_post_mail_designs
    • Addeddealmachine_post_mail_return_addresses
    • Addeddealmachine_post_mail_return_addresses_id_default
    • Addeddealmachine_post_people_export
    • Addeddealmachine_post_phones_dnc
    • Addeddealmachine_post_prospects_check
    • Addeddealmachine_post_prospects_id_files
    • Addeddealmachine_post_prospects_id_files_upload_url
    • Addeddealmachine_post_prospects_id_photos
    • Addeddealmachine_post_prospects_id_tags_tag_id
    • Addeddealmachine_post_tags
    • Addeddealmachine_post_tags_reorder
    • Addeddealmachine_post_tasks
    • Addeddealmachine_post_webhooks_id_deliveries_delivery_id_redeliver
    • Addeddealmachine_post_webhooks_id_rotate_secret
    • Addeddealmachine_post_webhooks_id_test
  4. 46 tool updates
    • First observeddealmachine_account
    • First observeddealmachine_checkout
    • First observeddealmachine_comps
    • First observeddealmachine_driving_read
    • First observeddealmachine_enrich_address
    • First observeddealmachine_enrich_apn
    • First observeddealmachine_enrich_email
    • First observeddealmachine_enrich_latlng
    • First observeddealmachine_enrich_name
    • First observeddealmachine_enrich_phone
    • First observeddealmachine_fields
    • First observeddealmachine_filters
    • First observeddealmachine_list_add_items
    • First observeddealmachine_list_create
    • First observeddealmachine_location_search
    • First observeddealmachine_mail_campaign_add_properties
    • First observeddealmachine_mail_campaign_cancel
    • First observeddealmachine_mail_campaign_draft
    • First observeddealmachine_mail_campaign_end
    • First observeddealmachine_mail_campaign_send
    • First observeddealmachine_mail_read
    • First observeddealmachine_operation_execute
    • First observeddealmachine_operation_schema
    • First observeddealmachine_operations_search
    • First observeddealmachine_people_count
    • First observeddealmachine_people_get
    • First observeddealmachine_people_get_many
    • First observeddealmachine_people_search
    • First observeddealmachine_plans
    • First observeddealmachine_property_count
    • First observeddealmachine_property_export
    • First observeddealmachine_property_get
    • First observeddealmachine_property_get_many
    • First observeddealmachine_property_search
    • First observeddealmachine_prospect_add
    • First observeddealmachine_prospect_get
    • First observeddealmachine_prospect_note_add
    • First observeddealmachine_prospect_search
    • First observeddealmachine_prospect_tags_set
    • First observeddealmachine_prospect_update
    • First observeddealmachine_signup
    • First observeddealmachine_tags_list
    • First observeddealmachine_usage
    • First observeddealmachine_webhook_create
    • First observeddealmachine_webhook_list
    • First observeddealmachine_whoami

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants and agents to query U.S. real estate data, including property lookups, comparables, property searches, skip tracing, phone/address verification, and investor buy boxes, through plain-language requests.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables property-data lookups by address, attribute-based property searches across 155M+ records, and skip-tracing to resolve owner contact information via the BatchData API.
    130 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables US address verification and standardization, validating deliverability and returning USPS-standardized data, plus property enrichment with 350+ tax assessor and deed attributes for a given address.
    9 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to comprehensive US property data, including automated valuations, tax history, comparable sales, and ownership details, enabling real estate analysis and market insights.
    140 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.