Moxie CRM MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Moxie CRM MCP ServerList all 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 CRM MCP Server
An MCP (Model Context Protocol) server that enables LLMs to interact with Moxie CRM. Provides comprehensive tools for managing clients, contacts, projects, invoices, time tracking, and more.
Features
Client Management: List, search, and create clients with full contact information
Contact Management: Search and create contacts associated with clients
Project Management: Search projects, create/update projects, and manage task stages
Task Management: Create tasks with subtasks, custom fields, and multi-assignee support
Invoice Operations: Search invoices, create new invoices, and apply payments
Time Tracking: Create time entries with optional auto-creation of clients/projects
Expense Tracking: Record and categorize business expenses
Sales Pipeline: Create opportunities and manage pipeline stages
Support Tickets: Create tickets with structured form data and add comments
Calendar Events: Create, update, and delete calendar events
Form Submissions: Submit lead capture forms with pipeline opportunity creation
File Attachments: Attach files from URLs to various entities
Templates: Access email and invoice templates, vendor names, and workspace users
Related MCP server: moxie-mcp
Quick Start
Clone and Build
git clone https://github.com/flyingwebie/withmoxie-mcp-server.git
cd withmoxie-mcp-server
npm install
npm run buildGet Your API Key
Log into your Moxie account
Navigate to Workspace Settings → Connected Apps → Integrations
Click Enable Custom Integration
Copy your API Key and Base Endpoint URL
IDE Integration Guides
Claude Code
Add to ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"moxie": {
"command": "npx",
"args": ["-y", "withmoxie-mcp-server"],
"env": {
"MOXIE_BASE_URL": "https://pod01.withmoxie.com/api/public",
"MOXIE_API_KEY": "your_api_key_here"
}
}
}
}Claude Desktop
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"moxie": {
"command": "npx",
"args": ["-y", "withmoxie-mcp-server"],
"env": {
"MOXIE_BASE_URL": "https://pod01.withmoxie.com/api/public",
"MOXIE_API_KEY": "your_api_key_here"
}
}
}
}Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"moxie": {
"command": "npx",
"args": ["-y", "withmoxie-mcp-server"],
"env": {
"MOXIE_BASE_URL": "https://pod01.withmoxie.com/api/public",
"MOXIE_API_KEY": "your_api_key_here"
}
}
}
}VS Code with Cline Extension
Add to your VS Code settings.json:
{
"cline.mcpServers": {
"moxie": {
"command": "npx",
"args": ["-y", "withmoxie-mcp-server"],
"env": {
"MOXIE_BASE_URL": "https://pod01.withmoxie.com/api/public",
"MOXIE_API_KEY": "your_api_key_here"
}
}
}
}Windsurf
Add to your Windsurf MCP configuration:
{
"mcpServers": {
"moxie": {
"command": "npx",
"args": ["-y", "withmoxie-mcp-server"],
"env": {
"MOXIE_BASE_URL": "https://pod01.withmoxie.com/api/public",
"MOXIE_API_KEY": "your_api_key_here"
}
}
}
}MCP Inspector (Testing)
MOXIE_API_KEY=your_key MOXIE_BASE_URL=https://pod01.withmoxie.com/api/public npx @modelcontextprotocol/inspector npx -y withmoxie-mcp-serverExample Prompts
Once configured, you can use natural language to interact with Moxie:
Managing Clients
"List all my clients"
"Search for clients named 'Acme'"
"Create a new client called 'Tech Startup Inc' with USD currency"
Managing Contacts
"Search for contacts with email containing 'john'"
"Add a new contact Jane Smith to the client 'Acme Corp'"
Project Operations
"Show me all projects for client 'Web Agency'"
"Create a new project called 'Website Redesign' for client 'Tech Startup Inc'"
"What are the available task stages?"
Invoice Management
"Search for unpaid invoices"
"Create an invoice for 'Acme Corp' with a line item for 10 hours of consulting at $150/hour"
"Apply a payment of $500 to invoice ID abc123"
Time Tracking
"Log 2 hours of work from 9am to 11am today for project 'Website Redesign' for user john@company.com"
"Create a time entry for client 'Acme Corp' and auto-create the project if it doesn't exist"
Expense Tracking
"Record a $50 expense for 'Office Supplies' from today"
"Create a billable expense for client 'Tech Startup Inc' for $200 software subscription"
Sales Pipeline
"List all pipeline stages"
"Create a new opportunity called 'Enterprise Deal' worth $50,000"
Task Management
"Create a task called 'Design Homepage' in project 'Website Redesign' for client 'Acme Corp' with subtasks 'Header', 'Footer', 'Hero Section'"
Support Tickets
"Create a support ticket for contact john@acme.com with ticket type 'Support Request' and comment 'Login page is broken'"
"Add a comment to ticket ID xyz789"
Calendar Events
"Create a meeting titled 'Project Kickoff' tomorrow from 2pm to 3pm"
"Update the calendar event to change the location to 'Conference Room A'"
Templates and Settings
"List all email templates"
"Show me the invoice templates available"
"Who are the users in my workspace?"
Available Tools
Client Tools (3)
Tool | Description |
| List all clients in your Moxie workspace |
| Search for clients by name or contact information |
| Create a new client with contacts and payment terms |
Contact Tools (2)
Tool | Description |
| Search for contacts by name, email, or phone |
| Create a new contact associated with a client |
Project Tools (4)
Tool | Description |
| Search projects, optionally filtered by client |
| Create a new project for a client |
| Update an existing project's details |
| List all available task stages |
Invoice Tools (3)
Tool | Description |
| Search for invoices in your workspace |
| Create a new invoice with line items |
| Apply a payment to an existing invoice |
Task Tools (1)
Tool | Description |
| Create a task with subtasks, multi-assignee, custom fields, and numeric priority |
Time Entry Tools (1)
Tool | Description |
| Create a time entry with optional auto-creation |
Expense Tools (1)
Tool | Description |
| Create a new expense record |
Opportunity Tools (2)
Tool | Description |
| List all pipeline stages for opportunities |
| Create a new sales opportunity |
Ticket Tools (2)
Tool | Description |
| Create a ticket (requires contact email, ticket type, and comment) |
| Add a comment to an existing ticket |
Form Tools (2)
Tool | Description |
| List all available forms |
| Submit a lead capture form with optional pipeline opportunity creation |
File Tools (1)
Tool | Description |
| Attach a file from a URL to a Moxie record |
Calendar Tools (3)
Tool | Description |
| Create a new calendar event |
| Update an existing calendar event |
| Delete a calendar event |
Deliverable Tools (1)
Tool | Description |
| Approve a deliverable/task in a project |
Template & Reference Tools (4)
Tool | Description |
| List all email templates |
| List all invoice templates |
| List all vendor names for expenses |
| List all users in your workspace |
Configuration
Variable | Required | Description |
| Yes | Your Moxie API key |
| Yes | Your Moxie API base URL (e.g., |
Finding Your Base URL
Your base URL depends on which Moxie pod your workspace is on. When you enable custom integration in Moxie, you'll see your specific base URL. Common formats:
https://pod01.withmoxie.com/api/publichttps://pod00.withmoxie.dev/api/public
Development
# Install dependencies
npm install
# Build
npm run build
# Development mode (watch)
npm run dev
# Test with MCP Inspector
MOXIE_API_KEY=your_key MOXIE_BASE_URL=your_url npx @modelcontextprotocol/inspector npx -y withmoxie-mcp-serverProject Structure
withmoxie-mcp-server/
├── src/
│ ├── index.ts # Server entry point
│ ├── server.ts # MCP server setup
│ ├── client/
│ │ └── moxie-client.ts # API client with auth
│ ├── types/
│ │ └── moxie.ts # TypeScript interfaces
│ └── tools/
│ ├── index.ts # Tool registration
│ ├── clients.ts # Client tools
│ ├── contacts.ts # Contact tools
│ ├── projects.ts # Project tools
│ ├── invoices.ts # Invoice tools
│ ├── tasks.ts # Task tools
│ ├── time-entries.ts # Time entry tools
│ ├── expenses.ts # Expense tools
│ ├── opportunities.ts # Opportunity tools
│ ├── tickets.ts # Ticket tools
│ ├── forms.ts # Form tools
│ ├── files.ts # File tools
│ ├── calendar.ts # Calendar tools
│ ├── deliverables.ts # Deliverable tools
│ └── templates.ts # Template tools
├── build/ # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.mdAPI Rate Limits
Moxie has a rate limit of 100 requests per 5 minutes. If exceeded, you'll receive an HTTP 429 response. The server will return a helpful error message when this occurs.
Error Handling
The server provides actionable error messages for common issues:
Code | Description | Solution |
401 | Unauthorized | Check your |
404 | Resource not found | Verify the resource exists (exact name matching required) |
429 | Rate limit exceeded | Wait and retry (100 requests per 5 minutes) |
Important Notes
Exact Name Matching: Many Moxie API endpoints require exact name matches for clients, projects, templates, ticket types, and pipeline stages. Make sure to use the exact names as they appear in Moxie.
Draft Invoices: When creating an invoice without the
sendToparameter, the invoice is created in DRAFT status.Auto-Creation: Time entries support auto-creation of clients, projects, and deliverables via boolean flags.
Tickets Require Contact Email: The
create_tickettool requiresuserEmailto be an existing contact in your workspace. The ticket will be rejected if the email is not found.Form Submissions Create Opportunities: Use
create_form_submissionwithpipelineStageNameto automatically create pipeline opportunities from lead data.Speculative Endpoints: The
create_opportunityandupdate_projecttools use endpoints that follow the Moxie API convention but may not be officially documented. Test them against your workspace.
Known Limitations
No Task/Deliverable Listing: The Moxie Public API does not expose any endpoint to list, search, or retrieve tasks (deliverables) for a project. Tasks can only be created (
create_task) and approved (approve_deliverable), but not read back via the API.Empty Deliverables in Projects: The
deliverablesarray returned bysearch_projectsis always empty by design — Moxie does not populate it in API responses.Task Data via Webhooks Only: To track task changes, use Moxie's webhook events (
DeliverableCreate,DeliverableUpdate,DeliverableDelete) which include the full task payload.
License
MIT
Available Tools
30 toolsapply_paymentB
Apply a payment to an existing invoice
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes about the payment | |
| amount | Yes | Payment amount | |
| invoiceId | Yes | ID of the invoice to apply payment to | |
| paymentDate | No | Date of payment (YYYY-MM-DD format) | |
| paymentMethod | No | Payment method (e.g., 'check', 'cash', 'bank transfer') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not explain side effects (e.g., updating invoice balance), partial payment handling, or required invoice state. This is significant for a financial mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It immediately states the action and target, earning a top score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a financial operation with 5 parameters and no output schema, the description is too minimal. It does not address payment constraints, effects on invoice status, or return behavior. More context is needed for an agent to use it safely.
Complex tools with many parameters or behaviors need more documentation. 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 concise description. The tool description adds no extra meaning beyond what the schema already provides, but the schema itself is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Apply a payment to an existing invoice' uses a specific verb and resource, making it clear what the tool does. It distinguishes the tool from siblings like create_invoice and search_payable_invoices by focusing on payments to existing invoices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is for existing invoices, but it does not explicitly state when to use it versus alternatives or provide contextual prerequisites. It offers no exclusions or sibling references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_deliverableC
Approve a deliverable/task in a project
| Name | Required | Description | Default |
|---|---|---|---|
| clientName | No | Client name for the project | |
| projectName | No | Project name containing the deliverable | |
| deliverableId | Yes | ID of the deliverable to approve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It merely restates the function name ('Approve a deliverable/task') without describing side effects, reversibility, response format, or required permissions. This is essentially a tautology and provides no additional behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, but it lacks structure and completeness. It is a single phrase that is concise but under-specifies the tool's behavior, making it less useful than a more detailed but still concise description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description fails to explain return values, errors, workflow implications, or any post-approval effects. It is not complete enough for an agent to understand the full context of using this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any meaning beyond the schema's parameter descriptions; it only mentions 'in a project' which aligns with clientName/projectName but does not clarify their role or relationship to deliverableId.
Input schemas describe structure but not intent. Descriptions should explain 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 specific action 'Approve' and the resource 'deliverable/task' within a project context. It differentiates from sibling tools like create_task or update_project because no other tool is about approving deliverables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, prerequisites, or situations where approval is needed. The description simply states the action without any contextual usage guidance.
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 |
|---|---|---|---|
| url | Yes | URL of the file to attach | |
| entityId | No | ID of the specific entity to attach to | |
| fileName | No | Name to give the attached file | |
| clientName | No | Client to attach the file to | |
| entityType | No | Type of entity to attach to (e.g., 'client', 'project', 'invoice') | |
| projectName | No | Project to attach the file to |
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 does disclose a key behavior beyond the tool name: 'The file will be downloaded and attached.' This adds context that the tool fetches the URL content. However, it does not mention permissions, error handling, whether it overwrites, or the response shape, leaving some behavioral gaps.
Agents need to know what a tool does to the 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 exceptionally concise: two short sentences that communicate the core purpose and download behavior without any fluff. It is front-loaded with the primary action and uses no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters and no output schema, yet the description provides no context on how to specify the target record (e.g., the relationship between entityId, entityType, clientName, and projectName). This leaves the agent uncertain about which parameters to use together, making the description incomplete for effective 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 all parameters are documented in the input schema. The description adds minimal parameter meaning beyond the schema, only referencing 'URL' which matches the 'url' parameter. Per the baseline, a score of 3 is appropriate when the schema already handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Attach a file to a Moxie record by providing a URL.' This specifies the verb (attach), resource (Moxie record), and method (via URL). It is specific and distinguishes the tool from all siblings, none of which deal with 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?
The description implies usage when a URL is available and a file needs to be attached, but it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. It lacks guidance on parameter combinations (e.g., which of entityId, clientName, projectName to provide), leaving usage somewhat ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_calendar_eventB
Create a new calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the event | |
| endTime | Yes | End time in ISO-8601 format | |
| location | No | Event location | |
| attendees | No | List of attendee email addresses | |
| startTime | Yes | Start time in ISO-8601 format | |
| clientName | No | Client associated with this event | |
| description | No | Event description | |
| projectName | No | Project associated with this event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'Create a new calendar event' without mentioning required permissions, side effects like attendee notifications, or validation behavior, which is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, and contains no wasted words. It is appropriately concise and clearly 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?
The tool has 8 parameters, no output schema, and no annotations, yet the description is only one sentence. It fails to explain return values, error behavior, or other contextual details needed to use the tool effectively, making it incomplete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 8 parameters, so the schema fully documents the parameters. The description adds no additional parameter semantics, which matches the baseline score of 3 for 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 the specific verb 'Create' with a clear resource 'calendar event', and the word 'new' differentiates it from sibling update_calendar_event and delete_calendar_event. This is a clear, specific statement of 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 provides no guidance on when to use this tool versus alternatives. It does not mention preconditions, exclusions, or relationships with the other calendar event tools, leaving the agent without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_clientB
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 | |
| 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 | |
| whoPaysCardFees | No | Who pays Stripe credit card fees |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to rely on, the description needed to disclose behavioral traits but only states the basic creation action. It does not mention prerequisites, idempotency, validation rules, or what the response will contain, leaving the agent without critical 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, clear sentence that front-loads the action and resource. It is appropriately concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 19 parameters and no output schema, the description is only a one-liner. It does not inform the agent about expected return values, permissions, or other operational details, making it incomplete for fully informed tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides complete descriptions for all 19 parameters, so the description does not need to repeat parameter details. Since coverage is 100%, the baseline score of 3 is appropriate; no additional parameter meaning is added, but none is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: creating a new client in Moxie CRM. The verb 'create' and resource 'client' are specific and easily distinguish it from sibling tools like create_contact 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 such as create_contact or create_opportunity. The description lacks any context for choosing this tool, leaving the agent without direction on when it is the appropriate choice.
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 associated with a client
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Contact's role/title | |
| No | Email address | ||
| notes | No | Notes about the contact | |
| phone | No | Phone number | |
| mobile | No | Mobile phone number | |
| lastName | No | Contact's last name | |
| firstName | No | Contact's first name | |
| clientName | Yes | Exact name of the 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?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action 'create' and the association, but fails to mention prerequisites (e.g., client must exist), side effects, permissions, or response format. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Every word contributes to the core purpose, 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 11 parameters and no output schema, the description is too sparse. It does not mention that the client must already exist, nor does it explain the overall workflow or what happens on failure. The schema covers parameter details, but the description lacks the broader context needed for confident use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal extra meaning by noting the client association, but does not elaborate on how parameters interact or any additional constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Create' and identifies the resource 'contact', clearly distinguishing it from sibling tools like create_client and search_contacts. It also notes the association with a client, which further clarifies its 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 by stating the contact is associated with a client, which suggests an existing client is required. However, it does not explicitly compare against alternatives or state when not to use the tool, leaving the guidance implicit.
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 (YYYY-MM-DD format) | |
| amount | Yes | Expense amount | |
| billable | No | Whether the expense is billable to client | |
| category | No | Expense category | |
| clientName | No | Client to associate this expense with | |
| vendorName | No | Vendor/merchant name | |
| description | Yes | Description of the expense | |
| projectName | No | Project to associate this expense with | |
| reimbursable | No | Whether the expense is reimbursable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states the action without mentioning permissions, reversibility, side effects, or whether an existing client/project must be associated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource. Zero wasted words, ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters and no output schema, the one-sentence description is insufficient to understand expected return values or operational details such as whether the expense is draft/final, currency handling, or confirmation behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% description coverage for all 9 parameters, so the description adds no extra meaning beyond the schema. Baseline of 3 applies because the description doesn't need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('expense record'), clearly distinguishing it from sibling tools like create_invoice or create_client. It unambiguously states the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives, nor any exclusions or prerequisites. The description only states what it does, not the context in which it should be chosen.
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_opportunityA
Create a new sales opportunity in the pipeline. Note: This endpoint (/action/opportunities/create) may not be officially documented. The official way to create opportunities is via form submissions with a pipelineStageName using create_form_submission.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name/title of the opportunity | |
| stage | No | Pipeline stage (use list_pipeline_stages to see available stages) | |
| value | No | Estimated value of the opportunity | |
| clientName | No | Client associated with this opportunity | |
| contactName | No | Contact person for this opportunity | |
| description | No | Description of the opportunity | |
| probability | No | Win probability percentage (0-100) | |
| expectedCloseDate | No | Expected close date (YYYY-MM-DD format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full transparency burden. It discloses a notable behavioral trait: 'This endpoint (/action/opportunities/create) may not be officially documented,' alerting the user to potential instability or lack of support. However, it does not mention side effects, permissions, or return values, which are important for a mutation tool. The unofficial-status disclosure adds value but is 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?
The description is only two sentences, both of which are necessary. The first sentence delivers the core purpose, and the second provides a critical caveat and alternative. There is no redundant or filler content, so it is appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 8 parameters and no output schema, the description provides a clear purpose and an essential alternative recommendation. It could be more complete by mentioning what the endpoint returns or prerequisites like authentication, but the caveat about its unofficial status is crucial for decision-making. Given the schema covers parameter semantics, the description is mostly sufficient for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any parameter-level meaning beyond what the schema already provides. The note about pipelineStageName refers to the sibling tool, not this one, so it does not clarify parameters here. The schema descriptions themselves are adequate for all 8 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create a new sales opportunity in the pipeline.' The verb 'create' and resource 'sales opportunity' are specific, and the note distinguishing this from the official create_form_submission method differentiates it from a key sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides an alternative and a when-not-to-use signal: 'The official way to create opportunities is via form submissions with a pipelineStageName using create_form_submission.' This tells the agent to prefer the sibling tool, which is clear usage guidance. It implies that this endpoint should be used only if the official method is unavailable or inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectB
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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the only source of behavioral information. It discloses neither side effects (e.g., client association, status), permissions, nor any post-create behavior. The description essentially restates the purpose without added transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and contains no filler. It efficiently communicates the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite comprehensive schema descriptions, the overall context is incomplete: no usage guidelines, no behavioral disclosure, and no indication of return values or side effects. For a 9-parameter create tool, this is insufficient to fully guide an agent without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% description coverage for all 9 parameters, each with meaningful descriptions. The tool description itself adds no parameter-level detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('a new project') in the context of 'Moxie CRM'. This distinguishes it from sibling tools like create_client and create_task, 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?
No guidance is provided on when to use this tool versus alternatives such as create_opportunity or update_project. No prerequisites or typical use-case context is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskC
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 | No | Exact match of a client record in your CRM | |
| description | No | Task description | |
| projectName | Yes | Exact name of the project 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?
No annotations are provided, so the description carries the full burden. It simply says 'create' but does not disclose whether the operation is safe, requires permissions, or has side effects beyond creation. It also omits behavior around the 'tasks' array (subtask creation), validation of exact-match fields, or return values, which are critical for a write operation with 11 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 sentence of seven words, with zero filler or redundancy. It is front-loaded with the core action and resource. While it is minimal, this dimension rewards brevity and the sentence earns its place by conveying the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, nested objects, no output schema, no annotations), the description is too minimal. It does not explain what the tool returns, how subtasks are handled, or any edge cases. The schema covers parameters, but the description fails to provide broader workflow context such as typical usage or integration with other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a description, so baseline is 3. The tool description itself adds no parameter-specific meaning. However, the schema is already rich (e.g., 'must match exactly a status in your kanban' and 'Exact match of a client record in your CRM'), so no additional compensation from the description 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 states 'Create a new task/deliverable in a project', which clearly identifies the action (create) and the resource (task/deliverable within a project). It is distinct from sibling tools like create_project or create_client, though it does not explicitly contrast them. The phrasing 'task/deliverable' may cause 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?
No guidance is provided on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description is purely imperative and does not mention scenarios where this tool should be chosen over siblings like create_project or create_client. This leaves the agent without clear selection criteria.
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_commentB
Add a comment to an existing ticket
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Comment content/text | |
| ticketId | Yes | ID of the ticket to comment on | |
| authorEmail | No | Email of the comment author |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only states the action 'Add a comment' but does not disclose mutational effects, authentication requirements, failure modes, or response behavior. This is a significant gap for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core action, though it could be expanded slightly to cover behavioral aspects without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and complete schema coverage, the description is minimally adequate. However, the absence of an output schema and annotations means the description should ideally explain return values or side effects, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are already described structurally. The description adds no additional semantic context beyond what the schema provides, which is acceptable but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and resource ('comment to an existing ticket'), clearly distinguishing it from sibling tools like create_ticket. It precisely communicates the tool's function 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?
The phrase 'existing ticket' implies the tool should be used for commenting on already-created tickets, providing implicit usage context. However, there is no explicit guidance on when to prefer this over alternatives or any exclusions, though no direct alternative exists among siblings.
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_eventB
Delete a calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | ID of the event to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says "Delete a calendar event", which implies a destructive operation but does not indicate permanence, permissions, side effects, or what happens to related data.
Agents need to know what a tool does to the 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, precise sentence with no wasted words. It is appropriately concise for a simple delete 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?
The tool is a mutation with no annotations and no output schema. The description provides minimal context, omitting behavioral details, error handling, or return value expectations. A delete operation warrants more guidance than this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100% (eventId has a clear description). The tool description does not add any meaning beyond what the schema already 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 "Delete a calendar event" uses a specific verb and resource, making it clear that this tool removes a calendar event. It distinguishes from sibling tools like create_calendar_event and update_calendar_event by the action it performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 or when alternatives might be appropriate. The description only states the action, with no mention of prerequisites, exclusions, or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
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 | Yes | Search query to find contacts by name, email, or phone |
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 says 'Search for contacts' without mentioning return format, pagination, permissions, or any other behavioral trait. This adds no transparency beyond what the tool name implies.
Agents need to know what a tool does to the 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 redundant information. It is front-loaded and appropriately sized for the simplicity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is incomplete for a tool with no output schema and no annotations. It does not explain what is returned, how many results to expect, or any usage context. The agent is left without essential information about the tool's behavior and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a full description of the 'query' parameter (searching by name, email, or phone), giving 100% schema coverage. The tool description adds no additional parameter semantics, 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 uses the specific verb 'search' with the resource 'contacts', and scopes it to 'your Moxie workspace'. This clearly distinguishes it from sibling tools like search_clients or search_projects, 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?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives such as search_clients or list_clients, nor does it mention any exclusions or prerequisites. The agent is left without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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_calendar_eventB
Update an existing calendar event
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title for the event | |
| endTime | No | New end time in ISO-8601 format | |
| eventId | Yes | ID of the event to update | |
| location | No | New event location | |
| attendees | No | Updated list of attendee email addresses | |
| startTime | No | New start time in ISO-8601 format | |
| clientName | No | Client associated with this event | |
| description | No | New event description | |
| projectName | No | Project associated with this event |
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 'Update an existing calendar event', which indicates mutation but provides no details about partial vs. full updates, error behavior if the event does not exist, permission requirements, or response format. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence, making it concise and easy to parse. However, it is also under-specified, lacking important behavioral and usage details. Still, for what it does say, there is no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters, no output schema, and no annotations, the description is extremely incomplete. It does not explain what the return value is, whether update is partial or full replacement, how errors are handled, or any side effects. For a complex mutation tool, this is wholly inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with each parameter having a clear description (e.g., 'New title for the event'). The tool description adds no extra semantic meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing calendar event' clearly specifies the verb (update), resource (calendar event), and scope (existing), which distinguishes it from sibling tools like create_calendar_event and delete_calendar_event. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit guidance on when to use this tool versus alternatives. It only implies use for existing events via the word 'existing', but does not state prerequisites, exclusions, or how it differs from create/delete. No context or alternative tools are mentioned.
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?
With no annotations, the description carries the full burden of disclosing behavioral traits. It only says 'update', implying mutation, but does not explain partial-update behavior, required existing record, or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that communicates the core purpose with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 12 parameters, no annotations, and no output schema, yet the description provides only the basic action. It fails to explain how to identify the project (e.g., projectId vs projectName) or what the update semantics are, making it inadequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all 12 parameters. The description adds no parameter-specific information, making the 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?
The description clearly states the tool updates an existing project, using a specific verb and resource. It does not explicitly differentiate from related tools like create_project or search_projects, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, such as requiring an existing project ID, or contrast with create_project or search_projects.
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. Dates show when Glama detected each change.
30 tool updates
v1.1.2- First observed
apply_payment - First observed
approve_deliverable - First observed
attach_file_from_url - First observed
create_calendar_event - 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_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
search_clients - First observed
search_contacts - First observed
search_payable_invoices - First observed
search_projects - First observed
update_calendar_event - First observed
update_project
TDQS
Most tools target distinct resources, but create_opportunity and create_form_submission both can create pipeline opportunities, with create_opportunity explicitly flagged as potentially undocumented. This creates selection ambiguity for agents.
All tool names follow a consistent verb_noun snake_case pattern (e.g., list_clients, create_project, attach_file_from_url). No mixed conventions or camelCase.
With 30 tools, the server exceeds the 25-tool threshold for 'too many'. While a CRM has many entities, several tools could be combined (e.g., list_clients and search_clients) and the count feels bloated.
The tool surface has significant gaps: no update/delete for clients, contacts, tasks, or tickets; no list/read for projects, invoices, or calendar events (only search_payable_invoices and calendar create/update/delete). Agents would frequently hit dead ends for basic operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Related MCP Servers
- AlicenseBqualityDmaintenanceA comprehensive MCP server that connects AI assistants to GoHighLevel CRM, enabling management of contacts, conversations, calendars, pipelines, payments, and more through 60+ tools.6456MIT
- FlicenseNot gradedqualityBmaintenanceA remote MCP server for the Moxie Public API, deployable to Cloudflare Workers. Exposes all 29 documented Moxie endpoints as MCP tools for managing clients, contacts, projects, tasks, invoices, payments, and more.-
- AlicenseBqualityFmaintenanceMCP server for Invoice Ninja v5 API. Enables AI assistants to manage clients, invoices, quotes, payments, and time tracking through natural language.32222MIT
- AlicenseCqualityCmaintenanceA comprehensive MCP server covering the full GoHighLevel API surface with 651 tools, enabling management of contacts, opportunities, calendars, invoices, and more through natural language, with multi-tenant support and read-only safety defaults.100371MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/flyingwebie/withmoxie-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server