Keap MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Keap MCP ServerCreate a contact: John Doe, john@doe.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Keap MCP Server
Complete Model Context Protocol server for Keap (formerly Infusionsoft) with 111 tools and 22 React apps.
Features
š ļø Comprehensive Tool Coverage (111 tools)
Contacts: Full CRUD, search, tagging, custom fields, bulk operations, merge, email opt status
Companies: CRUD, search, company-contact associations
Opportunities: Complete sales pipeline (CRUD, stages, stage moves, search, bulk operations)
Tasks: CRUD, completion tracking, search, bulk updates
Appointments: CRUD, scheduling, calendar integration, search
Campaigns: CRUD, sequence management, contact additions, achievement tracking
Tags: CRUD, category management, contact tagging/untagging, bulk operations
Notes: CRUD, contact/opportunity associations, search
Emails: Send transactional and marketing emails, templates, tracking, opt status
Files: Upload, retrieve, associate with contacts/companies
E-commerce: Products, orders, subscriptions, payments, refunds, transaction history
Automations: Campaign builder sequences, goal tracking, link triggers
Settings: Account info, user management, custom fields, settings configuration
Affiliates: Program management, commissions, payouts, clawbacks, summaries
šØ MCP Apps (22 React Apps)
Contact Dashboard - Contact list with metrics and search
Contact Detail - Comprehensive contact profile view
Contact Grid - Data grid with filtering and bulk actions
Contact Timeline - Activity timeline and interaction history
Company Dashboard - Company overview and metrics
Company Detail - Detailed company information
Company Grid - Companies data grid with search
Deal Dashboard - Sales pipeline overview
Deal Detail - Opportunity details and stage tracking
Pipeline Kanban - Visual drag-and-drop pipeline management
Pipeline Funnel - Conversion funnel visualization
Task Manager - Task list with priorities and due dates
Appointment Calendar - Calendar view with scheduling
Campaign Dashboard - Campaign performance metrics
Campaign Detail - Campaign sequence and analytics
Email Composer - Rich email composition interface
Tag Manager - Tag organization and bulk tagging
Automation Dashboard - Campaign builder overview
Product Catalog - E-commerce product management
Order Dashboard - Order tracking and fulfillment
Order Detail - Detailed order information
Revenue Dashboard - Revenue analytics and reporting
Related MCP server: plunk-mcp
Installation
npm install @mcpengine/keapConfiguration
Environment Variables
KEAP_API_KEY=your_personal_access_tokenPersonal Access Token Setup
Log in to your Keap account
Navigate to Admin ā Settings ā Application
Click on API tab
Generate a new Personal Access Token
Copy the token and use it as
KEAP_API_KEY
MCP Settings (Claude Desktop)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"keap": {
"command": "npx",
"args": ["-y", "@mcpengine/keap"],
"env": {
"KEAP_API_KEY": "your_personal_access_token"
}
}
}
}Usage Examples
Create a Contact
{
"tool": "keap_create_contact",
"arguments": {
"given_name": "John",
"family_name": "Doe",
"email": "john.doe@example.com",
"phone": "555-0123",
"company_name": "Acme Corp",
"job_title": "CTO",
"tag_ids": [123, 456]
}
}Search Contacts
{
"tool": "keap_search_contacts",
"arguments": {
"email": "john@example.com",
"given_name": "John",
"order": "email",
"limit": 50
}
}Create an Opportunity
{
"tool": "keap_create_opportunity",
"arguments": {
"title": "New Website Project",
"contact_id": 12345,
"stage_id": 789,
"projected_revenue": 15000,
"opportunity_notes": "Interested in complete redesign"
}
}Move Opportunity Stage
{
"tool": "keap_move_opportunity_stage",
"arguments": {
"opportunity_id": 98765,
"stage_id": 790,
"notes": "Proposal sent, awaiting review"
}
}Tag Contacts
{
"tool": "keap_apply_tags_to_contacts",
"arguments": {
"contact_ids": [123, 456, 789],
"tag_ids": [10, 20]
}
}Send Email
{
"tool": "keap_send_email",
"arguments": {
"contact_ids": [12345],
"subject": "Welcome to our service!",
"html_content": "<h1>Welcome!</h1><p>Thank you for joining us.</p>",
"text_content": "Welcome! Thank you for joining us."
}
}Create a Product
{
"tool": "keap_create_product",
"arguments": {
"product_name": "Premium Subscription",
"product_price": 99.99,
"product_desc": "Monthly premium access",
"sku": "PREM-001",
"status": 1
}
}Create an Order
{
"tool": "keap_create_order",
"arguments": {
"contact_id": 12345,
"order_items": [
{
"product_id": 456,
"quantity": 2,
"price": 99.99
}
],
"order_title": "Q1 Subscription"
}
}Tool Reference
Contact Tools (19 tools)
keap_create_contact- Create new contactkeap_get_contact- Get contact by IDkeap_update_contact- Update contact detailskeap_delete_contact- Delete contactkeap_list_contacts- List all contacts (paginated)keap_search_contacts- Search contacts by criteriakeap_get_contact_emails- Get contact's email addresseskeap_create_contact_email- Add email to contactkeap_update_contact_email- Update email addresskeap_delete_contact_email- Remove email addresskeap_apply_tags_to_contact- Tag a single contactkeap_remove_tags_from_contact- Remove tags from contactkeap_get_contact_tags- List contact's tagskeap_merge_contacts- Merge duplicate contactskeap_apply_tags_to_contacts- Bulk tag multiple contactskeap_remove_tags_from_contacts- Bulk remove tagskeap_get_contact_opt_status- Check email opt-in statuskeap_opt_in_contact- Opt in contact for emailskeap_opt_out_contact- Opt out contact from emails
Company Tools (5 tools)
keap_create_company- Create new companykeap_get_company- Get company by IDkeap_update_company- Update company detailskeap_list_companies- List all companies (paginated)keap_search_companies- Search companies by criteria
Opportunity Tools (9 tools)
keap_create_opportunity- Create new opportunitykeap_get_opportunity- Get opportunity by IDkeap_update_opportunity- Update opportunity detailskeap_list_opportunities- List opportunities (paginated)keap_search_opportunities- Search opportunities by criteriakeap_move_opportunity_stage- Move opportunity to new stagekeap_get_opportunity_pipeline- Get pipeline stageskeap_bulk_update_opportunities- Update multiple opportunitieskeap_get_opportunity_stage_details- Get stage information
Task Tools (8 tools)
keap_create_task- Create new taskkeap_get_task- Get task by IDkeap_update_task- Update task detailskeap_delete_task- Delete taskkeap_list_tasks- List tasks (paginated)keap_search_tasks- Search tasks by criteriakeap_complete_task- Mark task as completekeap_bulk_update_tasks- Update multiple tasks
Appointment Tools (6 tools)
keap_create_appointment- Create new appointmentkeap_get_appointment- Get appointment by IDkeap_update_appointment- Update appointment detailskeap_delete_appointment- Delete appointmentkeap_list_appointments- List appointments (paginated)keap_search_appointments- Search appointments by criteria
Campaign Tools (7 tools)
keap_create_campaign- Create new campaignkeap_get_campaign- Get campaign by IDkeap_list_campaigns- List campaigns (paginated)keap_add_contact_to_campaign- Add contact to campaign sequencekeap_remove_contact_from_campaign- Remove contact from campaignkeap_get_campaign_sequence- Get campaign sequence detailskeap_get_campaign_achievements- Get campaign completion data
Tag Tools (5 tools)
keap_create_tag- Create new tagkeap_get_tag- Get tag by IDkeap_list_tags- List all tagskeap_create_tag_category- Create tag categorykeap_list_tag_categories- List tag categories
Note Tools (6 tools)
keap_create_note- Create new notekeap_get_note- Get note by IDkeap_update_note- Update note contentkeap_delete_note- Delete notekeap_list_notes- List notes (paginated)keap_search_notes- Search notes by criteria
Email Tools (7 tools)
keap_send_email- Send email to contactskeap_create_email_template- Create email templatekeap_get_email_template- Get template by IDkeap_list_email_templates- List email templateskeap_send_template_email- Send templated emailkeap_get_email_stats- Get email sending statisticskeap_check_email_deliverability- Check email configuration
File Tools (4 tools)
keap_upload_file- Upload file to Keapkeap_get_file- Download file by IDkeap_list_files- List uploaded fileskeap_delete_file- Delete file
E-commerce Tools (15 tools)
keap_create_product- Create new productkeap_get_product- Get product by IDkeap_update_product- Update product detailskeap_delete_product- Delete productkeap_list_products- List products (paginated)keap_create_order- Create new orderkeap_get_order- Get order by IDkeap_update_order- Update order detailskeap_list_orders- List orders (paginated)keap_create_subscription- Create recurring subscriptionkeap_get_subscription- Get subscription by IDkeap_cancel_subscription- Cancel subscriptionkeap_create_payment- Record paymentkeap_refund_payment- Process refundkeap_get_transaction_history- Get payment history
Automation Tools (6 tools)
keap_create_campaign_sequence- Create automation sequencekeap_get_campaign_sequence- Get sequence detailskeap_update_campaign_sequence- Update sequencekeap_create_campaign_goal- Create campaign goalkeap_get_campaign_goals- List campaign goalskeap_trigger_link_click- Trigger link-based automation
Settings Tools (5 tools)
keap_get_account_info- Get account informationkeap_list_users- List account userskeap_get_user- Get user detailskeap_list_custom_fields- List custom fieldskeap_create_custom_field- Create custom field
Affiliate Tools (9 tools)
keap_create_affiliate- Create affiliate accountkeap_get_affiliate- Get affiliate by IDkeap_list_affiliates- List affiliates (paginated)keap_update_affiliate- Update affiliate detailskeap_get_affiliate_commissions- Get commission historykeap_create_affiliate_payout- Create payoutkeap_create_affiliate_clawback- Reverse commissionkeap_get_affiliate_summary- Get performance summarykeap_search_affiliates- Search affiliates by criteria
Architecture
src/
āāā server.ts # MCP server setup
āāā main.ts # Entry point
āāā clients/
ā āāā keap.ts # Keap API client (REST API, rate limiting, error handling)
āāā tools/ # Tool definitions (14 files)
ā āāā contacts-tools.ts
ā āāā companies-tools.ts
ā āāā opportunities-tools.ts
ā āāā tasks-tools.ts
ā āāā appointments-tools.ts
ā āāā campaigns-tools.ts
ā āāā tags-tools.ts
ā āāā notes-tools.ts
ā āāā emails-tools.ts
ā āāā files-tools.ts
ā āāā ecommerce-tools.ts
ā āāā automations-tools.ts
ā āāā settings-tools.ts
ā āāā affiliates-tools.ts
āāā types/
ā āāā index.ts # TypeScript interfaces
āāā ui/
āāā react-app/ # MCP Apps (22 apps)
āāā contact-dashboard/
āāā contact-detail/
āāā contact-grid/
āāā contact-timeline/
āāā company-dashboard/
āāā company-detail/
āāā company-grid/
āāā deal-dashboard/
āāā deal-detail/
āāā pipeline-kanban/
āāā pipeline-funnel/
āāā task-manager/
āāā appointment-calendar/
āāā campaign-dashboard/
āāā campaign-detail/
āāā email-composer/
āāā tag-manager/
āāā automation-dashboard/
āāā product-catalog/
āāā order-dashboard/
āāā order-detail/
āāā revenue-dashboard/API Coverage
ā Contacts API (complete)
ā Companies API (complete)
ā Opportunities API (complete)
ā Tasks API (complete)
ā Appointments API (complete)
ā Campaigns API (complete)
ā Tags API (complete)
ā Notes API (complete)
ā Emails API (complete)
ā Files API (complete)
ā E-commerce API (complete - products, orders, subscriptions, payments)
ā Automations API (campaign sequences, goals, triggers)
ā Settings API (account info, users, custom fields)
ā Affiliates API (complete)
Rate Limiting
The Keap API enforces rate limits:
Burst limit: 10 requests per second
Daily limit: 10,000 requests per day (may vary by plan)
The MCP client automatically handles rate limiting with:
Exponential backoff on 429 responses
Request queuing
Automatic retry logic
Error Handling
All tools provide comprehensive error messages:
{
"isError": true,
"content": [
{
"type": "text",
"text": "Error: Contact not found (ID: 12345)"
}
]
}Common error scenarios:
Invalid authentication (401)
Rate limit exceeded (429)
Resource not found (404)
Validation errors (400)
Server errors (500)
Development
Build from source
git clone https://github.com/BusyBee3333/mcpengine
cd mcpengine/servers/keap
npm install
npm run buildRun in development mode
npm run devType checking
npx tsc --noEmitBuild React apps
cd src/ui/react-app
npm install
npm run buildBest Practices
Contact Management
Use tags effectively: Organize contacts with meaningful tags for segmentation
Custom fields: Leverage custom fields for industry-specific data
Merge duplicates: Regularly use
keap_merge_contactsto maintain data qualityOpt-in compliance: Always check opt status before sending marketing emails
Sales Pipeline
Consistent stage moves: Use
keap_move_opportunity_stageto track progressionRevenue tracking: Keep projected revenue updated for accurate forecasting
Pipeline hygiene: Regularly review and close stale opportunities
Automation
Campaign sequences: Build automated follow-up sequences for lead nurturing
Goal tracking: Set clear goals to measure campaign effectiveness
Link triggers: Use link-based triggers for behavior-based automation
E-commerce
Product catalog: Maintain accurate SKUs and pricing
Order tracking: Use order IDs consistently across systems
Subscription management: Monitor subscription status and renewal dates
Payment reconciliation: Regular transaction history reviews
Keap Plans & Features
Different Keap plans provide varying API capabilities:
Lite: Basic contact and email tools
Pro: Full CRM, sales pipeline, and automation
Max: E-commerce, advanced automations, affiliate management
Max Classic: Legacy features, additional e-commerce capabilities
Ensure your plan supports the features you intend to use via the API.
Troubleshooting
Authentication Issues
# Verify your API key
curl -H "X-Keap-API-Key: YOUR_API_KEY" https://api.infusionsoft.com/crm/rest/v1/account/profileRate Limiting
If you encounter frequent rate limits:
Reduce concurrent request volume
Implement longer delays between operations
Consider upgrading your Keap plan for higher limits
Contact Not Found
Ensure contact IDs are valid:
// First search for the contact
const result = await keap_search_contacts({
email: "user@example.com"
});
// Then use the returned IDMigration from Infusionsoft XML-RPC
If migrating from the legacy XML-RPC API:
Authentication: Replace legacy keys with Personal Access Tokens
Endpoints: Update from XML-RPC to REST API patterns
Data format: Convert XML structures to JSON
Field mappings: Review custom field IDs (may have changed)
License
MIT
Support
For issues and feature requests, please visit: https://github.com/BusyBee3333/mcpengine/issues
Related
Changelog
Version 1.0.0
Initial release
111 tools across 14 categories
22 React apps for visual interfaces
Full Keap REST API coverage
Rate limiting and error handling
Comprehensive TypeScript types
Available Tools
111 toolskeap_add_contact_to_campaignC
Add a contact to a campaign sequence
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID | |
| campaign_id | Yes | Campaign ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like idempotency, error handling, or side effects. It only states the basic action, leaving the agent unaware of important behaviors such as what happens if the contact is already in the campaign.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous content, but it sacrifices necessary details for brevity. While concise, it is under-specification and not optimally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of output schema, the description fails to explain the expected outcome or return value. It is incomplete, leaving the agent without sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for both parameters, achieving 100% coverage. The description adds no additional meaning beyond the schema, so it meets the baseline but does not enhance understanding of parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Add a contact to a campaign sequence', which is a specific verb and resource. However, it does not differentiate from the sibling tool 'keap_add_contact_to_sequence', which could cause confusion as both involve adding a contact to a sequence or campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool over alternatives, such as 'keap_add_contact_to_sequence' or 'keap_remove_contact_from_campaign'. The description lacks any context about prerequisites or usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_add_contact_to_sequenceC
Add a contact to a specific campaign sequence
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID | |
| sequence_id | Yes | Sequence ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states 'Add a contact' but does not disclose whether adding is idempotent, if there are side effects, error conditions, or what happens if the contact is already in the sequence. The description adds minimal value beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is compact but lacks necessary detail. It is not front-loaded with critical context. While concise, it sacrifices completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 params, no output schema), the description could still benefit from explaining return values, potential errors, or idempotency. The sibling tools suggest alternatives but the description does not clarify how this tool fits. It leaves the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add any extra meaning to the parameters beyond 'Contact ID' and 'Sequence ID'. It does not explain format, constraints, or how to obtain these IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Add) and the target (contact to a campaign sequence). It distinguishes from siblings like keap_add_contact_to_campaign and keap_remove_contact_from_sequence by specifying the resource (sequence) and the operation (add). However, it lacks nuance like explaining that a sequence is part of a campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as keap_add_contact_to_campaign. There are no prerequisites, exclusions, or context hints. The agent is left to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_apply_tag_to_contactB
Apply one or more tags to a contact
| Name | Required | Description | Default |
|---|---|---|---|
| tag_ids | Yes | Array of tag IDs to apply | |
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present; description lacks disclosure of behavioral traits like idempotency, whether tags are appended or replaced, or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff. Appropriate for a simple tool, but could include more detail without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description fails to mention return values, error handling, or any additional context for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (apply), resource (tags), and target (contact). It effectively distinguishes from sibling tools like keap_remove_tag_from_contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., keap_add_contact_to_campaign). No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_complete_taskB
Mark a task as completed
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID | |
| completion_date | No | Completion date (ISO format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states 'mark as completed' without mentioning side effects, permissions, reversibility, or whether the task is removed from lists. This is minimal and insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of a single phrase with no wasted words. However, it is arguably too terse and could benefit from additional context without becoming verbose. It is efficient but minimally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description should provide more context about the effect of completing a task, such as whether it updates related records or triggers workflows. The current description is incomplete for a mutation tool with no supplementary metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters (task_id and completion_date), so the schema already explains their meanings. The description does not add any additional semantic context beyond what the schema provides, yielding a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Mark a task as completed' uses a specific verb ('mark') and resource ('task'), and clearly distinguishes from siblings like keap_create_task, keap_update_task, and keap_delete_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The description does not mention alternatives, though the sibling tools (e.g., keap_update_task) could imply that this tool is specifically for completing a task. The context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_affiliateC
Create a new affiliate
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Affiliate code | |
| name | Yes | Affiliate name | |
| parent_id | No | Parent affiliate ID | |
| contact_id | Yes | Contact ID for this affiliate | |
| track_leads_for | No | Number of days to track leads |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden for behavioral traits, but it is silent on side effects, permissions, or data impact. It only says 'create', implying mutation, but no additional detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence of four wordsāextremely concise with no redundant information. For a simple creation tool, this level of brevity is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and five parameters, the description should at least hint at return behavior (e.g., returns created affiliate ID). It provides no such information, making it incomplete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters. The description adds no extra meaning beyond what is in the input schema, earning a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new affiliate' clearly states the verb and resource, making it obvious what the tool does. However, it does not distinguish this tool from other create tools among siblings, though the resource name 'affiliate' is unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when or when not to use this tool, nor any mention of alternatives. The agent receives no context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_appointmentB
Create a new appointment in Keap
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Appointment title | |
| all_day | No | Is this an all-day event? | |
| user_id | No | Assigned user ID | |
| end_date | Yes | End date/time (ISO format) | |
| location | No | Location | |
| contact_id | No | Associated contact ID | |
| start_date | Yes | Start date/time (ISO format) | |
| description | No | Appointment description | |
| remind_time | No | Reminder time in minutes before appointment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but offers no behavioral information such as side effects, error handling, permission requirements, or constraints like date validation. The one-line description is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (six words) and front-loaded, but it sacrifices necessary detail. It is not verbose, but it is under-specific for a tool with 9 parameters and no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters, no output schema, and no annotations, the description is incomplete. It fails to explain return values, side effects, or how parameters like remind_time or location relate to the appointment creation process.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it does not explain parameter interactions, format requirements, or optionality trade-offs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it creates an appointment in Keap, using a specific verb and resource. It clearly distinguishes itself from sibling tools like keap_update_appointment, keap_delete_appointment, and keap_create_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, prerequisites (e.g., need a user_id or contact_id), or when not to use it. The description provides no contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_companyC
Create a new company in Keap
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City | |
| No | Company email | ||
| notes | No | Notes about the company | |
| phone | No | Company phone | |
| state | No | State/Region | |
| country | No | Country code | |
| website | No | Company website | |
| postal_code | No | Postal code | |
| company_name | Yes | Company name | |
| address_line1 | No | Street address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It only says 'Create a new company' without addressing permissions, uniqueness constraints, side effects, or error conditions. This is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence, which is highly concise. It is front-loaded with the key action. Could be slightly more structured but achieves clarity efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 10 parameters and no output schema, the description is too brief. It does not explain return values, duplicate handling, or required fields beyond schema. Incomplete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is described in the schema. The description adds no further meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'company in Keap', distinguishing it from update tools like keap_update_company. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of conditions, prerequisites, or when not to use it. The description lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_contactB
Create a new contact in Keap with email, name, phone, address, tags, and custom fields
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City | |
| No | Primary email address | ||
| phone | No | Primary phone number | |
| state | No | State/Region | |
| country | No | Country code (e.g., US) | |
| tag_ids | No | Array of tag IDs to apply | |
| owner_id | No | User ID of contact owner | |
| job_title | No | Job title | |
| given_name | No | First name | |
| family_name | No | Last name | |
| postal_code | No | Postal/ZIP code | |
| company_name | No | Company name | |
| address_line1 | No | Street address line 1 | |
| address_line2 | No | Street address line 2 | |
| custom_fields | No | Custom field values [{id, content}] | |
| opt_in_reason | No | Reason for opt-in (required for GDPR) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It only states the creation action without mentioning side effects, duplicate handling, authentication needs, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence of 15 words, front-loading the action and avoiding redundancy. Every word is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 16 parameters and no output schema, the description lacks information about return values, validation rules, and behavioral contexts, making it insufficient for confident agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description enumerates broad categories (email, name, phone, address, tags, custom fields) but does not add meaning beyond the schema's detailed descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new contact, specifying key fields like email, name, phone, address, tags, and custom fields. It distinguishes from sibling tools like keap_update_contact and keap_merge_contacts by emphasizing creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it does not mention handling existing contacts, prerequisites, or scenarios where keap_update_contact would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_contact_credit_cardB
Add a new credit card to a contact
| Name | Required | Description | Default |
|---|---|---|---|
| card_type | No | Card type (Visa, Mastercard, etc.) | |
| contact_id | Yes | Contact ID | |
| card_number | Yes | Credit card number | |
| name_on_card | No | Name as shown on card | |
| expiration_year | Yes | Expiration year (YYYY) | |
| expiration_month | Yes | Expiration month (MM) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action without revealing key behaviors like validation, storage, return value, or handling of duplicate cards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is efficient and front-loaded. However, it could be slightly more informative without becoming wordy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool dealing with sensitive financial data, the description lacks important context such as security measures, validation, return value (e.g., card ID), and behavior when multiple cards exist. No output schema is provided to fill the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra meaning beyond what the schema provides, earning a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Add a new credit card to a contact' uses a specific verb ('Add') and clearly identifies the resource ('a new credit card') and the target ('a contact'). It distinguishes from siblings, such as keap_get_contact_credit_cards, which retrieves data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as keap_get_contact_credit_cards to check existing cards. No prerequisites (e.g., contact must exist) or conditions for use are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_contact_emailB
Add a new email address to a contact
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address | ||
| field | No | Field type (EMAIL1, EMAIL2, EMAIL3) | EMAIL1 |
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose side effects or limitations, such as how adding an email interacts with existing email fields (e.g., does it replace or append?), or whether contact must exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no unnecessary words, but omits important details. Adequate conciseness but at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema. Description does not explain return values or success indicators. For a creation tool with 3 parameters, more context is needed (e.g., what happens if email already exists).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description adds no extra meaning beyond the schema descriptions. The field parameter's purpose (EMAIL1, EMAIL2, EMAIL3) is not clarified in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add', resource 'new email address', and target 'contact'. It distinguishes from siblings like keap_create_contact (creates whole contact) and keap_delete_contact_email (removes email).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., keap_update_contact for changing primary email) or prerequisites like an existing contact. The description lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_email_templateC
Create an email template
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Template name | |
| subject | Yes | Email subject | |
| html_content | No | HTML content | |
| text_content | No | Plain text content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It merely repeats the tool's action ('Create') without disclosing side effects, idempotency, rate limits, or what happens on duplicate names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Excessively concise (one sentence) but omits critical information. Brevity at the cost of completeness is a detriment.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and 4 parameters, the description provides almost no context. Missing: return value, required permissions, how created template is used, validation rules.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The tool description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Create an email template' which is a clear verb+resource pair. It distinguishes from sibling tools like 'keap_list_email_templates' and 'keap_send_email' but adds no additional context beyond the tool's name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., 'keap_list_email_templates' for listing, 'keap_send_email' for sending). No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_hookB
Create a REST hook for automation (webhook)
| Name | Required | Description | Default |
|---|---|---|---|
| hookUrl | Yes | Webhook URL to call | |
| eventKey | Yes | Event key (e.g., contact.add, opportunity.add) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to mention behavioral traits such as side effects, error handling, or authentication requirements. It only indicates creation without elaboration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of a single phrase. While efficient, it could benefit from slight expansion for clarity without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description lacks completeness. It does not explain what a REST hook does, when it triggers, or how to verify creation. Additional context would improve usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear descriptions for both parameters. The tool description adds no additional meaning beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and resource 'REST hook for automation (webhook)', distinguishing it from sibling tools like keap_list_hooks, keap_delete_hook, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like keap_update_hook or keap_verify_hook. It only states what it does, not the context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_noteB
Create a note for a contact
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Note content | |
| type | No | Note type (Appointment, Call, Email, etc.) | |
| title | No | Note title | |
| user_id | No | User ID who created the note | |
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits beyond creation. Missing details include whether the note is associated with the current user, error handling for invalid contact IDs, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 5 parameters, the description does not explain what the tool returns (e.g., the created note or its ID). For a creation tool, this is a significant gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already explains each parameter. The description adds no additional meaning beyond what is in the schema. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a note for a contact' uses a specific verb (create) and resource (note for a contact), clearly distinguishing it from sibling tools like update, delete, get, and list notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as keap_update_note or keap_list_notes. The description only states the action, leaving the agent to infer usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_opportunityB
Create a new sales opportunity/deal in Keap
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | No | User ID (owner of opportunity) | |
| stage_id | Yes | Pipeline stage ID | |
| contact_id | Yes | Contact ID associated with this opportunity | |
| custom_fields | No | Custom fields | |
| next_action_date | No | Next action date (ISO format) | |
| next_action_notes | No | Next action notes | |
| opportunity_notes | No | Notes about this opportunity | |
| opportunity_title | Yes | Deal/opportunity title | |
| estimated_close_date | No | Estimated close date (ISO format) | |
| projected_revenue_low | No | Low revenue estimate | |
| projected_revenue_high | No | High revenue estimate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits such as side effects, required permissions, or responses. The minimal description fails to inform the agent beyond the basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that effectively communicates the tool's purpose. It is front-loaded and contains no unnecessary verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 parameters, no output schema, and no annotations, the description is insufficient. It lacks details on constraints, defaults, or validation rules, making it incomplete for complex usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema itself provides full parameter details. The description adds no additional meaning beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('new sales opportunity/deal in Keap'). It is specific and distinct from sibling tools like keap_create_contact or keap_create_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives provided. Among siblings, there are update and delete opportunity tools, but no exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_orderC
Create a new order in Keap
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID | |
| order_type | No | Order type (Online, Offline) | Online |
| order_items | Yes | Array of order items | |
| order_title | Yes | Order title | |
| promo_codes | No | Promo codes to apply |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It merely states 'Create a new order' without revealing side effects (e.g., whether it triggers workflows), required permissions, or any irreversible actions. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is as concise as possible while still conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite high schema coverage, the description lacks completeness for a creation tool. It does not explain the significance of the order (e.g., financial implications), the default behavior (order_type defaults to 'Online'), or any context about how the order is processed. The absence of an output schema further underscores the need for more descriptive context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters. The description adds no additional semantics beyond the schema, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new order in Keap' clearly indicates the verb (create) and resource (order). It distinguishes from sibling tools like keap_get_order (retrieval) and keap_delete_order (deletion), but lacks additional detail about the type of order or context that would further differentiate it from other creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not specify when to use this tool versus alternatives like keap_create_subscription or keap_create_opportunity, nor does it mention prerequisites (e.g., the contact must already exist) or constraints (e.g., order items format).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_productB
Create a new product in Keap
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | SKU code | |
| url | No | Product URL | |
| product_desc | No | Full description | |
| product_name | Yes | Product name | |
| product_price | Yes | Product price | |
| subscription_only | No | Is subscription-only product | |
| product_short_desc | No | Short description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the basic action. No disclosure of idempotency, side effects, authentication needs, rate limits, or behavior on duplicate product names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it is under-specified for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too minimal for a tool with 7 parameters and no output schema. It does not explain return value, behavior of subscription_only, or any other context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter, so the description adds no extra meaning beyond the schema. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new product in Keap' clearly states the verb (create) and resource (product), distinguishing it from sibling tools like get, list, update, and delete product tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites, no error handling or when-not-to-use information provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_subscriptionC
Create a subscription for a contact
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | Quantity | |
| contact_id | Yes | Contact ID | |
| product_id | Yes | Product ID | |
| billing_amount | No | Billing amount | |
| credit_card_id | No | Credit card ID for payment | |
| subscription_plan_id | Yes | Subscription plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects (e.g., billing initiation), required permissions, or error conditions. The agent is left to infer behavior from the name alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence) but lacks structure; it does not include any additional details or bullets that could aid understanding. It is not verbose but also not optimally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description should explain what a subscription creation involves (e.g., recurring billing, plan details). It fails to provide sufficient context for an agent to understand the tool's full impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with parameter descriptions, but the tool description adds no additional context beyond the schema. Baseline score of 3 is appropriate as no extra semantic value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a subscription') and the target resource ('for a contact'). It distinguishes from other create tools like keap_create_order, though it does not explicitly differentiate among sibling create tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as keap_create_order or keap_apply_tag_to_contact. The description lacks context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_tagC
Create a new tag in Keap
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Tag name | |
| category_id | No | Tag category ID | |
| description | No | Tag description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only states the basic action. No behavioral traits (e.g., uniqueness constraints, case sensitivity, idempotency) are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks sufficient detail for a complete tool definition. It is appropriately minimal but sacrifices behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations or output schema, the description is incomplete. Missing details on response format, error conditions, and side effects reduce its utility for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions in the schema. The description adds no additional meaning beyond what the schema provides, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('tag') in Keap, differentiating it from sibling tools like keap_create_tag_category. However, it lacks elaboration on what a tag represents in the Keap system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., keap_apply_tag_to_contact) or any prerequisites. The agent receives no context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_tag_categoryB
Create a tag category
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Category name | |
| description | No | Category description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only repeats the action. It omits details like whether it returns an ID, permissions needed, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no fluff, effectively stating the purpose. It could add minor behavioral context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotation support. The description does not explain return values, error conditions, or what happens upon creation. For a simple create tool, key context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing basic descriptions for name and description. The tool description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a tag category' clearly states the action (create) and resource (tag category), distinguishing it from siblings like keap_create_tag (creates a tag) and keap_list_tag_categories (lists categories).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, prerequisites, or when not to use. The description only states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_create_taskC
Create a new task in Keap
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Task type | |
| title | Yes | Task title | |
| user_id | No | Assigned user ID | |
| due_date | No | Due date (ISO format) | |
| priority | No | Priority (1-5) | |
| contact_id | No | Associated contact ID | |
| description | No | Task description | |
| remind_time | No | Reminder time in minutes before due date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It only says 'Create a new task', implying mutation but no details on authentication requirements, side effects, default behaviors, or outcomes. For a create tool, this is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 8 words, but this brevity under-specifies the tool's purpose and behavior given its 8 parameters. It does not earn its place because it adds minimal value beyond the tool name. Front-loading is not a concern as there is only one sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, no output schema, and no annotations, the description is woefully incomplete. It fails to mention return values, side effects, or any usage context. A create operation typically needs to indicate what the response contains (e.g., created task ID).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so each parameter already has basic meaning. The tool description adds no extra semantic information beyond the schema. Thus, baseline 3 is maintained; the description does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new task in Keap' clearly states the action (create) and the resource (task). It is straightforward and avoids tautology by adding 'in Keap'. However, it does not differentiate from sibling create tools like 'keap_create_note' or 'keap_create_appointment', so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'keap_update_task' or 'keap_complete_task'. There is no mention of prerequisites, contexts, or when not to use it. It is a single sentence with no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_delete_appointmentB
Delete an appointment
| Name | Required | Description | Default |
|---|---|---|---|
| appointment_id | Yes | Appointment ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits (e.g., irreversibility, permissions, cascading effects). It only states 'Delete an appointment,' which is insufficient to inform the agent of side effects or requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with no wasted words. While bare, it is appropriately sized for a simple tool, but could include a sentence on usage or behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter and no output schema, the description is minimal but covers the core action. However, without annotations, it lacks completeness on behavioral aspects like consequences of deletion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'appointment_id' is fully described in the schema (100% coverage). The description adds no extra meaning beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and the resource ('an appointment'), directly reflecting the tool's name. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like update_appointment or create_appointment. The agent receives no context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_delete_contactA
Permanently delete a contact from Keap
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral information. The term 'permanently' reveals irreversibility, which is a key behavioral trait. However, it omits details about required permissions, cascading effects (e.g., related data deletion), or idempotency behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 6-word sentence that efficiently conveys the tool's core purpose. It is front-loaded with the verb and resource, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is minimally adequate. It covers the core action but does not address behavioral aspects like authorization or error states, which would aid completeness for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with a description for the single parameter ('Contact ID to delete'). The tool description adds no additional meaning beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Permanently delete a contact from Keap', which clearly identifies the verb (delete), resource (contact), and includes the additional qualifier 'permanently' to emphasize irreversibility. It is specific and distinct among sibling delete tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives (e.g., opt-out, remove tag, or other delete tools). The description lacks context about prerequisites, consequences, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_delete_contact_emailB
Remove an email address from a contact
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | Email ID to remove | |
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only says 'Remove', but fails to indicate side effects, permission requirements, or whether the removal is permanent or reversible. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loading the purpose. However, it could include slightly more detail without being verbose. Still, it is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature (delete operation with 2 parameters, 100% schema coverage, no output schema), the description is minimally adequate but does not explain nuances like whether the email record is deleted or just disassociated, or if the contact must exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (contact_id and email_id). The description adds no additional semantic meaning beyond what the schema provides; baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the resource ('email address from a contact'), distinguishing it from siblings like keap_create_contact_email and keap_get_contact_emails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or context for invocation. The description lacks 'when to use' and 'when not to use' information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_delete_fileC
Delete a file from Keap
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | File ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states the action without disclosing behavioral traits such as consequences, permissions, error handling, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only one sentence, which is concise but lacks structure. It could benefit from additional context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description does not address what happens after deletion, any prerequisites, or error situations, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description for 'file_id' ('File ID to delete') is clear. The tool description adds no additional parameter information beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a file from Keap' uses a specific verb and resource, clearly distinguishing from sibling tools like upload, get, and list. It is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., when to delete vs. update or upload). No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_delete_hookC
Delete a REST hook
| Name | Required | Description | Default |
|---|---|---|---|
| hook_key | Yes | Hook key to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. 'Delete a REST hook' implies a destructive operation, but it doesn't disclose whether deletion is irreversible, if it requires specific permissions, or what side-effects occur (e.g., cancelling pending events). Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence. Conciseness is high, though a bit more context (e.g., 'irreversibly removes a webhook endpoint') could be added without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no output schema), the description is still incomplete. It lacks details on what happens after deletion, any return value, error handling, or prerequisites. The sibling tools list includes related hooks (create, update, verify) but no cross-reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (hook_key described in schema). The tool description adds no extra meaning beyond the parameter's own description ('Hook key to delete'). Baseline 3 for high coverage, but no added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a REST hook' clearly states the verb (delete) and the resource (REST hook). However, it does not differentiate from other delete tools (e.g., keap_delete_appointment) or provide additional context about what a REST hook is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives. For instance, it doesn't mention that one might list or verify hooks before deletion, or any prerequisites. The description is purely operational.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_delete_noteB
Delete a note
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | Note ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits like irreversibility, required permissions, or impact on related data. The agent has no context beyond the action itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise but could benefit from additional context to be more helpful. It is not overly long, but misses opportunities to add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with one parameter, the description is adequate but lacks important context about side effects and usage. Without an output schema, more description would be warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with a clear description for the single parameter. The description adds no additional meaning beyond the schema, meeting baseline expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a note' clearly states the verb and resource, directly distinguishing it from sibling delete tools for other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as when to delete vs. update a note, or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_delete_opportunityC
Delete an opportunity
| Name | Required | Description | Default |
|---|---|---|---|
| opportunity_id | Yes | Opportunity ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It only says 'Delete an opportunity' with no disclosure about irreversibility, associated data impact, permission requirements, or error states. This is insufficient for a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At one sentence, it is concise, but it lacks any structural elements like warnings or contextual notes. It could be more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with one parameter and no output schema, the description is minimally complete, but it omits critical safety context (e.g., irreversible action, need for existing record). This is inadequate for a write tool without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter, and the parameter description in the schema is clear ('Opportunity ID to delete'). The tool description adds no further semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Delete an opportunity', which is a specific verb (delete) and resource (opportunity). This clearly distinguishes it from sibling tools like keap_create_opportunity, keap_update_opportunity, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites (e.g., opportunity must exist), and no mention of when not to use it. It simply states what it does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_delete_orderC
Delete an order
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Order ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral context. It only says 'Delete an order', omitting critical details such as permanence, required permissions, side effects on related entities, or idempotency behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (three words) but lacks structure. While it is not verbose, it fails to include any additional context that could aid the agent, making it borderline under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool performs a destructive operation and has only one parameter with no output schema, the description does not adequately cover context such as return values, error states, or post-deletion effects. It is incomplete for an AI agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description of the order_id parameter ('Order ID to delete') is clear but adds no extra meaning beyond the schema. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete an order' clearly states the action (delete) and the resource (order), matching the tool name. It is specific enough to distinguish from other deletion operations like keap_delete_contact, though it doesn't explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., keap_update_order to modify instead of delete). No prerequisites, warnings, or context about irreversible actions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_delete_productB
Delete a product
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description fails to disclose behavioral details like irreversibility, dependencies, or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise but overly minimal; could be more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deletion tool, the description is incomplete; it should mention permanence or effects on related data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, so description adds no extra value beyond the schema. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Delete a product' with a specific verb and resource, distinguishing it from create and update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool, prerequisites, or when not to use it. Lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_delete_taskB
Delete a task
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits like irreversibility, side effects, or dependencies. It merely states 'Delete a task' without further context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (three words) but under-specified. It is not wasteful, but lacks useful context, earning a middle score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter deletion tool, the description is minimally acceptable but missing details like deletion behavior or consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter coverage is 100% via schema, which already describes task_id. The description adds no extra meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a task' clearly states the action and resource. It distinguishes this tool from siblings like keap_create_task and keap_complete_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as keap_complete_task or keap_update_task. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_account_profileA
Get the account profile information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It only says 'Get', implying a read operation, but does not confirm it is read-only, nor does it describe any other behavioral traits such as data returned or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the purpose. Every word is necessary and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no parameters and no output schema, the description is minimally adequate. However, it does not elaborate on what 'account profile information' includes, which could help the agent understand expected output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the description adds no extra meaning beyond the empty schema. According to guidelines, baseline is 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and the resource (account profile information). It is specific and distinguishes from sibling tools like keap_update_account_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives or when not to use it. The description is too brief to offer any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_affiliateB
Retrieve an affiliate by ID
| Name | Required | Description | Default |
|---|---|---|---|
| affiliate_id | Yes | Affiliate ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden for behavioral disclosure. It states 'Retrieve' indicating a read operation but does not mention potential outcomes (e.g., returns nothing for invalid ID), permissions, rate limits, or response structure. The description is minimal and lacks behavioral context beyond the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no extraneous information. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and no output schema, the description should provide additional context about the return value or error handling. It does not, leaving agents without guidance on what to expect from the call. The description is insufficiently complete for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning the input schema already describes the parameter ('Affiliate ID') adequately. The description adds no additional meaning beyond what is in the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve an affiliate by ID' uses a specific verb ('retrieve') and resource ('affiliate') and specifies the method ('by ID'). It clearly distinguishes from sibling tools like 'keap_list_affiliates' (lists many) and other get-affiliate tools that retrieve specific subsets (clawbacks, commissions, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives like 'keap_list_affiliates' for listing all affiliates or other get-affiliate tools for specific data. There is no context about prerequisites or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_affiliate_clawbacksB
Get all clawbacks for an affiliate
| Name | Required | Description | Default |
|---|---|---|---|
| affiliate_id | Yes | Affiliate ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided and the description lacks behavioral details such as pagination, data limits, or any side effects. Minimal disclosure beyond the core action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is front-loaded and efficient, though very brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one parameter and no output schema, the description is minimally adequate but could be improved by noting return format or scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter already described as 'Affiliate ID'. The description adds no new meaning beyond what is already in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all clawbacks for an affiliate' with a specific verb and resource, distinguishing it from sibling tools like keap_get_affiliate_commissions or keap_get_affiliate_payments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention when to choose this over other affiliate-related get tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_affiliate_commissionsC
Get all commissions for an affiliate
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| since | No | Commissions after this date | |
| until | No | Commissions before this date | |
| affiliate_id | Yes | Affiliate ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'Get all commissions', but the schema reveals pagination and date filtering. The description does not explain these behaviors (e.g., whether 'all' means paginated, default limit, or order).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, which is concise but under-specifies the tool. It could be improved by front-loading key details without being verbose. Current length trades off informativeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters and no output schema, the description is too minimal. It does not explain filtering capabilities, pagination, or expected return format. The schema partially fills the gap, but context for a complete usage scenario is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond 'Get all commissions', which is a verbatim title. Baseline 3 is appropriate as the description does not compensate for any gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('commissions for an affiliate'), but it does not differentiate from sibling tools like 'keap_list_commissions' or 'keap_get_affiliate_payments', which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., 'keap_get_affiliate_summary', 'keap_list_commissions'). The description lacks context on prerequisites or preferred use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_affiliate_paymentsB
Get all payments for an affiliate
| Name | Required | Description | Default |
|---|---|---|---|
| affiliate_id | Yes | Affiliate ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose any behavioral traits such as pagination, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, clear sentence with no unnecessary words; perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple one-parameter tool, but lacks any detail about the response format or pagination, which would help an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for affiliate_id, and the description adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get', resource 'payments', and scope 'for an affiliate', distinguishing it from sibling tools like keap_get_affiliate_commissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives or prerequisites beyond affiliate_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_affiliate_redirect_linksC
Get redirect links for an affiliate
| Name | Required | Description | Default |
|---|---|---|---|
| affiliate_id | Yes | Affiliate ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states the action but does not indicate side effects (none expected), error behavior (e.g., missing affiliate), or whether the operation is idempotent. The agent is left to infer that it is a read-only safe operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at five words. While there is no wasted text, it omits crucial details needed for proper tool selection. Front-loading is acceptable, but the brevity sacrifices completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one parameter) and lack of output schema, the description should clarify the return format or what redirect links are. Other sibling tools provide more context (e.g., keap_get_affiliate_summary likely returns totals). The absence of output schema information leaves the agent uncertain about the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% as the only parameter 'affiliate_id' has a description 'Affiliate ID'. The tool description adds no further meaning beyond this. Baseline of 3 is appropriate since the schema already documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get redirect links for an affiliate' clearly states the action (get) and resource (redirect links) specific to an affiliate. It distinguishes from sibling affiliate tools that target other data (e.g., commissions, payments). However, it could be more explicit about what 'redirect links' entail in the Keap domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like keap_get_affiliate_summary or keap_get_affiliate. The description does not mention prerequisites such as the affiliate needing to exist, nor does it suggest when redirect links are relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_affiliate_summaryC
Get summary stats for an affiliate
| Name | Required | Description | Default |
|---|---|---|---|
| affiliate_id | Yes | Affiliate ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits, but it only says 'Get summary stats for an affiliate'. It does not disclose whether the tool is read-only, requires special permissions, or what the 'summary stats' entail, leaving the agent uncertain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, very concise. However, it lacks additional context that could be added without verbosity, such as the scope of the summary. It earns a middle score for being succinct but not thorough.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 param, no output schema, no annotations), the description is incomplete. It fails to specify what the summary includes or how the returned data is structured, which could lead to incorrect tool selection among sibling affiliate tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'affiliate_id' with a description, achieving 100% coverage. The tool description adds no extra meaning beyond the schema. Baseline 3 is appropriate since the description doesn't compensate or enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get summary stats for an affiliate' clearly states the verb and resource. Among siblings like keap_get_affiliate, keap_get_affiliate_clawbacks, etc., the specification of 'summary stats' distinguishes this tool from those that retrieve specific details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like keap_get_affiliate or keap_get_affiliate_commissions. The description lacks context about what scenarios warrant a summary vs detailed data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_application_configurationC
Get application configuration settings
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states it gets configuration settings but does not describe the nature of the operation (read-only), potential limitations, or what specific settings are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence. It is not verbose, but the brevity may sacrifice necessary detail. Still, it earns a 4 for being front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description is incomplete. It does not explain what the return values are, what 'configuration settings' encompasses, or any contextual details needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With no parameters and 100% schema description coverage, the baseline is 3. The description adds no additional parameter information since none exist, which is acceptable but not helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves application configuration settings, using a specific verb+resource. However, it does not differentiate from sibling get tools that retrieve specific entities (e.g., contact, company), making it generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not specify context, prerequisites, or when a different tool might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_appointmentA
Retrieve an appointment by ID
| Name | Required | Description | Default |
|---|---|---|---|
| appointment_id | Yes | Appointment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, error handling, or return structure. For a simple get tool, it could at least mention that it is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise, and front-loaded. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one parameter, no output schema), the description is somewhat adequate but lacks information about the return value or expected format, which an agent might need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter already described as 'Appointment ID'. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve an appointment by ID' clearly states the verb (retrieve) and resource (appointment). It distinguishes from sibling tools like create, delete, update, and list appointments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidelines. However, the purpose is straightforward enough that usage is implied (when you need appointment details by ID).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_appointment_modelA
Get the appointment model schema
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It implies a read-only operation with no side effects, but lacks details on what the schema contains or how it should be interpreted. The description is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's purpose without any extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is adequate but sparse. It does not explain what the schema is used for or what the return value will be, which could leave an agent uncertain. However, for a simple schema retrieval, it meets minimal viability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100% trivially. The baseline for 0 parameters is 4. The description adds no additional parameter information, which is acceptable since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get the appointment model schema' uses a specific verb 'Get' and clearly identifies the resource as the appointment model schema, distinguishing it from siblings like keap_get_appointment which retrieves an actual appointment instance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No context is provided on when to use this tool versus alternatives, such as before creating an appointment or understanding the required fields. No usage exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_campaignA
Get campaign details by ID
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It states the basic read behavior, but does not disclose error handling, return format, or any side effects. For a simple get, this is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action. It is efficient with no wasted words, but could be slightly more descriptive without significant additional length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no output schema), the description is mostly complete. It conveys the essential purpose, though it could mention that it returns full campaign details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter already described as 'Campaign ID'. The tool description adds no further meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get campaign details by ID' clearly states the action (get) and resource (campaign details), and differentiates from sibling tools like keap_list_campaigns and keap_get_campaign_sequences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that for a list of campaigns, keap_list_campaigns should be used, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_campaign_sequencesB
Get all sequences for a specific campaign
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description must disclose behavior. It implies a read operation but lacks details on rate limits, pagination, authentication, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy, directly states purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one param, but no output schema; description doesn't hint at return value structure (e.g., list of sequence IDs or objects). Acceptable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for campaign_id (required, type number). Description adds no extra meaning beyond schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves all sequences for a specific campaign, with a specific verb and resource. It distinguishes itself from sibling tools like keap_get_campaign and keap_add_contact_to_sequence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_companyB
Retrieve a company by ID
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | Yes | Company ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as authentication requirements, rate limits, or response shape. It is minimally informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently states the purpose. However, it could include more detail without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one required parameter, no output schema), the description is minimally adequate but lacks context on return values or any prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add any additional meaning beyond what the schema provides for 'company_id'. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieve a company by ID,' which is a specific verb+resource. It distinguishes from sibling tools like keap_list_companies and keap_get_company_contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. Usage is implied but not differentiated from alternatives like keap_list_companies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_company_contactsB
Get all contacts associated with a company
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| offset | No | Pagination offset | |
| company_id | Yes | Company ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description lacks behavioral details such as pagination (despite 'limit' and 'offset' parameters), read-only nature, or return format. It does not disclose that results are paginated or that it is a safe read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. It could benefit from a bit more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should explain what the tool returns. It does not mention that the result is a paginated list of contact objects. The pagination parameters (limit, offset) are not explained in the description context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not need to add much. It does not provide additional context beyond what the schema already offers (e.g., format or constraints). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'contacts', and the scope 'associated with a company'. It distinguishes this tool from siblings like 'keap_list_contacts' (all contacts) and 'keap_get_contact' (single contact).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching contacts for a specific company, but does not explicitly state when to use this over alternatives (e.g., 'keap_list_contacts' or 'keap_search_contacts'). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_contactA
Retrieve a contact by ID with all details including tags, custom fields, and company
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID | |
| optional_properties | No | Additional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden for behavioral disclosure. It clearly indicates a read-only operation ('Retrieve') with a defined scope, which is accurate and sufficient for a simple retrieval. No contradictions or misleading information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence that conveys the essential information without extraneous words. Every word is meaningful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with well-documented parameters and no output schema, the description adequately covers the tool's purpose and output structure. It provides enough context for an agent to understand what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters. The description adds value by clarifying that the default response includes tags, custom fields, and company, which is not specified in the parameter descriptions. This enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve'), the resource ('contact by ID'), and the scope ('all details including tags, custom fields, and company'). This distinguishes it from sibling tools that focus on specific subsets (e.g., keap_get_contact_tags) or searches (keap_search_contacts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a full contact record is needed by ID, but it does not explicitly mention when to use this tool versus alternatives like keap_get_contact_tags or keap_get_contact_custom_fields. There is no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_contact_credit_cardsB
Get all credit cards on file for a contact
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the response includes sensitive data, if pagination is needed, or any idempotency/rate limits. The description is limited to stating the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous information. It is efficient but could potentially include more actionable detail without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and no output schema, the description should provide at least a hint about the return format or limitations (e.g., 'returns credit card objects with masked numbers'). It does not, making it inadequate for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (contact_id described as 'Contact ID'). The description adds no additional meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get all credit cards on file for a contact' uses a specific verb ('Get'), resource ('credit cards'), and scope ('for a contact'). It clearly distinguishes from sibling tool keap_create_contact_credit_card, which is a write operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., keap_get_contact might include some credit card info). No prerequisites, when-not-to-use, or context are provided. The description only implies usage for retrieving credit cards of a contact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_contact_custom_fieldsA
Retrieve custom field values for a contact
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must handle behavioral disclosure. It states 'Retrieve' indicating read-only, but does not mention error handling, rate limits, or authentication needs. The simplicity mitigates the gap, but more context would help.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words, effectively front-loading the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one parameter and no output schema, the description provides adequate context. It could mention return structure (e.g., list of field names/values), but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no extra meaning beyond what the schema already provides for contact_id. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Retrieve' and resource 'custom field values' for a contact, clearly distinguishing it from siblings like keap_get_contact (which retrieves standard contact info) and keap_list_custom_fields (which lists field definitions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Usage is implied by the name, but it lacks prerequisites or exclusions (e.g., must have custom fields defined, contact must exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_contact_emailsB
Get all email addresses associated with a contact
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it retrieves email addresses. No disclosure of authorization needs, rate limits, or response format. Minimal behavioral insight beyond the basic read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 7 words, front-loading key information with no fluff. Every word is meaningful and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is adequate but lacks detail on return structure or prerequisites. Could be improved by mentioning that the result is a list of email objects or strings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter contact_id is described in the schema as 'Contact ID'. The description adds 'associated with a contact' but that is implied. The description does not add significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'email addresses', and the scope 'associated with a contact'. It effectively distinguishes from sibling tools like keap_create_contact_email and keap_delete_contact_email.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Does not mention when to use keap_get_contact or keap_create_contact_email instead. Implied usage but no clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_contact_modelA
Retrieve the contact model schema including all available custom fields
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description only states the action without disclosing whether it's read-only, any side effects, rate limits, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 12 words, directly states purpose. No unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description indicates return includes schema and custom fields. Adequately sets expectations for a zero-parameter tool, though could be more specific.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so description does not need to add information. Baseline score of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves the contact model schema including custom fields, distinguishing it from tools that get contact instances or specific field values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like keap_get_contact_custom_fields or keap_get_contact. No mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_contact_tagsA
Get all tags applied to a specific contact
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It correctly identifies the operation as a read, but does not disclose any behavioral traits such as authentication requirements, rate limits, or response format. The description is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is concise and front-loaded, but could be slightly more descriptive without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description is minimal. It conveys the core purpose but lacks details about the response format or any constraints. For a simple read tool, this is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a description for contact_id ('Contact ID') with full coverage (100%). The tool description adds no additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and the resource (tags applied to a specific contact). It effectively distinguishes from sibling tools like keap_apply_tag_to_contact and keap_list_tags, which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. Usage is implied (when needing tags for a specific contact), but no context about when not to use it or which alternative might be better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_emailC
Retrieve an email by ID
| Name | Required | Description | Default |
|---|---|---|---|
| email_id | Yes | Email ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits such as read-only nature, return format, or access restrictions. The agent must infer basic behavior from the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of a get-by-ID tool with one parameter and no output schema, the description is minimally complete but lacks details on what the returned email object contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds no additional meaning beyond what the input schema already provides (the parameter name and type are self-explanatory).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action (retrieve), resource (email), and identifier (by ID). It clearly distinguishes from list tools like keap_list_emails and keap_get_contact_emails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings, no prerequisites or conditions stated. The description is purely declarative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_fileB
Retrieve file metadata by ID
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | File ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only states a read operation but does not disclose what happens on errors, authorization needs, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, concise and front-loaded. No wasted words, though could be slightly expanded for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity, the description does not explain what 'file metadata' includes, nor error handling or relationship to similar tools like keap_list_files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one parameter), so baseline is 3. The description adds no meaning beyond the schema's 'File ID' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve file metadata by ID' uses a specific verb (Retrieve) and resource (file metadata by ID), clearly distinguishing it from sibling tools like upload, list, delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as keap_list_files or keap_upload_file. The description does not mention context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_noteB
Retrieve a note by ID
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | Note ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the basic action without disclosing what the tool returns (e.g., note details) or any side effects. For a read operation, the lack of return value information is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one short phrase) with no wasted words. However, it is too brief to be informative, lacking necessary details. Conciseness is good, but at the expense of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a simple tool, the description should at least hint at the return value (e.g., 'returns note details'). It fails to do so, making it incomplete for an agent to understand the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'note_id' described as 'Note ID'. The description does not add any further meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve a note by ID' clearly states the action (retrieve) and the resource (note) and the key parameter (by ID). It is unambiguous and distinguishes itself from sibling tools like 'keap_get_note_model' and 'keap_list_notes'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. Siblings like 'keap_list_notes' (for listing) and 'keap_get_note_model' (for schema) exist but are not mentioned. The description provides no context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_note_modelB
Get the note model schema
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states it's a retrieval operation, but lacks details on side effects, authorization needs, or return format. No output schema defined to supplement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no wasted words. Efficient but perhaps at the expense of completeness. Still well-structured for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description is minimal. It doesn't specify what the schema is used for or its format. Could be improved by stating it returns note field definitions, aiding agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100%. Description doesn't need to add param info. Baseline 4 is appropriate, though it could provide slightly more context on what the schema output contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description 'Get the note model schema' clearly states the tool retrieves the schema/model for a note. It distinguishes from keap_get_note (which retrieves a specific note). However, it doesn't explain what 'model schema' entails (e.g., field definitions), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like keap_get_note or other model getters. Missing context like 'use before creating a note to understand required fields'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_opportunityB
Retrieve an opportunity by ID
| Name | Required | Description | Default |
|---|---|---|---|
| opportunity_id | Yes | Opportunity ID | |
| optional_properties | No | Additional fields to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description only states 'Retrieve an opportunity by ID' without disclosing behavioral traits like error handling, return structure, or read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is efficient and front-loaded, but could include more detail without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and description fails to explain return value or usage of 'optional_properties' parameter; incomplete for agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are provided, but the tool description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (retrieve) and resource (opportunity by ID), distinguishing it from related tools like create, update, delete, and list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs alternatives like keap_list_opportunities or keap_get_opportunity_model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_opportunity_modelA
Get the opportunity model schema with custom fields
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It correctly indicates a read operation but does not disclose any additional behavioral traits like authentication requirements or rate limits, which for a schema retrieval may be acceptable but lacks explicit confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the key action and resource, containing no unnecessary words and efficiently conveying the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description adequately specifies what is returned (model schema with custom fields). It could mention what the schema excludes, but completeness is sufficient given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the description adds meaning by specifying it returns the schema with custom fields, aligning with the baseline of 4 for no parameter information needed beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the opportunity model schema including custom fields, directly indicating its purpose and distinguishing it from tools like keap_get_opportunity which returns actual opportunities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives such as keap_get_opportunity or keap_get_opportunity_stage_pipeline, leaving the usage context implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_opportunity_stage_pipelineB
Get details of a specific pipeline stage
| Name | Required | Description | Default |
|---|---|---|---|
| stage_id | Yes | Stage ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not state that the operation is read-only, nor does it mention any prerequisites, side effects, or data returned. The description is minimal and leaves significant ambiguity about behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that contains no fluff. It is appropriately front-loaded and efficient for a simple getter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required parameter, no output schema). The description mentions 'details' but does not specify the structure or content of the return value. In the absence of an output schema, the description should provide more context about what 'details' means. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description for 'stage_id' ('Stage ID'). The description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get details of a specific pipeline stage' clearly states the action and resource. It distinguishes from the sibling 'keap_list_opportunity_stage_pipeline' which lists all stages, but does not explicitly differentiate from other get tools like 'keap_get_opportunity'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not specify that it is for a single stage by ID, nor does it mention not to use it for listing or updating stages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_orderB
Retrieve an order by ID
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states basic action; does not disclose idempotency, permissions, error behavior, or any side effects. Full burden on description but insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence with no redundancy. Could include slightly more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description doesn't hint at the order's structure or fields. Complete for a basic get-by-ID but lacks context about return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with order_id description. Description adds no extra meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Retrieve' and resource 'order' with method 'by ID', clearly distinguishing from list and create operations among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like keap_list_orders or keap_get_order?when to use for multiple orders. Lacks contextual differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_productB
Retrieve a product by ID
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It only states 'Retrieve a product by ID' without mentioning error behavior (e.g., not found), side effects, or read-only nature. This is insufficient for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It is appropriately sized for a simple tool, though it could optionally include more behavioral context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID operation with one parameter and no output schema, the description is minimally complete. However, missing behavioral transparency (e.g., error handling) and usage guidance leaves gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (product_id described). The description adds no extra meaning beyond the schema, merely restating the retrieval by ID. With high schema coverage, baseline is 3, and no additional value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Retrieve') and resource ('a product by ID'). It effectively distinguishes from sibling tools like keap_list_products (retrieves multiple) and keap_create/update/delete_product.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when you need a single product by ID) but does not explicitly mention alternatives or when not to use it. Sibling keap_list_products exists for listing, but no guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_subscriptionA
Retrieve a subscription by ID
| Name | Required | Description | Default |
|---|---|---|---|
| subscription_id | Yes | Subscription ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks details on error handling, response format, or any side effects. The minimal description does not adequately disclose behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with one sentence that is front-loaded and contains no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity and no output schema, the description is minimally sufficient but could be improved by indicating the type of data returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter; the tool description adds no extra meaning beyond the schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retrieve' and the resource 'subscription by ID', distinguishing it from siblings like keap_list_subscriptions and keap_create_subscription.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, but the simple 'get by ID' nature makes the usage context somewhat implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_tagA
Retrieve a tag by ID
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | Tag ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states a simple read operation, which is accurate, but does not disclose error behavior or return value. Adequate for a straightforward tool but missing behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that is immediately clear. No unnecessary words, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 parameter, no output schema), the description is sufficient for a basic retrieval. However, it could mention that the returned tag object can be used with other tools (e.g., keap_apply_tag_to_contact).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with a description for tag_id. The tool description adds no extra meaning beyond the schema. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve'), the resource ('tag'), and the method ('by ID'). It is specific and distinguishes from sibling tools like keap_list_tags and keap_create_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., keap_list_tags for listing all tags). The description lacks context for when retrieval is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_taskA
Retrieve a task by ID
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks behavioral details such as error conditions, permissions, or response format. For a read operation, additional context would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key action and resource, no unnecessary words. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description is adequate. It clearly states what the tool does, though it could mention return type or potential errors for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with 'task_id' having a description. The description adds no extra meaning beyond what is in the input schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'retrieve' and resource 'task by ID', clearly indicating the action and scope. It distinguishes well from sibling tools like keap_create_task, keap_delete_task, and keap_list_tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While no explicit when-to-use or alternatives are mentioned, the purpose is straightforward for a simple retrieval tool. The description is clear enough for an agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_task_modelB
Get the task model schema
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It implies a read operation but lacks details about what the schema includes (fields, types, relationships). Minimal transparency beyond basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient phrase. While it could benefit from slightly more detail (e.g., 'including field names and types'), it avoids verbosity and is clearly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should explain the output. It does not clarify what 'schema' means (e.g., field definitions, relationships), leaving the agent underinformed about return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (input schema is empty), so description adds no parameter semantics. The schema coverage is 100%, making further description unnecessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get the task model schema' clearly states the verb (get), resource (task model schema), and scope, distinguishing it from siblings like keap_get_task which retrieves a specific task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., keap_get_task, keap_create_task). The description does not mention prerequisites or context, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_get_transactionA
Retrieve a transaction by ID
| Name | Required | Description | Default |
|---|---|---|---|
| transaction_id | Yes | Transaction ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only states 'Retrieve', implying a read operation, but does not disclose potential side effects, required permissions, error conditions, or response shape. For a tool with no annotation coverage, more detail is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler, front-loaded with the action. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description only says 'Retrieve a transaction by ID'. It does not describe the return structure (e.g., transaction details, fields). Adequate for a simple getter but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with one parameter 'transaction_id' described as 'Transaction ID' (tautological). The description adds no meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve a transaction by ID' clearly states the action (get) and the resource (transaction by ID), distinguishing it from siblings like keap_list_transactions which lists multiple transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., keap_list_transactions for paginated collections, or keap_get_order for transaction context). It's a standard getter, but lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_affiliatesC
List all affiliates with filtering
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| status | No | Filter by status (0=inactive, 1=active) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states it lists affiliates with filtering but does not mention pagination behavior, performance considerations, or that it is read-only. The return format is not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words. It is appropriately concise and front-loaded with the tool's core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and no output schema, the description lacks important context: what data is returned, how pagination works, and default filters. It is too minimal for a list operation that may return many results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all three parameters. The description adds no additional meaning beyond 'filtering', so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists affiliates with filtering, using a specific verb and resource. It distinguishes from sibling tools like keap_create_affiliate or keap_get_affiliate, which are for creating or retrieving single affiliates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like keap_get_affiliate for a single affiliate or other list tools. There are no explicit when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_appointmentsB
List appointments with filtering and pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| since | No | Appointments after this date | |
| until | No | Appointments before this date | |
| offset | No | Pagination offset | |
| user_id | No | Filter by user | |
| contact_id | No | Filter by contact |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions 'filtering and pagination', hinting at capabilities, but does not disclose details like default ordering, response format, or potential side effects. For a read-only list tool, this is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the verb and resource. It avoids unnecessary words, though it could be expanded without becoming verbose. It earns its place but lacks depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description is insufficient. It does not explain pagination behavior (e.g., offset/limit semantics), return format, or how filters work together. More context is needed for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters have descriptions in the schema. The description adds no additional meaning beyond the generic phrase 'filtering and pagination'. Baseline 3 is appropriate since the schema already documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'appointments', but it does not explicitly distinguish from siblings like `keap_get_appointment` which retrieves a single appointment. The phrase 'with filtering and pagination' adds specific scope, making it clear enough for a list tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., `keap_get_appointment` for a single appointment). Also no information about prerequisites or context such as required permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_campaignsB
List all campaigns with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| order | No | Order by field | |
| offset | No | Pagination offset | |
| search_text | No | Search in campaign name/description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds the pagination context beyond the schema, but doesn't disclose other behavioral traits like read-only nature, performance implications, or rate limits. The mention of pagination provides some transparency, hence a score of 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: a single sentence that is front-loaded with purpose. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the simplicity of the tool (list with pagination), the description lacks details on return format, pagination behavior (e.g., total count, max limit), and filtering via search_text. It is insufficient for an agent to fully understand usage without consulting the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds 'with pagination' which aligns with limit/offset parameters, but doesn't add additional meaning beyond the schema descriptions. No significant added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all campaigns with pagination, using a specific verb and resource. It distinguishes from sibling 'keap_get_campaign' which retrieves a single campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. For example, it doesn't mention that for a single campaign, 'keap_get_campaign' should be used, or that search filtering is available via parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_commissionsC
List all commissions with filtering
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| since | No | Commissions after this date | |
| until | No | Commissions before this date | |
| offset | No | Pagination offset | |
| contact_id | No | Filter by contact | |
| affiliate_id | No | Filter by affiliate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'list all commissions with filtering', omitting scope (global vs per affiliate), authentication needs, pagination behavior beyond parameter names, or potential performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 5 words, very concise. However, it could benefit from slightly more detail to justify its brevity. Still, it is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 6 parameters are fully described in the schema, the description is adequate but incomplete. It does not clarify the exact scope of commissions (e.g., only affiliate commissions), and there is no output schema to document return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has a schema description. The tool description adds no extra semantic value beyond 'with filtering', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'list' and resource 'commissions', and notes filtering capability. However, it does not distinguish from the sibling tool 'keap_get_affiliate_commissions', which might return similar data for a specific affiliate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'keap_get_affiliate_commissions' or other list tools. The description lacks explicit when/when-not and alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_companiesB
List all companies with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| order | No | Order by field | |
| offset | No | Pagination offset | |
| company_name | No | Filter by company name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden but only states 'list' which implies read-only, yet it does not explicitly confirm no side effects, or mention any behavioral constraints like rate limits or data scope. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no filler. Every word is necessary and informative. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing output schema and annotations. The description does not mention what the response contains (e.g., list of company objects with fields), potential limitations, or default ordering. Incomplete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all companies with pagination' clearly states the verb (list) and resource (companies), and distinguishes from sibling tools like keap_get_company and other list tools. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as keap_list_contacts or keap_search_contacts. No conditions, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_contact_notesB
Get all notes for a specific contact
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| offset | No | Pagination offset | |
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fails to disclose that this is a read operation, whether pagination is supported (despite parameters), or any permission requirements. The minimal description does not compensate for the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence and very concise. It is front-loaded with the core purpose. However, it could include more information without being overly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and no output schema, the description is insufficient. It does not explain pagination behavior, return format, or what 'all notes' means in terms of scope. The sibling list shows many list tools, so more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the parameters are already well-documented. The description adds no additional meaning beyond what the schema provides. Baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and identifies the resource 'all notes for a specific contact,' clearly distinguishing it from sibling tools like 'keap_get_note' (single note) and 'keap_list_notes' (all notes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that this filters by contact, which differentiates it from 'keap_list_notes', nor does it specify prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_contactsC
List contacts with pagination, filtering, and sorting options
| Name | Required | Description | Default |
|---|---|---|---|
| No | Filter by email address | ||
| limit | No | Number of results per page (max 200) | |
| order | No | Field to order by (e.g., date_created, email) | date_created |
| since | No | Filter contacts created/updated after this ISO date | |
| until | No | Filter contacts created/updated before this ISO date | |
| offset | No | Offset for pagination | |
| given_name | No | Filter by first name | |
| family_name | No | Filter by last name | |
| order_direction | No | Sort direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should disclose behavioral traits such as rate limits, authentication requirements, or pagination behavior. It only mentions options without any behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and concise. It covers the essence without waste, though it could benefit from slightly more detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain what the tool returns (e.g., a list of contact objects with specific fields). Since there is no output schema, the description should provide this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond grouping them as 'filtering and sorting options.' Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists contacts with pagination, filtering, and sorting options. However, it does not differentiate from the sibling tool keap_search_contacts, which might have similar functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like keap_search_contacts or keap_get_contact. The description does not mention any specific use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_custom_fieldsC
List all custom fields for a given entity type
| Name | Required | Description | Default |
|---|---|---|---|
| entity_type | Yes | Entity type (Contact, Company, Opportunity, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits such as authentication needs, read-only status, pagination, or data volume. The agent cannot infer safety or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks structure. It omits critical information such as return format or usage notes, making it under-specified rather than efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain what the tool returns, but it does not. It also lacks details on pagination or filters. The description is incomplete for a tool that lists potentially many custom fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter. The description does not add meaning beyond the schema's 'Entity type (Contact, Company, Opportunity, etc.)', earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all custom fields for a given entity type,' which specifies the action (list) and resource (custom fields). It distinguishes from sibling tools like keap_get_contact_custom_fields by clarifying the scope is per entity type, not per contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., keap_get_contact_custom_fields for per-contact fields) or any prerequisites. The agent lacks context for proper tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_emailsC
List emails with filtering
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| since | No | Emails sent after this date | |
| until | No | Emails sent before this date | |
| offset | No | Pagination offset | |
| contact_id | No | Filter by contact |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist. Description does not disclose whether this is read-only, required permissions, response structure, or pagination behavior beyond schema defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise (4 words), no filler. However, could be expanded with critical context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations. Description is minimal for a tool with 5 optional parameters; lacks details on return type, result set size, or behavior with no filters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage describing all 5 parameters. Description adds only the word 'filtering', which is redundant. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists emails with filtering, which distinguishes it from other keap tools like send, get, or update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings (e.g., keap_get_email for single, keap_search_contacts for different entity). No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_email_templatesC
List all email templates
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It fails to disclose pagination behavior, default order, rate limits, or data returned. The limit parameter hints at pagination but is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no fluff. It is efficient, though it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and simple parameters, the description should explain what data is returned. It lacks context on response format, pagination details, and typical usage scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'limit', so baseline is 3. The description adds no extra meaning beyond the schema, but also does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'email templates', distinguishing it from other list tools by resource name. However, it does not elaborate on scope or filtering, slightly limiting clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like keap_create_email_template or keap_send_email. The description is purely functional without contextual advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_filesC
List files with filtering
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| contact_id | No | Filter by contact |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states 'List files', lacking details on read-only nature, pagination, authentication, or rate limits. The schema hints at pagination but description does not clarify.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single phrase, but lacks structure. Appropriate for minimal info but could benefit from explicit details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no description of return format or fields. Lacking completeness for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3. Description adds 'filtering' which maps to contact_id, but does not elaborate on limit/offset beyond schema. No additional semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool lists files with filtering, which distinguishes it from retrieve single file (keap_get_file) or upload file (keap_upload_file). However, could be more specific about filter types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives like keap_get_file or keap_upload_file. Lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_hook_event_typesA
List all available hook event types
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states what it lists, not how it behaves (e.g., no side effects, no auth requirements, no pagination info). Users are left uninformed about the output format or any constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is front-loaded and efficiently conveys the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and simple task, the description is minimally complete. It explains the action but lacks return information (e.g., list of strings). Could be improved by noting typical use cases, like configuring hooks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%. Per guidelines, 0 parameters baseline is 4. The description adds no parameter info, which is acceptable as none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'all available hook event types.' The verb 'list' and resource 'hook event types' are specific. It distinguishes from siblings like keap_list_hooks (which lists hook instances) by focusing on event types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool when you need to know available hook event types. No explicit when-not or alternatives are given, but the simplicity makes it clear. A slight improvement would be to mention it's a read-only operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_hooksA
List all REST hooks
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'list all,' implying a read operation but not disclosing potential limitations (e.g., pagination, rate limits). It does not add behavioral context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description could hint at what is returned (e.g., 'list of hooks with details'). It is adequate for a simple list but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, the description need not add parameter info. It meets the baseline of 4 by not introducing confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all REST hooks' clearly states the action and resource, distinguishing it from sibling tools like keap_list_hook_event_types. It is specific and not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives like keap_create_hook or keap_verify_hook. No context about prerequisites or suitable scenarios is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_notesC
List notes for a contact
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| user_id | No | Filter by user who created notes | |
| contact_id | No | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It does not disclose any behavioral traits such as pagination limits, ordering, or side effects. For a read-only list operation, this is minimally adequate but lacks detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence), but it is under-specified. While it is front-loaded, it lacks structure and does not fully utilize the available space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does not mention what the response contains. For a list tool, it should at least indicate that it returns a list of notes. The description is incomplete given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 4 parameters, so the description adds no additional meaning. The baseline is 3, and the description does not provide extra context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and resource (notes for a contact). However, it does not differentiate from the similar sibling tool 'keap_list_contact_notes', which likely serves an identical purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'keap_list_contact_notes' or 'keap_get_note'. There is no mention of prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_opportunitiesC
List opportunities with filtering and pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| order | No | Order by field | |
| offset | No | Pagination offset | |
| user_id | No | Filter by user ID | |
| stage_id | No | Filter by pipeline stage | |
| contact_id | No | Filter by contact ID | |
| search_term | No | Search in title/notes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states 'List opportunities', implying a read operation, but doesn't disclose rate limits, authentication needs, or any side effects. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, clear sentence with no redundancy. Efficient for an experienced user, though it might benefit from slight expansion for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should indicate what is returned (e.g., list of opportunity objects). It also lacks any guidance on required scopes or permissions. Insufficient for a tool with 7 parameters and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 7 parameters with descriptions (100% coverage), so the description adds little beyond summarizing 'filtering and pagination'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists opportunities with filtering and pagination, distinguishing it from create/update/get tools. However, it could be more specific about the resource scope (e.g., 'your Keap account').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_opportunity or other list tools. Missing when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_opportunity_stage_pipelineA
List all pipeline stages for opportunities
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so description bears full burden. It states 'List all pipeline stages', implying a read-only operation, but omits any details about required permissions, rate limits, or side effects. The behavior is minimally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence efficiently conveys the tool's purpose. It is concise, though a slight expansion on what the listing includes could improve completeness without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is adequate for a simple list operation. However, it does not mention what information is returned (e.g., stage names, IDs) or any ordering, which a more complete description would include.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the description cannot add meaning beyond what is already evident from input schema. Baseline of 4 is appropriate as no additional param clarification is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'List all pipeline stages for opportunities' with a specific verb and resource. The name and description clearly distinguish it from sibling tools like keap_get_opportunity_stage_pipeline, which retrieves a single stage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or not use this tool vs alternatives. The description implies its purpose (listing all stages), but does not mention that keap_get_opportunity_stage_pipeline is for retrieving a specific stage. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_ordersC
List orders with filtering
| Name | Required | Description | Default |
|---|---|---|---|
| paid | No | Filter by paid status | |
| limit | No | Results per page | |
| since | No | Orders after this date | |
| until | No | Orders before this date | |
| offset | No | Pagination offset | |
| contact_id | No | Filter by contact | |
| product_id | No | Filter by product |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It only states the tool lists orders with filtering, but does not mention whether it is read-only, pagination details, rate limits, or other behavioral traits. The agent gains minimal behavioral insight beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it concise. However, it is overly brief given the complexity of the tool (7 parameters, no output schema). It sacrifices informativeness for brevity, resulting in a minimally viable but not helpful description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 optional parameters, no output schema, and no annotations, the description is incomplete. It does not explain output format, pagination behavior (e.g., default limit, offset usage), or how it relates to sibling tools like keap_get_order or keap_list_order_transactions. Agents would need to infer crucial details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional meaning beyond 'with filtering', which is already implied by the parameter names and descriptions. Baseline 3 is appropriate as the description does not need to compensate but also adds no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List orders with filtering' clearly indicates the action (list) and resource (orders), and implies filtering capability. However, it does not specify the scope (e.g., all orders or contact-specific) and could be more distinct from sibling tools like keap_get_order or keap_list_order_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like keap_get_order (for single order) or keap_list_order_transactions. The description does not mention use cases, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_order_transactionsB
Get all transactions for an order
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It does not mention that the operation is read-only, nor does it discuss pagination, rate limits, or any side effects. The minimal description adds no behavioral context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence, efficient and to the point. No unnecessary words. However, it could benefit from slight expansion for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple list tool with one required parameter, but it lacks context about the response format (e.g., array of transaction objects). Since no output schema exists, some additional detail would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one parameter with a basic description). The tool description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all transactions for an order', identifying the specific verb (list) and resource (transactions per order), distinguishing it from sibling tools like keap_get_transaction (single) and keap_list_transactions (likely all).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as keap_get_transaction or keap_list_transactions. The description lacks context on prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_productsA
List all products with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| active | No | Filter by active status | |
| offset | No | Pagination offset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions 'all products' but does not specify scope (e.g., active/inactive) or any rate limits or safety information. Basic transparency is present but limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no fluff, directly stating the purpose and key feature (pagination). Efficient use of words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with 3 optional parameters and no output schema. The description adequately covers the core functionality, though it could mention default values (50 limit, 0 offset) already in schema. Overall sufficient for a list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all 3 parameters. The description adds 'pagination' context, but the schema already describes limit and offset. No additional meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all products with pagination, using a specific verb and resource. It distinguishes itself from sibling tools like get_product (for single product retrieval) and other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, such as searching or filtering. The context of pagination is implied but not elaborated. It lacks when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_subscriptionsC
List subscriptions with filtering
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| active | No | Filter by active status | |
| contact_id | No | Filter by contact |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It does not mention that the operation is read-only, whether pagination is used (though the schema has a limit parameter), or any rate limits. The description is too brief to compensate for missing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that gets to the point. It is front-loaded with the core action. However, it could be improved by briefly listing the filter options or mentioning pagination, but the current length is still effective for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and all parameters are optional, the description fails to explain the response format or default behavior (e.g., pagination limit). It does not tell the user what to expect from the list or how to handle large datasets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond 'filtering'; it does not clarify how filters interact (e.g., AND logic) or provide format details. The schema already documents each parameter sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists subscriptions and supports filtering. The verb 'List' matches the tool's naming convention, and 'subscriptions' is a specific resource. However, it does not explicitly differentiate from other list tools like keap_list_contacts or keap_list_products, which may also support filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., keap_get_subscription for a single subscription). There are no usage examples or context about prerequisites (e.g., need a contact ID for filtering). The description simply states functionality without directing the user.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_tag_categoriesB
List all tag categories
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'list all tag categories', implying a read operation, but does not disclose pagination, error handling, rate limits, or any behavioral traits. With no annotations, the description carries full burden but fails to provide meaningful transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the key information. It is appropriately sized for a simple list operation, though some might argue it is too brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description is minimal. For a simple list of tag categories, it might be marginally sufficient, but the lack of any return format or pagination details makes it incomplete for an AI agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% by default. The description adds no further parameter information, but none is needed. Baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List' and the resource 'all tag categories', which is specific and distinguishes it from sibling tools like 'keap_list_tags' (lists individual tags) and 'keap_create_tag_category' (creates a category).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of context, prerequisites, or cases where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_tagsA
List all tags with pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| offset | No | Pagination offset | |
| category | No | Filter by category name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions pagination but lacks details on ordering, default pagination behavior, or that it lists all tags despite pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with clear purpose and pagination hint. Front-loaded and efficient, though slightly terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with three optional params and no output schema. Description does not indicate what data the response contains (e.g., tag objects).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds no value beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'List' and resource 'tags', with 'pagination' hint. Distinguishes from siblings like keap_list_tag_categories and keap_get_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or alternatives. Usage is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_tasksB
List tasks with filtering and pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| since | No | Tasks created after this date | |
| until | No | Tasks created before this date | |
| offset | No | Pagination offset | |
| user_id | No | Filter by assigned user | |
| completed | No | Filter by completion status | |
| contact_id | No | Filter by contact |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must compensate. It does not disclose read-only nature, sorting behavior, rate limits, or any side effects. Only the basic operation is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise (5 words), front-loaded, no fluff. However, it sacrifices useful detail that could fit without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no output schema, and no annotations, the description is insufficient. It omits the return format (list of task objects?), default pagination behavior, and filtering semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions. The description adds only 'filtering and pagination', which is already obvious from parameters. No added value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List tasks with filtering and pagination'āa clear verb+resource combination. It distinguishes from siblings like keap_get_task (single task) and keap_search_tasks (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., keap_search_tasks). No mention of prerequisites, use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_transactionsC
List transactions with filtering
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| since | No | Transactions after this date | |
| until | No | Transactions before this date | |
| offset | No | Pagination offset | |
| contact_id | No | Filter by contact |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'List', implying read-only, but does not confirm idempotency, authentication requirements, rate limits, or what happens to the system. The brief phrase fails to provide transparency beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is efficient. However, it may be too minimal, sacrificing clarity and completeness. Every word does earn its place, but more context would be beneficial.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and the presence of 5 parameters, the description is incomplete. It does not explain the return format, pagination behavior, or how filtering affects results. The agent needs more context to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, so the baseline is 3. The description adds no extra meaning beyond the schema parameter descriptions, merely stating 'with filtering'. It does not explain how the parameters interact or provide usage examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List transactions' and the capability 'with filtering'. It is specific about the resource (transactions). However, it does not differentiate from sibling list tools like keap_list_orders or keap_list_order_transactions, leaving ambiguity about what type of transactions are included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided on when to use this tool versus alternatives. There are several sibling list tools (e.g., keap_list_orders, keap_list_order_transactions) but this description gives no comparative context or exclusions, forcing the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_list_usersC
List all users in the account
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page | |
| include_inactive | No | Include inactive users |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as pagination, rate limits, or that the results can be filtered via parameters. Only a basic read operation is implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it omits important details like pagination behavior and filtering capabilities. It is not optimally front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of a list tool with only 2 fully described parameters and no output schema, the description is minimally adequate but lacks completeness regarding return format and pagination details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already explained in the schema. The description adds no additional meaning beyond what is in the schema, earning a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all users in the account' clearly identifies the action (list) and resource (users). It distinguishes from sibling tools as it is the only user-listing tool among many list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives or any prerequisites. The description lacks context for usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_merge_contactsB
Merge two contacts together, combining all data into one contact
| Name | Required | Description | Default |
|---|---|---|---|
| source_contact_id | Yes | Contact ID to merge from (will be deleted) | |
| target_contact_id | Yes | Contact ID to merge into (will be kept) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'combining all data' but does not disclose destructive behavior (source contact will be deleted). The input schema mentions deletion, but the description itself lacks this critical transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that communicates the core action. While it could include more detail, it is not overly verbose and front-loads the key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does not explain return values or side effects. For a destructive merge operation, more context (e.g., confirmation, resulting contact ID) would be valuable. The description is incomplete for safe agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear parameter descriptions detailing which contact is deleted vs kept. The description adds no additional semantics beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs and resources: 'Merge two contacts together, combining all data into one contact'. This clearly distinguishes it from sibling tools like keap_delete_contact or keap_update_contact, as merging is a unique operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, such as ensuring contacts are not linked to critical records, or when not to merge. The agent receives no context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_opt_in_contactB
Opt in a contact to email communications
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address | ||
| opt_in_reason | Yes | Reason for opt-in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description is too brief to disclose behavioral traits such as whether the operation is idempotent, if it triggers a confirmation email, or how it interacts with existing opt-in status. The description adds minimal value beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no extraneous information. It is front-loaded and to the point, though it sacrifices some helpful detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is insufficiently complete. It omits important context such as success/error behavior, required contact pre-existence, and any side effects. A minimal viable description would need more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description does not add meaningful context beyond what the schema provides (e.g., legal implications of opt_in_reason), so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Opt in' and the resource 'a contact to email communications', making the tool's purpose unambiguous. It is distinct from its sibling 'keap_opt_out_contact' which performs the reverse action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies opt-in usage but provides no explicit guidance on when to use this tool versus alternatives (e.g., keap_update_contact) or prerequisites like contact existence or opt-in status. It lacks clear context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_opt_out_contactB
Opt out a contact from email communications
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It only says 'Opt out', implying a mutation, but lacks details on what exactly happens (e.g., permanent suppression, scope of opt-out) or any prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words, front-loading the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is adequate but lacks context about the effect's scope and prerequisites, which could help the agent use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'email'. The description adds no additional meaning beyond the schema's own description, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Opt out') and the resource ('contact from email communications'), which is specific and distinguishes it from siblings like 'keap_opt_in_contact' and 'keap_send_email'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as contrasting with opt-in or send email tools, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_remove_contact_from_campaignB
Remove a contact from a campaign sequence
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID | |
| campaign_id | Yes | Campaign ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions 'remove' (mutation) but does not disclose side effects, reversibility, or what happens if the contact is not in the campaign sequence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, efficient sentence with no wasted words. However, it could benefit from a brief usage hint to improve clarity without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no annotations or output schema, the description is too sparse. It lacks information on prerequisites, expected behavior on failure, or relationship to other campaign actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with basic descriptions ('Contact ID', 'Campaign ID'), but the tool description adds no further meaning. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Remove') and the resource ('contact from a campaign sequence'), distinguishing it from siblings like 'keap_add_contact_to_campaign' and 'keap_remove_contact_from_sequence'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., removing from a sequence vs. campaign). The description only states the action, lacking context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_remove_contact_from_sequenceB
Remove a contact from a campaign sequence
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID | |
| sequence_id | Yes | Sequence ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description does not disclose any behavioral traits beyond the basic action, such as idempotency, side effects, or error handling. The description carries the full burden but adds minimal value beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no fluff or redundancy. Very concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple removal tool with two required parameters and no output schema, the description is adequate but lacks behavioral context like prerequisites or what happens if the contact is not in the sequence. It covers the essentials but is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions 'Contact ID' and 'Sequence ID'. The description adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Remove' and the resource 'a contact from a campaign sequence'. It distinguishes from siblings like keap_add_contact_to_sequence and keap_remove_contact_from_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description provides clear context but lacks exclusions or when-not scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_remove_tag_from_contactA
Remove one or more tags from a contact
| Name | Required | Description | Default |
|---|---|---|---|
| tag_ids | Yes | Array of tag IDs to remove | |
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as permissions, side effects, idempotency, or error behavior. For a mutation tool, this is a significant gap, leaving the agent unaware of potential consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly conveys the core functionality without extraneous information. It is front-loaded with the action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 required params, no output schema), the description covers the basic operation. However, it lacks behavioral context such as idempotency, prerequisites, or what happens on failure, which would be expected for completeness in a CRUD operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema: it reiterates that one or more tags can be removed, which is already implied by the array type. No additional parameter details or constraints are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the resource ('tags from a contact'). It effectively distinguishes from sibling tools like keap_apply_tag_to_contact, which performs the opposite operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for removing tags but does not provide explicit guidance on when to use or when not to use, nor does it mention alternatives among siblings. The context of sibling names (e.g., keap_apply_tag_to_contact) offers indirect differentiation, but the description itself lacks usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_search_contactsC
Search contacts by email, name, phone, or other criteria
| Name | Required | Description | Default |
|---|---|---|---|
| No | Search by email address | ||
| limit | No | Max results | |
| given_name | No | Search by first name | |
| family_name | No | Search by last name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not mention whether the operation is read-only, if it returns multiple contacts or a single one, or any side effects. The term 'search' is vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short but includes an inaccurate mention of 'phone' and vague 'other criteria'. It fails to be efficient because it introduces misleading information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is incomplete. It does not explain the response format, pagination behavior (though limit is parameter), or error conditions, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes each parameter (email, limit, given_name, family_name) at 100% coverage. The description adds no new semantic detail and incorrectly includes 'phone' which is not a parameter, potentially confusing the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (search) and resource (contacts) and lists common search criteria (email, name, phone). However, it includes 'phone' which is not in the schema, and does not differentiate from sibling tools like keap_list_contacts or keap_get_contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not specify prerequisites, exclusions, or limitations regarding search criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_search_tasksC
Search tasks by title, description, or other criteria
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| query | No | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, rate limits, or side effects. The description carries the full burden but only states basic search functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence without extraneous content. It is front-loaded with the action and resource, but could be more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with two parameters and no output schema, the description is minimally adequate. It lacks details about return format, pagination, or error handling, but given the simplicity, it meets a basic threshold.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters (limit, query). The description adds minimal context by mentioning 'title, description, or other criteria', but this is largely redundant given the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches tasks by title, description, or other criteria, distinguishing it from list and get tasks. However, it could be more specific about the scope and behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like keap_list_tasks or keap_get_task. The description does not provide context for choosing this over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_send_emailC
Send an email to one or more contacts
| Name | Required | Description | Default |
|---|---|---|---|
| subject | Yes | Email subject | |
| contacts | Yes | Array of contact IDs | |
| attachments | No | Email attachments | |
| from_address | No | From email address | |
| html_content | No | HTML content of email | |
| text_content | No | Plain text content of email | |
| reply_to_address | No | Reply-to email address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks behavioral details such as whether the email is sent immediately, authentication requirements, attachment limits, or success/failure responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no extraneous words, but it could be more structured with front-loaded key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and no output schema or annotations, the description is insufficient. It does not address return values, error states, or usage context beyond basic purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents parameters. The description adds no additional meaning beyond what is in the schema, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Send an email to one or more contacts' with a specific verb and resource. It distinguishes itself from sibling tools like keap_get_email or keap_create_contact, though it could be more precise about the email scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no exclusions, and no context for prerequisites or preferred use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_account_profileB
Update account profile settings
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Business name | |
| No | Business email | ||
| phone | No | Business phone | |
| address | No | Business address | |
| website | No | Business website | |
| time_zone | No | Time zone | |
| language_tag | No | Language tag (e.g., en-US) | |
| currency_code | No | Currency code (e.g., USD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It does not mention idempotency, side effects, authentication requirements, or handling of omitted fields. The update action is implied but not elaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at six words, with no wasted text. However, it lacks structure (e.g., bullet points) and front-loading of key information, which slightly lowers the score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 8 parameters and no output schema, the description is insufficient. It does not specify return values, error conditions, or partial update behavior, leaving significant gaps for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no meaning beyond what is in the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'update' and the resource 'account profile settings', which is specific and distinct from sibling tools like keap_get_account_profile (read) and other update tools targeting different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are there any prerequisites or exclusions mentioned. The description is too minimal to help an agent decide contextually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_appointmentB
Update an existing appointment
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Appointment title | |
| end_date | No | End date/time | |
| location | No | Location | |
| start_date | No | Start date/time | |
| description | No | Description | |
| appointment_id | Yes | Appointment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states 'Update an existing appointment', implying mutation but lacking details on permissions, idempotency, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, no wasted words. Could be more structured but is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters and no output schema, the description is too minimal. It does not clarify required fields, date formats, or any constraints, leading to incomplete guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 6 parameters. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Update an existing appointment', clearly indicating the verb (update) and resource (appointment). It distinguishes from siblings like keap_create_appointment and keap_delete_appointment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as create or delete. No context or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_companyC
Update an existing company
| Name | Required | Description | Default |
|---|---|---|---|
| No | Company email | ||
| notes | No | Notes | |
| phone | No | Company phone | |
| website | No | Company website | |
| company_id | Yes | Company ID | |
| company_name | No | Company name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'Update' without indicating whether it is a full replace or partial update, what happens on failure, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous words. It is appropriately brief for a simple update operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 6 parameters and no output schema, the description should explain update semantics (e.g., partial vs full). It lacks completeness given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description bears little burden for parameters. However, it adds no additional meaning beyond the schema, such as explaining that only provided fields are updated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Update an existing company', which clearly communicates the verb and resource. It distinguishes from keap_create_company and keap_get_company by the verb 'update', though it does not elaborate on scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like keap_create_company or when partial update behavior applies. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_contactB
Update an existing contact with new information
| Name | Required | Description | Default |
|---|---|---|---|
| No | Primary email address | ||
| phone | No | Primary phone number | |
| tag_ids | No | Array of tag IDs | |
| owner_id | No | User ID of contact owner | |
| job_title | No | Job title | |
| contact_id | Yes | Contact ID | |
| given_name | No | First name | |
| family_name | No | Last name | |
| company_name | No | Company name | |
| custom_fields | No | Custom field values |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only says 'update', not specifying if it is a partial update (PATCH) or full replace (PUT), nor any side effects or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence), but lacks important context. It is front-loaded with the verb and resource, but is under-informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters and no output schema, the description does not explain the update semantics (e.g., partial vs full) nor the return value. It is insufficient for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema, such as whether tag_ids replaces or appends tags.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an existing contact with new information', specifying the action (update) and the resource (contact), distinguishing it from create and other update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like keap_merge_contacts or other update tools. Does not mention required permissions or preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_contact_custom_fieldB
Update a specific custom field value for a contact
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | New value for the custom field | |
| contact_id | Yes | Contact ID | |
| custom_field_id | Yes | Custom field ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It states 'update' but does not disclose behavioral traits such as whether the update is idempotent, whether it creates the field if missing, authentication requirements, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff. It is concise and front-loaded. However, it could include more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 required params, no output schema), the description is adequate but could cover return behavior or error conditions. It lacks completeness for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters (contact_id, custom_field_id, content). The tool description adds no additional meaning beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update a specific custom field value for a contact' clearly states the verb (update) and the specific resource (custom field value). It distinguishes from sibling tools like keap_update_contact (updates main contact fields) and keap_get_contact_custom_fields (reads custom fields).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention when not to use it, prerequisites, or context. Sibling tools exist for different purposes, but the description provides no differentiation beyond the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_hookC
Update a REST hook
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Hook status (Active, Inactive) | |
| hookUrl | No | New webhook URL | |
| hook_key | Yes | Hook key to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only states 'Update a REST hook', which implies mutation but lacks specifics. It does not disclose required permissions, side effects, reversibility, or response behavior, leaving the agent with minimal insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence. However, the brevity sacrifices critical information that could be included without harming conciseness. It is efficient but under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, and the presence of sibling tools, the description is insufficient. It does not explain the tool's role in the lifecycle (update vs. create/delete/verify) or what changes occur, making it incomplete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes all three parameters (status, hookUrl, hook_key) with complete coverage (100%). The tool description adds no additional semantic meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update a REST hook' is essentially a restatement of the tool name 'keap_update_hook'. It adds no new information about what a REST hook is or what the update entails, making it tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like keap_create_hook or keap_delete_hook. The description does not mention prerequisites or context, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_noteC
Update an existing note
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Note content | |
| type | No | Note type | |
| title | No | Note title | |
| note_id | Yes | Note ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits beyond the fact that the tool updates a note. There is no mention of what happens if the note does not exist, permissions needed, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence but adds little value beyond the tool name. It is under-specified rather than concise, lacking useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return values, required parameters (note_id), or the scope of updates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 4 parameters with descriptions (100% coverage). The description adds no additional meaning beyond the schema, so it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Update an existing note' which is clear but essentially restates the tool name 'update_note'. It adds the word 'existing' but does not distinguish from sibling tools like keap_create_note or keap_delete_note in any meaningful way.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. The description does not mention alternatives or prerequisites, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_opportunityC
Update an existing opportunity
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | No | User ID (owner) | |
| stage_id | No | Pipeline stage ID | |
| opportunity_id | Yes | Opportunity ID | |
| next_action_date | No | Next action date | |
| next_action_notes | No | Next action notes | |
| opportunity_notes | No | Notes | |
| opportunity_title | No | Deal title | |
| estimated_close_date | No | Estimated close date | |
| projected_revenue_low | No | Low revenue estimate | |
| projected_revenue_high | No | High revenue estimate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully bears the burden of disclosing behavioral traits. It only states 'update an existing opportunity,' omitting side effects, permission requirements, field constraints, or that it modifies the opportunity in the system. For a mutation tool with 10 parameters, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At one sentence, it is concise but potentially under-specified. The description efficiently conveys the basic action but could include a brief one-liner about scope (e.g., 'fields listed in input') without sacrificing conciseness. It achieves a bare minimum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, and the presence of 10 parameters, the description does not guide the agent on expected return values, error handling, or effective usage. It fails to provide a complete mental model for the tool's operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema's property descriptions, providing no grouping, relationships, or usage tips. It neither detracts nor adds value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing opportunity' clearly states the action (update) and resource (opportunity), distinguishing it from sibling tools like create, delete, or get opportunity. However, it does not differentiate from the highly similar sibling keap_update_opportunity_stage, which updates only the stage field, potentially causing confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., keap_update_opportunity_stage for stage-only updates) or prerequisites (e.g., opportunity must exist). The description lacks any when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_opportunity_stageB
Move an opportunity to a different pipeline stage
| Name | Required | Description | Default |
|---|---|---|---|
| stage_id | Yes | New stage ID | |
| opportunity_id | Yes | Opportunity ID | |
| move_to_stage_reason | No | Reason for stage change |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It fails to disclose behavioral traits such as whether it returns the updated opportunity, requires permissions, or handles invalid stages; it only states the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, achieving conciseness. However, it lacks structure and could benefit from added context like prerequisites or outcome info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is insufficient: it does not mention return format (no output schema), prerequisites (e.g., opportunity existence), or validation of stage ID. An agent would lack crucial information for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters, but the tool description adds no additional meaning beyond what the schema provides. The baseline is 3, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Move an opportunity to a different pipeline stage' uses a specific verb and resource, clearly distinguishing it from sibling tools like keap_update_opportunity (which updates other fields) and keap_get_opportunity_stage_pipeline (retrieval).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as when to update opportunity details vs. stage only, or any prerequisites like ensuring the stage exists in the pipeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_productC
Update an existing product
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | SKU code | |
| status | No | Status (0=inactive, 1=active) | |
| product_id | Yes | Product ID | |
| product_name | No | Product name | |
| product_price | No | Product price |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'Update an existing product', leaving out side effects (e.g., whether it's idempotent, permissions needed, error handling for missing product). The description is insufficient for safe agent invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is easy to parse. It front-loads the action. However, it could sacrifice conciseness for completeness without being overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should provide more context such as return value, partial update behavior, or dependencies. It fails to do so, leaving the agent with significant uncertainty about the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema explains all parameters. The description adds no extra meaning beyond what the schema provides. Baseline score of 3 is appropriate as the description does not improve understanding of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing product' clearly states the action (update) and the resource (product). It distinguishes from sibling tools like keap_create_product and keap_delete_product. However, it is minimal and could be more specific about which fields can be updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as when to update vs create/delete, or any prerequisites like requiring the product to exist. The description does not mention scenarios or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_update_taskC
Update an existing task
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Task title | |
| task_id | Yes | Task ID | |
| due_date | No | Due date | |
| priority | No | Priority | |
| completed | No | Mark as completed | |
| description | No | Task description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It states only 'Update an existing task' without disclosing behavioral traits like idempotency, error handling (e.g., if task_id is invalid), permission requirements, or side effects (e.g., whether updating a completed task resets it). This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief (5 words), but it lacks necessary information. Conciseness is not just shortness; it should be efficiently informative. This description is under-specified and does not earn its place by providing value beyond the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description is incomplete. It does not explain important details like which fields can be updated (though schema lists them), the effect of omitting fields, or the expected response. The tool is complex enough to require more contextual information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all 6 parameters having individual descriptions in the schema. The tool's description adds no additional meaning beyond 'Update an existing task', which does not elaborate on parameter usage or constraints. Baseline 3 is appropriate as the schema already provides adequate parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing task' clearly states the action (update) and resource (task), but it is generic and does not distinguish from sibling tools like keap_complete_task (which specifically completes a task) or keap_create_task. The verb+resource is present but lacks specificity to differentiate from similar update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. There is no indication of when to use this tool versus alternatives such as keap_complete_task (for completion) or keap_update_appointment (for different resources). The description fails to mention prerequisites or alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_upload_fileC
Upload a file to Keap
| Name | Required | Description | Default |
|---|---|---|---|
| file_data | Yes | Base64 encoded file data | |
| file_name | Yes | Name of the file | |
| is_public | No | Make file publicly accessible | |
| contact_id | No | Associate with contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It only states 'upload' but doesn't mention overwrite behavior, file type restrictions, success/failure responses, or any side effects. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 5-word sentence. While concise, it is under-specified and lacks structure. It does not front-load key details or provide any organized information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no output schema, the description does not cover return values, error handling, or operational details. It is insufficient for a tool that may have constraints like file size, MIME types, or association behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions (file_name, file_data, is_public, contact_id). The description adds no additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Upload a file to Keap' clearly states the action (upload) and the resource (file). This distinguishes it from siblings, which include CRUD tools for contacts, products, etc., but no other file upload tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives, file size limits, required permissions, or what happens with duplicate filenames. The description is purely functional without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keap_verify_hookB
Verify a REST hook
| Name | Required | Description | Default |
|---|---|---|---|
| hook_key | Yes | Hook key to verify |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavior. It fails to explain what verification entails (e.g., whether it makes a network call, checks validity, or returns a result). The minimal description leaves agents guessing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous words. It is appropriately concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a verification tool, the description omits what the outcome indicates, success/failure conditions, and any return values. It is not complete enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'hook_key' described as 'Hook key to verify'. The description adds no extra meaning, but the schema is adequate. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Verify a REST hook' uses a specific verb and resource, clearly distinguishing it from sibling tools like create, delete, list, or update hooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites, and no context about when verification is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes targeting specific entities and actions (e.g., create_contact vs create_company). A few pairs like add_contact_to_campaign and add_contact_to_sequence are very similar but descriptions clarify the difference. Overall, ambiguity is low despite the large number.
All tools follow a consistent 'keap_verb_noun' pattern using standard verbs (create, get, list, update, delete) and appropriate singular/plural nouns (contact, contacts, tag, tags). No naming style mixing, making it predictable.
111 tools is very high for a typical MCP server. While the CRM domain has many entities, the count is inflated by separating model-getters and sub-resource operations (e.g., get_contact_credit_cards). Some consolidation could reduce the number without losing clarity.
CRUD operations are present for most core entities (contact, company, opportunity, product, order, etc.). There are minor gaps: missing update for subscriptions and affiliates, and no delete for some entities. However, the surface is comprehensive with additional operations like search, merge, opt-in/out, and webhooks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
34-tool CRM server ā contacts, pipeline, quotes, invoices, scheduling, email, and AI scoring.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
List and create Keap contacts, companies, tasks, opportunities, orders, tags and campaigns.
Cross-product MCP server for CRM, LeadKit, ProjectKit, Bookio. 10 action types, MIT open spec.
Related MCP Servers
- AlicenseBqualityAmaintenanceComprehensive Model Context Protocol server for MySQL databases featuring 191 specialized tools for CRUD operations, JSON functions, spatial/GIS, schema management, performance monitoring, and advanced features like OAuth 2.1 authentication and connection pooling.4313310MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server for Plunk, the open-source self-hosted email platform. Provides 84 tools for transactional email, contacts, campaigns, segments, templates, workflows, events, and analytics through the Plunk API.11272MIT
- AlicenseCqualityCmaintenanceA comprehensive MCP server covering the full GoHighLevel API surface with 651 tools, enabling management of contacts, opportunities, calendars, invoices, and more through natural language, with multi-tenant support and read-only safety defaults.100371MIT
- FlicenseNot gradedqualityDmaintenanceComplete Model Context Protocol server for ClickUp, enabling interaction with tasks, spaces, lists, docs, goals, time tracking, and more through 93 tools and 18 React MCP apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BusyBee3333/keap-mcp-2026-complete'
If you have feedback or need assistance with the MCP directory API, please join our Discord server