moxie-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@moxie-mcplist my clients"
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.
Moxie MCP Server v2
Upgraded MCP server for Moxie CRM — fully compatible with Claude Desktop, Claude Code, Osaurus, Cursor, VS Code Cline, and any MCP client.
Upgrades from v1.1.x
Claude JSON compatible — works with
claude_desktop_config.jsonout of the boxdotenvsupport — load config from.envfile for local devMCP Resources — exposes workspace config and server info as resources
Health check tool (
moxie_health_check) — validate your setupStartup validation — warns on missing env vars at launch
Renamed binary —
moxie-mcp(shorter, cleaner)Updated dependencies — latest
@modelcontextprotocol/sdk,axios,zod
Related MCP server: Moxie CRM MCP Server
Quick Start
git clone <your-repo-url> moxie-mcp
cd moxie-mcp
npm install
npm run buildGet Your API Key
Log into your Moxie account
Workspace Settings → Connected Apps → Integrations
Click Enable Custom Integration
Copy your API Key and Base Endpoint URL
Claude JSON Config (Claude Desktop / Osaurus / Any MCP Client)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"moxie": {
"command": "node",
"args": ["/absolute/path/to/moxie-mcp/build/index.js"],
"env": {
"MOXIE_API_KEY": "your_api_key_here",
"MOXIE_BASE_URL": "https://pod01.withmoxie.com/api/public"
}
}
}
}For Osaurus or OpenRouter MCP configs, use the same structure.
Or install globally and use npx:
{
"mcpServers": {
"moxie": {
"command": "npx",
"args": ["-y", "moxie-mcp"],
"env": {
"MOXIE_API_KEY": "your_api_key_here",
"MOXIE_BASE_URL": "https://pod01.withmoxie.com/api/public"
}
}
}
}Resources
This server exposes MCP resources for context-aware clients:
Resource URI | Description |
| Workspace configuration details |
| Server version and available tools |
Available Tools
Clients
list_clients— List all clientssearch_clients— Search clients by name/contactcreate_client— Create a new client
Contacts
search_contacts— Search contacts by name/email/phonecreate_contact— Create a contact under a client
Projects
search_projects— Search projects (optionally by client)create_project— Create a projectupdate_project— Update project detailslist_project_task_stages— List kanban stages
Invoices
search_payable_invoices— Search invoicescreate_invoice— Create invoice (draft or send)apply_payment— Apply payment to invoice
Tasks
create_task— Create task with subtasks, assignees, custom fields
Time Tracking
create_time_entry— Log time with auto-creation flags
Expenses
create_expense— Record expenses (billable/reimbursable)
Sales Pipeline
list_pipeline_stages— List pipeline stagescreate_opportunity— Create opportunity
Support Tickets
create_ticket— Create ticket with structured form datacreate_ticket_comment— Add comment to ticket
Forms
list_form_names— List formscreate_form_submission— Submit lead form (optionally create opportunity)
Files
attach_file_from_url— Attach file from URL to any entity
Calendar
create_or_update_calendar_event— Create or update an eventdelete_calendar_event— Delete event
Deliverables
approve_deliverable— Approve a task/deliverable
Reference
list_email_templates— List email templateslist_invoice_templates— List invoice templateslist_vendor_names— List expense vendorslist_workspace_users— List workspace users
Diagnostics
moxie_health_check— Verify server and API connectivity
Configuration
Variable | Required | Description |
| Yes | Your Moxie API key |
| Yes | Your Moxie API base URL |
Development
# Watch mode
npm run dev
# Build
npm run build
# Test with MCP Inspector
MOXIE_API_KEY=your_key MOXIE_BASE_URL=your_url npx @modelcontextprotocol/inspector node build/index.jsLicense
MIT
Available Tools
30 toolsapply_paymentB
Apply a payment to an existing invoice
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date of payment (YYYY-MM-DD format) | |
| memo | No | Notes about the payment | |
| amount | Yes | Payment amount | |
| clientName | No | Client name (required only if duplicate invoice numbers exist) | |
| paymentType | No | Payment method type | |
| invoiceNumber | Yes | Invoice number to apply payment to (e.g., E-2023-79) | |
| referenceNumber | No | Informational reference number for payment history |
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 only states 'apply,' implying mutation, but does not disclose side effects (e.g., marking invoice as paid, reversing possibility, required permissions). This is insufficient for a financial 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, front-loaded with the core action, and contains no unnecessary words. It is concise and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters), lack of annotations, and no output schema, the description is inadequate. It does not explain return behavior, error conditions, or concurrency implications for payment application.
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 7 parameters. The description adds no extra meaning beyond what is already in 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 'Apply a payment to an existing invoice' clearly states the verb ('apply') and resource ('payment to an existing invoice'). It distinguishes this tool from sibling tools, none of which handle payment application.
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., search_payable_invoices). No prerequisites or exclusions mentioned. The description lacks 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.
approve_deliverableA
Approve a deliverable/task that is in Client Workflow / Approval status in the Project Kanban
| Name | Required | Description | Default |
|---|---|---|---|
| clientName | Yes | Exact match of the client name | |
| projectName | Yes | Exact match of the project name | |
| deliverableName | Yes | Exact match of the deliverable/task name |
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 explaining side effects, reversibility, permissions, or what happens after approval.
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 that front-loads the action and resource. Every word adds value; 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?
The tool is simple with 3 string params and no output schema. The description covers purpose and precondition but lacks behavioral context. It is minimally adequate 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?
Schema coverage is 100% with clear descriptions like 'Exact match of...'. The description adds no extra parameter meaning beyond the action, 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 specifies the verb 'approve' and the resource 'deliverable/task' with a specific context ('in Client Workflow / Approval status in the Project Kanban'). It distinguishes from siblings as no other tool covers approval.
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 by requiring the deliverable to be in 'Client Workflow / Approval status'. It does not explicitly state when not to use or provide alternatives, but the precondition is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_file_from_urlA
Attach a file to a Moxie record by providing a URL. The file will be downloaded and attached.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The unique identifier of the object | |
| type | Yes | Type of object to attach the file to | |
| fileUrl | Yes | Valid HTTPS URL that Moxie will fetch the file from | |
| fileName | No | Name to give the attached file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the file will be downloaded, but no details on side effects, permissions, size limits, or error handling. With no annotations, this is minimally adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action and resource. No superfluous 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?
Sufficient for a simple file attachment tool with four parameters. Lacks mention of return value or error conditions, but the operation is straightforward.
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 provides clear parameter meanings. The description adds little beyond restating the URL method, warranting a 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?
Clearly states the verb 'attach', the resource 'file to a Moxie record', and the method 'by providing a URL'. Distinguishes from sibling tools, none of which perform file attachment.
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 when not to use it. Lacks context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_clientC
Create a new client in Moxie CRM
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City | |
| name | Yes | Business name of the client | |
| color | No | Client color designation | |
| notes | No | General notes about the client | |
| phone | No | Phone number | |
| taxId | No | Tax identification number | |
| postal | No | Postal/ZIP code | |
| archive | No | Archive the client | |
| country | No | Country | |
| website | No | Website URL | |
| address1 | No | Street address line 1 | |
| address2 | No | Street address line 2 | |
| currency | Yes | ISO 4217 currency code (e.g., USD, EUR, GBP) | |
| initials | No | 3-4 character initials for avatar and invoice sequences | |
| locality | No | State/Province/Region | |
| clientType | Yes | Type of client record | |
| leadSource | No | Lead source tracking | |
| paymentDays | No | Payment terms in days | |
| hourlyAmount | No | Default hourly rate | |
| latePaymentFee | No | Late payment fee amount | |
| payInstructions | No | Payment instructions text | |
| whoPaysCardFees | No | Who pays Stripe credit card fees | |
| roundingIncrement | No | Rounding increment for invoices |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description contains no behavioral details such as side effects, permissions required, or error handling. The agent has no insight into what happens when the tool is invoked beyond the creation 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 a single efficient sentence that immediately conveys the core purpose. While it could include more context, it is not overly verbose and front-loads 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?
Given the complexity (23 parameters, no output schema, no annotations), the description is too sparse. It does not explain parameter relationships, constraints, or typical use cases, leaving the agent underinformed 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%, so the schema already documents all 23 parameters. The description adds no additional meaning beyond the 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?
Description clearly states it creates a new client in Moxie CRM, with a specific verb and resource, distinguishing it from sibling tools like list_clients or search_clients.
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., search_clients to find existing clients, or create_contact for non-client contacts). 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.
create_contactB
Create a new contact record and optionally associate with a client
| Name | Required | Description | Default |
|---|---|---|---|
| last | No | Contact's last name | |
| role | No | Contact's role/title | |
| No | Email address | ||
| first | No | Contact's first name | |
| notes | No | Notes about the contact | |
| phone | No | Phone number | |
| clientName | No | Exact name of an existing client to associate this contact with | |
| portalAccess | No | Grant client portal access | |
| defaultContact | No | Set as default contact (receives all notifications) | |
| invoiceContact | No | Set as invoice contact (receives invoice notifications) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
States mutation (create) but lacks disclosure of side effects (e.g., portal access grants, notification implications), permissions, reversibility, or default behaviors for boolean flags. No annotations to compensate.
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 of 13 words, no wasted words, front-loaded with key action and resource.
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, and complex tool with 10 parameters, boolean flags, and optional associations. Description fails to explain return value, validation rules (e.g., existing client check), or follow-up 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?
Schema covers all 10 parameters with descriptions (100% coverage). Description adds only the optional client association, but no additional meaning beyond schema. Baseline 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?
Clearly states the verb 'create' and resource 'contact record', with optional client association. Distinguishes from sibling tools like 'create_client' (creates a client) and 'search_contacts' (search, not create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for creating contacts, but no explicit guidelines on when to use vs alternatives, prerequisites (e.g., client must exist for association), or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_expenseB
Create a new expense record in Moxie
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Expense date in ISO-8601 format (e.g., 2023-07-20T00:00:00.000+00:00) | |
| paid | No | Whether the expense has been paid or is due in the future | |
| notes | No | Additional notes about the expense | |
| amount | Yes | Expense amount | |
| billNo | No | Bill/reference number | |
| vendor | No | Exact match of a Vendor record name in Moxie | |
| category | No | Expense category | |
| currency | No | ISO 4217 currency code (e.g., USD, EUR). Defaults to workspace currency | |
| clientName | No | Exact match of a client record name to allocate this expense to | |
| description | Yes | Description of the expense | |
| reimbursable | No | Whether the expense is eligible for reimbursement through invoicing | |
| markupPercentage | No | Markup percentage for reimbursable expenses when applied to invoice |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavioral traits. It only states the creation action without mentioning side effects, permissions, or constraints (e.g., duplicate handling, billing 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?
Single sentence, clear and concise. No unnecessary words, though more detail could be added 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?
Despite 12 parameters and no output schema, the description provides minimal context. No information about return value, error handling, or operational effects, 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?
Schema coverage is 100%, so the baseline is 3. The description does not add additional meaning beyond the parameter descriptions 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 'Create a new expense record in Moxie' clearly identifies the action (create) and resource (expense record). It distinguishes from sibling tools as no other tool targets expenses.
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 exclusions. The description only states the basic function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_form_submissionB
Create a new form submission with lead information and custom answers. Can optionally create a pipeline opportunity by providing pipelineStageName.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City | |
| role | No | Lead's role/title | |
| No | Lead's email address | ||
| notes | No | General notes about the submission | |
| phone | No | Lead's phone number | |
| postal | No | Postal/ZIP code | |
| answers | No | Array of structured question/answer objects for custom form fields | |
| country | No | Country | |
| website | No | Lead's website URL | |
| address1 | No | Street address line 1 | |
| address2 | No | Street address line 2 | |
| formName | No | Associate the submission with an existing form template for reporting purposes | |
| lastName | No | Lead's last name | |
| locality | No | State/Province/Region | |
| firstName | No | Lead's first name | |
| sourceUrl | No | Source URL where the form was submitted | |
| leadSource | No | Lead source tracking | |
| businessName | No | Lead's business/company name | |
| pipelineStageName | No | If provided, automatically creates an Opportunity in your pipeline. Must match exactly one of your pipeline stage names |
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 discloses the optional side effect of creating a pipeline opportunity, but omits other important behavior: whether it requires an existing form template (formName), any validation rules for pipelineStageName matching, or what the response looks like. The tool mutates data, but safety, permission requirements, and failure behaviors are not addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no redundancy. It front-loads the primary action ('Create a new form submission') and immediately communicates the optional behavior. Every word earns its place, making it appropriately sized 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?
Despite having 19 parameters and no output schema, the description is minimal. It does not mention return values, error scenarios, or how the tool integrates with related entities like form templates or lead records. The description leaves significant gaps about expected behavior and outcomes, which is insufficient for a tool with this many inputs and side effects.
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 groups parameters as 'lead information and custom answers' and highlights pipelineStageName as the trigger for opportunity creation, but the schema already explicitly explains pipelineStageName's behavior. The description adds minimal semantic value beyond what the schema provides; it simply aggregates concepts rather than deepening 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 clearly states the tool's action: 'Create a new form submission with lead information and custom answers.' This specifies a distinct verb+resource (creating a form submission) and differentiates it from sibling tools like create_opportunity or create_contact, which serve different purposes. The optional pipeline opportunity behavior adds clarity without confusing the primary purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you need to create a form submission with lead data and custom answers, use this tool. It also mentions the conditional use of creating a pipeline opportunity via pipelineStageName. However, it does not explicitly state when not to use this tool or compare it to alternatives such as create_opportunity for standalone pipeline creation. Guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_invoiceA
Create a new invoice in Moxie CRM. If sendTo is not provided, the invoice will be created as a draft.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Array of invoice line items | |
| dueDate | No | Payment due date (YYYY-MM-DD format) | |
| taxRate | No | Tax rate as decimal (e.g., 0.08 for 8%) | |
| clientName | Yes | Exact name of the client (must match existing client record) | |
| sendInvoice | No | Set to true to send the invoice immediately upon creation | |
| templateName | No | Invoice template name (must match existing template) | |
| invoiceNumber | No | Invoice number/identifier | |
| sendToContacts | No | Email addresses to send the invoice to | |
| discountPercent | No | Discount percentage as decimal | |
| emailTemplateName | No | Email template name for sending the invoice | |
| paymentInstructions | No | Payment instructions text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It does disclose a key behavior: the invoice is created as a draft if sendTo is absent. However, it omits other important behaviors such as validation of client/template names, sending side-effects, or the structure of the response. The single disclosed behavior adds some value but is incomplete.
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-loaded with the primary action and immediately followed by a conditional behavior. No redundant words or unnecessary 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 tool has 11 parameters, 2 required, and no output schema. The description is too sparse to provide a complete operational picture. It only mentions the draft behavior, leaving out the overall flow, prerequisites, expected return, and interactions with other entities like templates or existing clients. Given the complexity, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, giving a baseline of 3. The description does not add any parameter meaning beyond the schema and, in fact, introduces 'sendTo' which is not a parameter in the input schema (the schema has 'sendToContacts' and 'sendInvoice'). This inconsistency could confuse an agent and reduces the description's 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 'Create a new invoice in Moxie CRM', which is a specific verb + resource. It uniquely identifies the tool's function and is distinct from sibling tools like search_payable_invoices. The draft condition adds useful scoping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one implicit usage guideline: if sendTo is not provided, the invoice becomes a draft. However, it does not mention alternative tools, prerequisites like client existence, or when to choose this over other invoice-related tools. It provides minimal contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_opportunityB
Create a new sales opportunity in the pipeline
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name/title of the opportunity | |
| toDos | No | To-do items for this opportunity | |
| value | No | Estimated value of the opportunity | |
| leadInfo | No | Lead contact information and custom answers | |
| stageName | No | Pipeline stage name (use list_pipeline_stages to see available stages) | |
| clientName | No | Exact match of a client name in the CRM | |
| description | No | Description of the opportunity | |
| customValues | No | Map of custom field values. Keys must match pipeline custom fields exactly | |
| estCloseDate | No | Expected close date (YYYY-MM-DD format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behaviors. It only states creation but omits side effects (e.g., pipeline stage updates, required permissions, return value).
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 wasted words. Could benefit from slight expansion (e.g., 'returns the new opportunity ID'), but remains 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?
9 parameters, nested objects, no output schema. The one-line description fails to cover creation behavior, prerequisites, or post-creation state. Incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds no extra meaning beyond the schema. Baseline of 3 is appropriate; no additional semantics 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 verb 'Create' and the resource 'new sales opportunity in the pipeline', distinguishing it from sibling tools like create_client or create_project.
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., create_project). The description offers no context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_calendar_eventA
Create or update a calendar event in the Moxie Homebase calendar. Use eventId to update an existing event.
| Name | Required | Description | Default |
|---|---|---|---|
| busy | No | Whether the event blocks scheduling (default true) | |
| endTime | Yes | End time in ISO format without timezone (e.g., 2024-07-06T08:30:00) | |
| eventId | No | ICS Calendar Event ID for updating existing events | |
| summary | Yes | Title/summary of the event | |
| location | No | Physical or online location | |
| timezone | Yes | ISO timezone value (e.g., America/New_York, Europe/London) | |
| startTime | Yes | Start time in ISO format without timezone (e.g., 2024-07-06T08:00:00) | |
| userEmail | No | Email of the event owner. Defaults to workspace owner if not provided | |
| description | No | Long description of the event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. It fails to mention idempotency, permission requirements, merge behavior, error handling, or side effects. The minimal statement 'create or update' lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Front-loaded with purpose, followed by specific usage guidance. Excellent 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?
With 9 parameters and no output schema, the description is too brief. It does not explain return values, partial updates, or edge cases like non-existent eventId. More detail is needed for safe agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline 3. The description adds no new information beyond what the schema already provides for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates or updates a calendar event in the Moxie Homebase calendar, with explicit guidance on using eventId for updates. It distinguishes from siblings like delete_calendar_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use eventId for updating vs creating, providing clear usage context. However, it lacks guidance on when not to use this tool or mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectC
Create a new project in Moxie CRM
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the project | |
| amount | No | Fee amount | |
| dueDate | No | Project due date (YYYY-MM-DD format) | |
| feeType | No | Fee schedule type | |
| hexColor | No | Project display color | |
| startDate | No | Project start date (YYYY-MM-DD format) | |
| clientName | Yes | Exact name of the client to associate this project with | |
| description | No | Project description | |
| portalAccess | No | Client portal access level (None, Overview, Full access, Read only) | |
| templateName | No | Project template name to use (creates settings + tasks from template) | |
| showTimeWorkedInPortal | No | Whether time worked is visible in client portal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description should disclose behavioral traits such as required permissions or side effects. It only states it creates a project, which 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 extremely concise, fitting in one sentence. However, it could be slightly expanded to include context 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?
With 11 parameters and no output schema, the description should provide more context about what 'create' entails, such as whether it returns the created project or just a confirmation. The current description is insufficient 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?
All 11 parameters are described in the schema with good detail; the description does not add additional meaning or context for any 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 uses a clear verb-resource pair ('Create a new project'), but it does not provide any differentiation from sibling tools such as update_project or 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?
The description offers no usage guidelines; it does not state when to use this tool versus alternatives or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskB
Create a new task/deliverable in a project
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the task | |
| tasks | No | Array of subtask names to create under this task | |
| status | No | Task status - must match exactly a status in your kanban if provided | |
| dueDate | No | Task due date (YYYY-MM-DD format) | |
| priority | No | Numeric priority for sorting in kanban | |
| startDate | No | Task start date (YYYY-MM-DD format) | |
| assignedTo | No | Email addresses of users in the workspace to assign this task to | |
| clientName | Yes | Exact match of a client record in your CRM | |
| description | No | Task description | |
| projectName | Yes | Exact name of the project owned by the client to add this task to | |
| customValues | No | Map of custom fields. Keys must match exactly the fields specified in your project settings custom fields setup |
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 states the action without covering side effects, permissions, or constraints beyond the input schema. The description adds no 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 concise sentence with no fluff. It is front-loaded and earns its place, efficiently conveying the tool's 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 complexity (11 parameters, no output schema, no annotations), the description is too minimal. It lacks information about return values, error handling, prerequisites, or post-creation behavior, making it incomplete for agent 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?
The input schema has 100% description coverage, so the description adds little extra meaning. The baseline is 3, and the description does not enhance understanding 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 the action 'Create' and the resource 'task/deliverable in a project', making the tool's purpose immediately obvious. It is specific and distinct from sibling tools like 'approve_deliverable' or 'create_project'.
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 are many creation tools among siblings, but no conditions or exclusions are mentioned to help the agent select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketB
Create a new support ticket in your workspace
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | Required - The initial details/comment of the ticket | |
| dueDate | No | Due date in ISO format (YYYY-MM-DD) | |
| subject | No | The ticket subject/title | |
| formData | No | Additional structured questions/answers that can be mapped to ticket data | |
| userEmail | Yes | Required - Email of a known contact in your workspace. The ticket will be rejected if the email is not found | |
| ticketType | Yes | Required - The string value of the ticket type which can be found in Tickets >> Settings |
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 only states that a ticket is created, omitting important behavior such as userEmail validation ('ticket will be rejected if the email is not found'), ticket type requirements, or what happens on success/failure. This is a significant transparency gap for a creation 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. While it is minimal, conciseness is a strength here; the lack of detail does not inflate the score but the structure is 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?
For a tool with six parameters, a nested object, and no output schema, the one-sentence description provides very little beyond the schema itself. It does not explain required inputs, rejection behavior, or the tool's relationship to related sibling tools, leaving the description incomplete for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already thoroughly documents all six parameters including required fields and nested formData. The description adds no parameter-level meaning beyond what the schema provides, 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 'Create a new support ticket in your workspace' uses a specific verb and resource, clearly distinguishing this tool from siblings like create_ticket_comment and create_form_submission. The workspace scoping adds context without 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 is provided about when to use this tool versus alternatives such as create_ticket_comment or how to handle prerequisites like using a known contact email. The description does not mention exclusions or scenarios 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.
create_ticket_commentC
Add a comment to an existing ticket
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | The comment text to add | |
| userEmail | Yes | Email of a known contact or team member in your workspace | |
| ticketNumber | Yes | The numeric identifier of the ticket to comment on | |
| privateComment | Yes | Whether the comment is private (ignored if userEmail is a client contact) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only says 'Add a comment', omitting behavioral details like mutation effects, required permissions, or that privateComment flag behavior is conditional.
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 short (5 words), but fails to convey critical information. Overly terse rather than concise; not front-loaded effectively for agent use.
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 required parameters, no output schema, and no annotations, the description is insufficient. It does not explain return behavior or the effect of privateComment, 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?
Schema coverage is 100% with parameter descriptions. The description adds no extra meaning beyond what the schema already provides, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add' and resource 'comment to an existing ticket', distinguishing it from sibling tool create_ticket which creates a new ticket. However, it could be more specific about public/private distinction.
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 the tool, prerequisites (e.g., ticket must exist), or context compared to alternatives. The description lacks any usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_time_entryA
Create a time entry to track work. Can optionally auto-create client, project, or deliverable if they don't exist.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes about the time entry | |
| timerEnd | Yes | End time in ISO-8601 format (must be after start time) | |
| userEmail | Yes | Email of the workspace user who owns this time entry | |
| clientName | No | Exact name of the client | |
| timerStart | Yes | Start time in ISO-8601 format (e.g., 2024-01-15T09:00:00Z) | |
| projectName | No | Exact name of the project | |
| createClient | No | Auto-create client if not found | |
| createProject | No | Auto-create project if not found | |
| deliverableName | No | Exact name of the task/deliverable | |
| createDeliverable | No | Auto-create task/deliverable if not found |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It notes the optional auto-creation of related entities, which is helpful. However, it does not disclose failure modes (e.g., behavior when required entities don't exist and auto-create flags are false), permission requirements, or reversibility. Disclosure is partial but non-trivial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise, front-loaded sentences. The first states the primary action, and the second adds an important optional behavior. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters and no output schema or annotations, the description is thin. It omits return value details, error handling, and broader operational context beyond the auto-create feature. Essential information like required parameters and success/failure behavior is left to the schema, which doesn't cover runtime 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?
All 10 parameters have descriptions in the schema, so the baseline is 3. The description adds a high-level summary of auto-create behavior but no new parameter-level details 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 the tool's function ('Create a time entry to track work') and highlights a distinguishing capability (optional auto-creation of client/project/deliverable). This is specific and sets it apart from sibling create tools like create_client or create_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to track work' implies a usage context, but the description does not specify when to choose this tool over alternatives or mention prerequisites, exclusions, or when not to use it. No alternative tool references are provided, leaving guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_calendar_eventA
Delete a calendar event by its event ID
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | ID of the event to delete (the eventId used in createOrUpdate) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states deletion but does not disclose behavioral traits like irreversibility, side effects, or auth requirements. Adequate for a simple delete but could be more explicit about permanence.
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 action and resource, no extraneous words. Perfectly sized for the simple 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 tool with one parameter, no output schema, and no annotations, the description is complete. It tells the agent what it does and how to call it, with the helpful reference to the create/update 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 has 100% coverage for the only parameter, but the description adds value by referencing 'the eventId used in createOrUpdate', linking to the sibling tool and clarifying the ID source.
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 verb 'Delete' and resource 'calendar event', with specific identifier 'by its event ID'. Distinguishes from sibling tools which are 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?
Clear context: you have an event ID and want to delete that event. No explicit exclusions or alternatives, but the purpose is straightforward and no sibling tools compete for the same action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clientsA
List all clients in your Moxie workspace
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. The word 'List' indicates a read operation, which is clear. However, the description does not disclose any additional behavioral traits such as pagination, ordering, or response structure. For a simple list tool, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb and object. Every word earns its place, with no superfluous 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 tool's simplicity (no parameters, no output schema), the description provides sufficient context: it names the action and the exact scope. It could optionally mention the return format, but for a basic list operation, the description is complete enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description adds nothing about parameters because there are none, which is appropriate. The schema coverage is 100% vacuously, so no compensation 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?
The description clearly states the action ('List'), the resource ('all clients'), and the scope ('in your Moxie workspace'). This directly distinguishes it from sibling tools like search_clients, which implies filtering, and create_client, 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?
The description implies usage for retrieving the full client list with no filtering, but it does not explicitly mention alternatives or exclusions. The presence of sibling search_clients suggests a filtered alternative, but no explicit guidance is given on when to use one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_email_templatesA
List all email templates in your workspace
| 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 the core action and does not disclose response format, pagination, permissions, or any caveats (e.g., whether archived templates 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 a single, concise sentence that front-loads the purpose without any filler or redundant 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 zero-parameter, read-only list tool, the description is sufficient for an agent to select and invoke it correctly. It clearly indicates the resource and scope. However, the lack of output schema and any returned field details is a minor gap, preventing a 5.
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 description coverage is 100%. Per the rubric, 0 params sets a baseline of 4; the description correctly omits parameter details because there are none to explain.
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 ('email templates'), with scope ('in your workspace'). This distinguishes it from sibling tools like list_invoice_templates 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?
The description implies usage by naming the resource, but it does not explicitly mention when to use this tool versus alternatives like list_invoice_templates or search_payable_invoices. There is no when-not or alternative guidance, so it stays at implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_namesA
List all available form names in your workspace
| 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 must carry the full burden. It adds the scope 'in your workspace' but otherwise simply restates the core action already implied by the name. It does not disclose response format, pagination, or any operational constraints, which is a gap given 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 a single, concise sentence that front-loads the verb and resource. Every word adds value, and there is no redundancy or fluff.
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 zero-parameter list-only tool with no output schema, the description provides adequate context by stating what is listed and the scope. It doesn't mention return format, but that is not essential for such a simple operation. It feels complete for its complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers parameter semantics. The description adds no parameter information, which is appropriate since there is nothing to explain. Baseline for 0-parameter tools 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 tool's action ('List') and resource ('available form names'), and scopes it to the workspace. It distinguishes itself from sibling list tools like list_vendor_names and list_pipeline_stages by specifying the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use when you need form names. However, there is no explicit guidance on when to choose this over other list tools, nor any mention of exclusions or prerequisites. The context signals show it's the only form-name listing tool, but the description doesn't highlight that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invoice_templatesA
List all invoice templates in your workspace
| 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 explicitly states that all invoice templates are listed and scoped to the workspace, but does not mention pagination, return format, or whether hidden/archived templates are included. This is adequate for a simple list operation but lacks deeper behavioral 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 a single, front-loaded sentence with no extraneous words. It efficiently conveys the essential action and scope.
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 (no parameters, no annotations, no output schema), the description covers the core operation but omits details about the return payload, such as whether template names, IDs, or other fields are included. It is not misleading, but it leaves some gaps for a fully self-contained description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, making the input schema fully covered. There is nothing for the description to add about parameters, so baseline 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?
The description clearly states the tool lists all invoice templates in the workspace. The verb 'List' is specific and the resource 'invoice templates' is unambiguous, distinguishing it from sibling tools like list_email_templates.
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 list_email_templates or search_payable_invoices. It does not mention any exclusions or contextual prerequisites, 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.
list_pipeline_stagesA
List all pipeline stages for opportunities in your workspace
| 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 burden of disclosing behavior. It indicates a read-only list operation, but provides no additional context about pagination, ordering, or whether all stages include archived ones. The simple phrasing is adequate but not informative 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 one short, front-loaded sentence with no wasted words. It fully states the tool's purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool, the description is sufficient to convey the basic action and scope. There is no output schema to explain return values, but the mention of 'pipeline stages' implies the returned data. Slightly more detail on what constitutes a pipeline stage could improve completeness, but it is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters and 100% coverage, so the description need not explain parameters. Per the rubric, zero params warrants a baseline of 4, and the description offers no contradictory or supplementary parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with the resource 'pipeline stages' and provides scope ('for opportunities in your workspace'). It clearly distinguishes from siblings like list_project_task_stages, which target project tasks rather than opportunity pipelines.
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. It lacks any mention of when-not-to-use or explicit comparisons to sibling tools such as list_project_task_stages, leaving the agent to infer context solely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_task_stagesA
List all available project task stages in your workspace
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 accurately indicates a read-only operation ('List') and 'all available' suggests comprehensive retrieval without filters. There are no hidden side effects mentioned, but for a zero-parameter list tool, the behavior is straightforward and effectively conveyed.
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 immediately states the action ('List') and the object ('all available project task stages'), making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with zero parameters, no annotations, and no output schema, the description provides sufficient context. It clearly indicates the resource type and scope, and there is no additional complexity that would require further explanation. The description fully covers the tool's purpose and 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, and the schema is empty. According to the guidelines, 0 params warrants a baseline of 4. The description adds no parameter information, but none is needed since there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List all available project task stages in your workspace'. It uses a specific verb ('List') and resource ('project task stages'), and the scope ('in your workspace') is clear. It also distinguishes from sibling tools like list_pipeline_stages by specifying 'project task stages'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by describing what it does, but it does not explicitly state when to use this tool versus alternatives. While it is clear that this tool lists project task stages, there is no mention of exclusions or alternative tools. For a simple list tool, this is adequate but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vendor_namesA
List all vendor names for expense tracking
| 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 burden of behavioral disclosure. It clearly states the read-only nature ('List') and the resource scope ('all vendor names'), but lacks details about output format, error conditions, or any limitations beyond the name. This is adequate for a simple list operation but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of seven words, front-loaded with the action and resource. Every word earns its place, and there is no superfluous 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 tool's simplicity (no params, no output schema, no siblings with overlapping names), the description is sufficiently complete for an agent to understand the tool's purpose and expected result. It lacks explicit mention of return shape, but 'list all vendor names' strongly implies a list of names.
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, and schema coverage is trivially 100%. The description does not need to explain parameters, and per the rubric, the baseline for 0 params is 4. No additional semantics are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('vendor names'), and adds context ('for expense tracking'). This clearly distinguishes it from sibling list tools like list_clients and list_form_names.
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 any exclusions, prerequisites, or cases where another tool would be more appropriate, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspace_usersA
List all users in your Moxie workspace
| 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 the description alone must convey behavioral traits. 'List' implies a read-only operation, but the description does not disclose output format, pagination, or any side effects. It adds minimal information 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?
A single, front-loaded sentence with no filler. Every word contributes to the intended meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the zero-parameter, simple list-all nature of the tool, the description covers its core purpose. It lacks return-shape details, but for a trivial enumeration tool this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline is 4. The description is consistent with the schema and implies that no inputs are needed, which is sufficient for this tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'List' plus the resource 'users' and scope 'your Moxie workspace' clearly state the tool's function. It is distinct from sibling tools that target other resources (e.g., clients, projects, stages).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need all workspace users, and no sibling tool covers users, so alternatives are implicitly excluded. However, there is no explicit 'when to use' or 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moxie_health_checkA
Check if the Moxie MCP server is properly configured and can connect to the Moxie API
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read-only check operation (idempotent, no side effects). With no annotations provided, the description carries the full burden. It does not disclose potential failure modes, authentication requirements, or what constitutes a successful connection check. It 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, front-loaded sentence that efficiently conveys the tool's purpose without any redundant or verbose language. 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?
Given the tool's simplicity (no parameters, no output schema), the description is nearly complete. It explains the tool's basic function but could be improved by mentioning the expected return value (e.g., success/failure message).
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 no parameters, so schema coverage is 100% trivially. The description does not add parameter information beyond the schema. With zero parameters, a baseline score of 4 is appropriate, as no extra parameter semantics are 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?
The description clearly states the tool's purpose: checking if the Moxie MCP server is properly configured and can connect to the Moxie API. The verb 'check' and the specific resource 'Moxie MCP server configuration and API connectivity' differentiate it from sibling tools that perform actions on clients, projects, invoices, 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 does not explicitly state when to use this tool versus alternatives. However, given that it is a health check, usage is implied for verifying server status before other operations. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_clientsA
Search for clients by name or contact information
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to find clients by name or contact info |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. The verb 'search' implies a read-only operation, and the criteria are stated, but it does not disclose return format, pagination, or case sensitivity. For a simple search tool, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that contains no filler. Every word contributes to understanding the tool's purpose and search scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter search tool with no output schema, the description is largely complete: it states the target resource and the type of query. A minor gap is not explicitly stating what is returned (e.g., a list of matching clients), but the simplicity of the tool makes this acceptable.
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%, and the tool description's 'by name or contact information' merely echoes the parameter description in the schema. The description adds no extra 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 uses a specific verb ('Search'), names the resource ('clients'), and specifies the search criteria ('by name or contact information'). This clearly distinguishes it from siblings like list_clients (which returns all clients) and search_contacts (which searches a different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when you need to find clients by name or contact info—but does not explicitly mention alternatives or exclusions. It does not reference sibling tools like list_clients or search_contacts, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contactsB
Search for contacts in your Moxie workspace
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query to find contacts by first, last, or email |
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 'Search for contacts' without disclosing behavior such as return format, pagination, or handling of empty queries.
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 appropriately sized for the tool's simplicity.
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 one parameter and no output schema, the description adequately states the purpose but does not mention what the result looks like (e.g., list of contacts). There is room for improvement.
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% and already documents the query parameter. The description adds no additional 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 verb 'Search' and the resource 'contacts' with workspace context. It is distinct from sibling tools like search_clients or list_clients, though it does not 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 like create_contact or list_clients. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_payable_invoicesB
Search for payable invoices in your Moxie workspace
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query to filter invoices |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. 'Search' implies a read-only operation, but the description does not explicitly state whether it is non-destructive, what the return format is, or whether any side effects occur. The minimal description adds little 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 concise sentence that front-loads the action and resource. Every word earns its place, with no redundancy or irrelevant 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?
For a simple tool with one optional parameter and no output schema, the description is minimally viable but not rich. It does not indicate what the response looks like (e.g., a list of invoices), nor the behavior when query is omitted. Given the low complexity, this is adequate but could be more informative.
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 for the single 'query' parameter with a description ('Search query to filter invoices'), so the schema carries the semantic burden. The description itself adds no parameter information, which is acceptable given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb 'search' and the resource 'payable invoices' in the Moxie workspace, distinguishing it from sibling tools like search_clients and search_projects. However, it does not explain what distinguishes 'payable invoices' from other invoice-related concepts, leaving slight 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?
There is no guidance on when to use this tool versus other search tools, nor any mention of exclusions or alternative approaches. The description simply states the action without contextualizing it within the broader toolset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_projectsA
Search for projects in your Moxie workspace, optionally filtered by client name
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query to filter projects by client name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that the search is scoped to the workspace and that the query is an optional client-name filter, but does not specify default behavior (e.g., empty query returns all projects), return format, or any side effects (though search implies read-only). The disclosed filter behavior adds some transparency but significant behavioral details remain implicit.
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, 10 words, front-loads the core action and scopes the search. No wasted words or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with one optional parameter and no output schema, the description provides adequate context about what it searches and its filter capability. However, it could optionally state that no query returns all projects or hint at the response format, but these omissions are not critical 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?
The input schema has 100% coverage with the description of 'query' explicitly stating it filters by client name. The tool description adds the 'optionally' nuance and workspace context, but does not introduce new parameter semantics beyond the schema. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and resource ('projects'), and clarifies the workspace scope ('Moxie workspace') and the optional filter by client name. This distinguishes it from sibling search tools like search_clients and search_contacts, which target 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?
The description implies the tool's role (find projects, optionally narrowed by client name) but does not explicitly mention when to prefer it over alternatives or when not to use it. It provides clear context for a typical search use case, but lacks explicit exclusions or comparisons to sibling tools like list_clients.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectC
Update an existing project in Moxie CRM
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New project name | |
| active | No | Whether the project is active | |
| amount | No | Fee amount | |
| dueDate | No | New due date (YYYY-MM-DD format) | |
| feeType | No | Fee schedule type | |
| hexColor | No | New project display color | |
| projectId | No | ID of the project to update | |
| startDate | No | New start date (YYYY-MM-DD format) | |
| clientName | No | Client name (required if using projectName) | |
| description | No | New project description | |
| projectName | No | Name of the project to update (alternative to projectId) | |
| portalAccess | No | New client portal access level |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full responsibility. It only states 'Update an existing project', implying mutation, but does not disclose partial vs full update behavior, required fields, side effects, or permissions. This is insufficient for a mutation tool with 12 parameters.
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 extraneous information, but it is too minimal for a tool with 12 parameters. 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 the large number of parameters (12) and lack of output schema or annotations, the description is far too brief. It does not explain how the update works (e.g., partial vs full, required relationships between parameters) or what the response looks like.
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 each parameter having a description in the JSON schema. The tool description adds no additional parameter-level meaning beyond what the schema already provides, warranting 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 verb 'Update' and the resource 'existing project in Moxie CRM', distinguishing it from sibling tools like create_project and search_projects. However, it is very brief and could be more specific about which fields are updatable.
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 such as create_project, search_projects, or other update tools. The description does not mention any prerequisites or context for using the update functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
30 tool updates
v2.0.0- First observed
apply_payment - First observed
approve_deliverable - First observed
attach_file_from_url - First observed
create_client - First observed
create_contact - First observed
create_expense - First observed
create_form_submission - First observed
create_invoice - First observed
create_opportunity - First observed
create_or_update_calendar_event - First observed
create_project - First observed
create_task - First observed
create_ticket - First observed
create_ticket_comment - First observed
create_time_entry - First observed
delete_calendar_event - First observed
list_clients - First observed
list_email_templates - First observed
list_form_names - First observed
list_invoice_templates - First observed
list_pipeline_stages - First observed
list_project_task_stages - First observed
list_vendor_names - First observed
list_workspace_users - First observed
moxie_health_check - First observed
search_clients - First observed
search_contacts - First observed
search_payable_invoices - First observed
search_projects - First observed
update_project
TDQS
Scored across 30 tools
Each tool targets a distinct action on a specific entity (e.g., clients vs. contacts, creation vs. listing). Even related tools like list_clients and search_clients have clear differences in scope.
All tool names follow a consistent verb_noun pattern in snake_case, with occasional compound verbs (e.g., create_or_update_calendar_event) but no mixing of conventions.
30 tools cover a broad domain (CRM, projects, invoicing, support, calendar, forms) and mostly justify their count, though some could be consolidated (e.g., list_clients and search_clients).
Many entities lack update/delete operations (e.g., clients, contacts, tasks). Read operations are limited (no get single client or task). Gaps may cause agent failures for typical workflows.
Maintenance
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server for the Nimble CRM API, enabling management of contacts, deals, notes, tasks, and tags through natural language.MIT
- AlicenseBqualityDmaintenanceAn MCP server that enables LLMs to interact with Moxie CRM. Provides comprehensive tools for managing clients, contacts, projects, invoices, time tracking, and more.3042MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server for controlling the TimeLiner project management system, enabling AI clients to manage projects, tasks, members, and more via natural language.-
- AlicenseNot gradedqualityDmaintenanceAn MCP server for time tracking and billing that allows freelancers to control timers, manage projects, and export invoices via natural language in any MCP-compatible AI assistant.4MIT