Marketo MCP Server
The Marketo MCP Server is a tool for managing Marketo forms via the Marketo API. It provides the following capabilities:
List Forms: Retrieve Marketo forms with pagination and filtering by status (draft or approved)
Get Form by ID: Fetch details of a specific form using its unique ID
Clone Forms: Create copies of existing forms with new names, descriptions, and destination folders
Approve Forms: Change form status to approved with optional audit comments
Handle Authentication: Manage Marketo API authentication and token refresh automatically
Error Handling: Provide solutions for common errors including authentication issues and rate limiting
Integration: Configure easily with Claude Desktop for seamless operation
Used for configuration management, storing sensitive Marketo API credentials and instance URL in environment variables.
Provides a Node.js runtime environment for the MCP server, with compatibility for v14 or higher required for server operation.
The MCP server is implemented in TypeScript, enabling type-safe interactions with the Marketo API.
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., "@Marketo MCP Serverlist all draft forms"
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.
Marketo MCP Server
A Model Context Protocol server for Adobe Marketo Engage. Give Claude Desktop, Cursor, and other MCP-compatible clients direct, authenticated access to the Marketo REST API — read and write forms, smart lists, channels, leads, activities, and lists with natural language.
Why
Marketing ops, growth, and RevOps teams spend hours clicking through the Marketo UI to clone a form, approve assets, look up a lead, or audit a smart list. The Marketo MCP Server wires those same REST API operations into an LLM agent, so you can say:
"Clone form 1234 into the Q2 Webinars folder and approve it."
"Show me recent activities for lead alex@example.com."
"Create a new email channel called 'Lifecycle Nurture'."
…and the model executes the actual Marketo API calls on your behalf.
Related MCP server: Dynamic Form MCP
Table of Contents
Features
Form management — list, inspect, clone, and approve forms via the Marketo Asset API
Smart list operations — list and inspect smart lists
Channel CRUD — create, read, update, and delete channels
Lead database — get leads by ID or email, create or update leads in bulk, delete leads
Activity & change logs — fetch activities and field changes for any lead
List membership — add or remove leads from static lists
Program management — list, inspect, clone programs and retrieve program members
Email operations — list, inspect, and send sample emails for QA
Automatic auth — OAuth 2.0 client-credentials flow with token caching & refresh
Stdio transport — works out of the box with Claude Desktop, Cursor, and any MCP client that speaks stdio
Quick start
Option A — Smithery (recommended)
npx -y @smithery/cli install @alexleventer/marketo-mcp --client claudeFollow the prompts to paste in your Marketo base URL, client ID, and client secret.
Option B — npx (no install)
Add the following to your MCP client's config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"marketo": {
"command": "npx",
"args": ["-y", "marketo-mcp"],
"env": {
"MARKETO_BASE_URL": "https://123-ABC-456.mktorest.com/rest",
"MARKETO_CLIENT_ID": "your-client-id",
"MARKETO_CLIENT_SECRET": "your-client-secret"
}
}
}
}Option C — from source
git clone https://github.com/alexleventer/marketo-mcp.git
cd marketo-mcp
npm install
npm run buildCopy the config block printed by the build into your MCP client.
Prerequisites
Node.js 18 or higher
Marketo API credentials (client ID & client secret from a LaunchPoint service)
A Marketo instance with REST API access enabled
An MCP-compatible client — Claude Desktop, Cursor, Cline, or any other
Obtaining Marketo API credentials
Log into Marketo admin
Admin → Integration → LaunchPoint
New → New Service, set service type to Custom and pick a display name (e.g.
MCP Server)Assign an API-only user with the permissions you need (Read-Only Assets, Read-Write Lead, etc.)
Save the Client ID and Client Secret
Your base URL is under Admin → Integration → Web Services → REST API Endpoint (strip
/rest/v1/*— keep justhttps://<munchkin>.mktorest.com/rest)
Configuration
All configuration is via environment variables:
Variable | Required | Description |
| yes | Your REST endpoint, e.g. |
| yes | LaunchPoint service client ID |
| yes | LaunchPoint service client secret |
Copy .env.example to .env for local development.
Available tools
Tool | Description |
| List forms (filter by `status: draft |
| Get a single form by ID |
| Clone a form into a destination folder |
| Approve a draft form |
| List smart lists |
| Get a smart list by ID |
| List channels |
| Get a channel by ID |
| Create a new channel |
| Update an existing channel |
| Delete a channel |
| Get a lead by numeric ID |
| Look up a lead by email address (filter API) |
| Bulk create or update leads (max 300 per call) |
| Delete a lead |
| Fetch activities for a lead (paginated) |
| Fetch field-change history for a lead |
| Get lists that a lead belongs to |
| Add leads to a static list |
| Remove leads from a static list |
| List programs (filter by type, folder, tag, or date range) |
| Get a program by ID |
| Clone a program and all its local assets into a folder |
| Get leads that are members of a program |
| List emails (filter by status) |
| Get an email by ID |
| Send a sample/preview email for QA |
Each tool accepts typed arguments validated with zod and returns the raw Marketo JSON response. See the Adobe Marketo REST API reference for field-level details.
Usage with Claude Desktop
Install Claude Desktop
Open the config at
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows)Paste the
mcpServersblock from Quick startRestart Claude Desktop
Usage with Cursor / other MCP clients
Any MCP client that supports stdio servers will work. Point it at the built binary:
{
"mcpServers": {
"marketo": {
"command": "npx",
"args": ["-y", "marketo-mcp"],
"env": { "MARKETO_BASE_URL": "...", "MARKETO_CLIENT_ID": "...", "MARKETO_CLIENT_SECRET": "..." }
}
}
}Rate limits
Marketo enforces several API rate limits. Keep these in mind when running batch operations:
Limit | Value |
Short-term | 100 calls per 20 seconds per instance |
Daily | 50,000 calls per day |
Concurrent | 10 simultaneous connections |
Bulk import | 10 MB per file, 10 concurrent jobs |
Bulk export | 500 MB per day, 2 concurrent jobs |
If you hit 606 Max rate limit reached, wait 20 seconds before retrying. The Marketo REST API returns a Retry-After header in some cases.
Troubleshooting
Symptom | Likely cause |
| Wrong client ID/secret, or REST API not enabled for the LaunchPoint user |
| The API-only user lacks the role for that endpoint (e.g. Asset API vs Lead Database API) |
| Marketo caps at 100 calls / 20s / instance — batch calls and add delays |
| The folder/form/lead ID doesn't exist or is in a different workspace |
Auth works, but requests hang | Double-check |
You can inspect tool calls locally with the MCP inspector:
npm run inspectorDevelopment
src/
├── index.ts # MCP server + all tool registrations
├── auth.ts # OAuth token manager (caches until expiry)
└── constants.ts # Env var bindingsnpm run dev # Run with ts-node + .env
npm run typecheck # Type-check without emit
npm run lint # ESLint
npm run format # Prettier
npm run build # Compile to build/Contributing
Issues and pull requests welcome at github.com/alexleventer/marketo-mcp.
Fork the repo
Create a feature branch
npm run lint && npm run typecheckOpen a PR
License
ISC — see LICENSE.
Keywords: marketo mcp server, marketo model context protocol, marketo claude, marketo ai, adobe marketo mcp, marketo api claude desktop, marketo automation llm, marketo engage mcp
Available Tools
27 toolsmarketo_add_lead_to_listA
Add one or more leads to a static list by list ID. Accepts an array of lead IDs. Max 300 leads per call.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ||
| leadIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses important behavioral traits: accepts array of IDs and a maximum of 300 leads per call. However, it does not mention idempotency, error handling, or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extraneous words. The first sentence states the core purpose, the second adds key context (array format and limit). All content is essential.
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 covers the main aspects: purpose, parameters, and a critical limit. It lacks return value info and error conditions, but for a simple add operation it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description adds meaning by explaining that listId identifies a static list and leadIds is an array of lead IDs. This matches the required parameters and clarifies their purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (add), the resource (leads to a static list), the input method (by list ID), and key details (accepts array, max 300). This differentiates it from siblings like marketo_remove_lead_from_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention scenarios to avoid (e.g., dynamic lists, batches over 300). It only describes the operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_approve_formB
Approve a draft form, making it available for use in landing pages and embeds. Optionally include an approval comment.
| Name | Required | Description | Default |
|---|---|---|---|
| formId | Yes | ||
| comment | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only says 'making it available' but omits details like permissions required, irreversibility, or what happens if form is already approved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant information, front-loaded with the core action and effect. Efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple approve action, description covers basics but lacks context on edge cases (e.g., form not in draft) and return value. No output schema further limits completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. The description adds minimal meaning beyond the schema: 'optionally include an approval comment' repeats comment's optionality; formId is not described. No parameter details like format or constraints.
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 ('Approve a draft form') and the effect ('making it available for use in landing pages and embeds'), distinguishing it from siblings like marketo_clone_form or marketo_get_form_by_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., when form is not in draft, or when to use marketo_clone_form). No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_clone_formA
Clone an existing form into a destination folder. The cloned form is created in draft status and must be approved before use.
| Name | Required | Description | Default |
|---|---|---|---|
| formId | Yes | ||
| name | Yes | ||
| description | No | ||
| folderId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description correctly discloses that the result is in draft status and requires approval. This adds behavioral context beyond what the schema provides. No contradictions are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first covers the primary action and target, the second adds a critical behavioral note. No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks information about return values, error conditions, or success/failure indicators. Given the absence of an output schema and low parameter documentation, the description does not provide sufficient context for complete tool understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage. The tool description only mentions 'destination folder' without explaining each parameter's meaning (e.g., formId, name, description, folderId). This leaves the agent to infer from parameter names alone.
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 ('Clone'), resource ('existing form'), and target ('destination folder'). It distinguishes itself from sibling tools like marketo_approve_form or marketo_get_form_by_id by specifying the cloning 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 notes that the clone is created in draft status and must be approved, implying a workflow with marketo_approve_form. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_clone_programA
Clone an existing program into a destination folder. Clones all local assets (emails, landing pages, smart campaigns) within the program. The cloned program is created with the same channel.
| Name | Required | Description | Default |
|---|---|---|---|
| programId | Yes | ||
| name | Yes | ||
| folderId | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavioral traits. It explains that all local assets are cloned and the channel is preserved, but it does not address potential side effects (e.g., whether program memberships are cloned), required permissions, or rate limits. The description lacks depth beyond the core functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, each sentence adding distinct value: purpose, scope of cloning, and channel preservation. It is front-loaded with the essential verb and resource, and no extraneous information is present.
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 covers the input scope well but omits important details such as the return value (e.g., the new program's ID) and error conditions (e.g., what happens if the source program does not exist). Given that there is no output schema, the description should provide minimal expectations for the response.
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 0% description coverage, placing the burden on the description. While the description implies the roles of programId (source program) and folderId (destination folder), it does not explicitly define name or description parameters. The meaning of these parameters is left to inference, which is insufficient for a schema with no additional 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 action ('Clone'), the resource ('existing program'), the destination ('destination folder'), and specifies what content is cloned ('local assets such as emails, landing pages, smart campaigns'). It also mentions the cloned program retains the same channel. This effectively distinguishes it from sibling tools like marketo_clone_form or marketo_create_channel.
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 duplicating an existing program, which contrasts with creating a new program from scratch (no create program tool exists among siblings). However, it does not explicitly state when to use this tool versus cloning a specific form (marketo_clone_form) or other alternatives, nor does it mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_create_channelA
Create a new program channel. Channels must have a unique name and type. The type determines which program types can use this channel.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No | ||
| type | Yes | ||
| applicationId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that channels must have unique name and type, and that type determines program type compatibility. However, it lacks details on error handling, idempotency, or side effects of creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-loaded with purpose, no unnecessary words. Efficient and to the point.
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 4 parameters with 0% coverage, the description covers critical constraints but omits response format and optional parameter purpose. It is minimally complete for a simple create tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must explain parameters. It adds meaning for 'name' and 'type' (unique constraints, type's role) but does not address 'description' or 'applicationId', leaving half the parameters undefined.
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 program channel' with a specific verb and resource. It also adds constraints (unique name and type, type determines program types) that distinguish it from sibling tools that read, update, or delete channels.
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 implicitly indicates use when creating a new channel. Sibling tool names clearly differentiate read (get_channels, get_channel_by_id), update, and delete operations, providing context without explicit when-not statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_create_or_update_leadA
Bulk create or update leads (upsert). Accepts an array of lead records with standard and custom fields. Deduplicates by lookupField (default: email). Max 300 leads per call.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| lookupField | No | ||
| partitionName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses upsert behavior, dedup logic, and batch limit, but lacks details on merge semantics for existing fields, authorization needs, rate limits, or error handling. Adequate but could be richer.
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 sentences, front-loaded with the core action 'upsert'. Every word adds value: verb, resource, limit, dedup key. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing output schema and annotations, the description covers input and constraints but omits response format (e.g., success/error status for each lead) and partial failure behavior. It is adequate for a simple batch tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the 'input' parameter as an array of lead records with standard and custom fields, and mentions lookupField and default email. However, it does not detail 'partitionName' or customFields structure, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Bulk create or update leads (upsert)' and specifies accepting arrays with standard/custom fields, dedup by lookupField, and max 300 leads. This distinctly separates it from sibling tools like marketo_add_lead_to_list or marketo_delete_lead.
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 indicates when to use this tool (for upserting leads) and provides constraints (max 300 per call). It implicitly suggests batch usage, but does not explicitly state when not to use it or mention alternatives, though sibling list provides context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_delete_channelA
Delete a channel by ID. Fails if any programs are currently using this channel.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that deletion fails if programs use the channel. No other behavioral traits like irreversibility, permissions, or side effects. With no annotations, more details would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words. Front-loaded with verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter, the description covers the key failure condition. Missing details on return value or confirmation, but adequate given tool 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 description adds no information about the channelId parameter beyond what the schema provides ('by ID'). With 0% schema description coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicit verb 'Delete' with resource 'channel by ID'. Includes crucial constraint about program usage, distinguishing it from marketo_create_channel, marketo_update_channel, and marketo_get_channel_by_id.
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?
Mentions failure condition (programs using channel) but does not explicitly state when to use versus alternatives or recommend checking channel usage first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_delete_leadA
Permanently delete a lead by its numeric ID. This action cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| leadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must carry the burden of behavioral disclosure. It correctly flags the destructive nature ('permanently delete', 'cannot be undone'), but lacks additional transparency about permissions, side effects, or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences with no extraneous words. Every sentence serves a purpose: stating the action and emphasizing irreversibility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description provides adequate context: what it does, how to identify the lead, and the permanence. Minor gaps exist (e.g., no explanation of the response), but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% parameter description coverage, and the description merely reiterates that the ID is numeric. It adds minimal value beyond the schema's type constraint, failing to explain the format or valid range of the leadId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete), the resource (lead), and the method (by numeric ID). It distinguishes the tool from siblings like marketo_get_lead_by_id and marketo_create_or_update_lead, which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. While it warns about permanence ('cannot be undone'), it does not offer context about prerequisites, typical use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_channel_by_idA
Retrieve a single channel by its numeric ID. Returns the channel definition including progression statuses and their success mappings.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description indicates a read operation ('Retrieve', 'Returns') and describes the return shape. However, it does not mention error conditions, authentication needs, or what happens if the channel ID is invalid, which could be important for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the essential information without extraneous words. Every part is meaningful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter retrieval tool, the description covers purpose and return shape. It would benefit from mentioning error behavior or permissions, but overall it is adequate given the tool's simplicity and lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the only parameter 'channelId'. The description merely calls it a 'numeric ID', which is redundant with the schema type (number). No additional semantic or constraints are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a single channel by numeric ID, and specifies it returns progression statuses and success mappings. This distinguishes it from sibling like marketo_get_channels which returns a list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a channel ID, but does not explicitly state when to use this over alternatives or list prerequisites. Usage is clear from name and description 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.
marketo_get_channelsB
List all program channels in the instance. Channels define the progression statuses available to programs (e.g., Webinar: Invited > Registered > Attended).
| Name | Required | Description | Default |
|---|---|---|---|
| maxReturn | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description indicates a read operation but does not mention pagination or performance implications despite input schema having maxReturn and offset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff, though could benefit from brief parameter notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing output schema and parameter details; for a simple list tool it's acceptable but incomplete for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% parameter description coverage and the description does not explain maxReturn or offset parameters, leaving the agent to infer their meaning.
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?
Explicitly states 'List all program channels in the instance' and explains what channels are, clearly differentiating from create/delete/update siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for listing channels, but no guidance on when to use this vs get_channel_by_id or other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_email_by_idA
Retrieve a single email by its numeric ID. Returns full email metadata including subject, from address, reply-to, template, and folder location.
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It states it returns metadata, implying a read-only operation, but does not explicitly confirm safety, permissions, or rate limits. Adequate but lacks explicit behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single sentence that front-loads the action. However, could be slightly more structured by separating purpose and return fields.
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, description lists key return fields (subject, from address, etc.), providing enough context for a simple retrieval. Lacks error handling or response format details, but acceptable for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the parameter 'emailId'; the description adds only 'numeric ID', which is already evident from the type. Does not explain where to obtain the ID or any constraints beyond numeric type.
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 action (retrieve), the resource (a single email by numeric ID), and distinguishes from siblings like 'marketo_get_emails' by specifying it returns full metadata for one email.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when you have a numeric ID, but does not explicitly state when to use this vs. alternatives like 'marketo_get_emails' for listing or 'marketo_send_sample_email' for sending. No exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_emailsA
List email assets in Marketo. Filter by approval status (approved/draft) and paginate with maxReturn/offset. Returns email metadata including subject line, from address, and template ID.
| Name | Required | Description | Default |
|---|---|---|---|
| maxReturn | No | ||
| offset | No | ||
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description lists return fields (subject, from, template ID) but doesn't explicitly state read-only nature or other behavioral traits like authentication or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, 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?
Returns field info compensates for no output schema; covers filtering and pagination; could mention scope (all emails?), but sufficient for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%; description adds meaning for status (approved/draft) and mentions pagination, but does not fully explain maxReturn and offset behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List email assets in Marketo' with a specific verb and resource. Distinguishes from sibling tools like marketo_get_email_by_id.
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?
Implicitly tells when to use for listing emails with filtering and pagination, but lacks explicit comparison to alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_form_by_idA
Retrieve a single form by its numeric ID. Returns full form metadata including fields, submit button, and thank-you page configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| formId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must self-disclose behavioral traits. It states the output is 'full form metadata' but does not mention error behavior (e.g., if ID is invalid), side effects (none expected), or any operational constraints. For a simple read operation, this is minimally 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?
Single sentence is direct and front-loaded. No redundant or extraneous information. Every word serves a 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 simplicity (one parameter, no output schema), the description adequately covers purpose, input, and output. Missing elements like error handling are minor for a getter. Slightly incomplete due to lack of usage context but sufficient for basic 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 0%, so the description must compensate. It adds 'by its numeric ID' which reiterates the schema's type constraint. No additional meaning about the parameter's format, validation, or relationship to other data is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve'), the resource ('single form'), the identifier ('by its numeric ID'), and the output ('full form metadata'). It distinguishes itself from the sibling 'marketo_get_forms' (which returns multiple forms) and other getters like 'marketo_get_email_by_id'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., 'marketo_get_forms' for listing forms, or other ID-based retrievers). Does not specify prerequisites, exclusions, or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_formsA
List forms in the Marketo instance. Filter by approval status (approved/draft) and paginate with maxReturn/offset. Returns form metadata including URL, status, and folder location.
| Name | Required | Description | Default |
|---|---|---|---|
| maxReturn | No | ||
| offset | No | ||
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes the operation as listing (read-like) but does not explicitly state it is non-destructive, safe, or idempotent. 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?
Two concise sentences front-load the main action and cover purpose, filtering, pagination, and output. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description mentions returned fields (URL, status, folder location). Covers purpose and parameters well, though could mention default pagination values or rate limits.
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 0%, but the description fully explains all three parameters: status (approved/draft), maxReturn and offset for pagination. Provides meaning beyond raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'list' and resource 'forms' with scope 'Marketo instance'. It distinguishes from siblings like marketo_get_form_by_id by implying a list vs. specific form retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for listing forms with filtering and pagination, but does not explicitly contrast with sibling tools like marketo_get_form_by_id. Clear context but lacks explicit when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_lead_activitiesA
Fetch activity records for a specific lead. Filter by activity type IDs (e.g., 1=Visit Webpage, 2=Fill Out Form, 6=Send Email). Supports cursor-based pagination via nextPageToken.
| Name | Required | Description | Default |
|---|---|---|---|
| leadId | Yes | ||
| activityTypeIds | No | ||
| nextPageToken | No | ||
| batchSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses cursor-based pagination via nextPageToken but does not mention error handling, rate limits, or ordering. Reasonably transparent for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are front-loaded: first declares purpose, second adds filtering and pagination. No redundant or verbose language.
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 4 parameters (1 required) and no output schema, the description explains three parameters but omits batchSize and does not describe the response format or limits. Adequate but with gaps.
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 0%. The description compensates by explaining activityTypeIds (with examples) and nextPageToken for pagination. However, batchSize is not explained, and leadId's purpose is implied. Adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Fetch activity records for a specific lead' with a specific verb and resource. It distinguishes from sibling tools like marketo_get_lead_by_id and marketo_get_lead_changes by focusing on activities.
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 mentions filtering by activity type IDs and cursor-based pagination, providing clear usage context. It does not explicitly state when not to use or mention alternatives, but the context is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_lead_by_emailB
Look up a lead by email address using the Marketo leads filter API. Optionally specify which fields to return. Returns matching lead records.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavioral traits. It mentions 'using the Marketo leads filter API' but does not address rate limits, authentication, error handling for missing emails, or duplicate handling. This is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise and front-loaded. However, it could be slightly more efficient by merging the second and third sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description omits return format, error scenarios, and pagination. For a lookup tool with sibling mutation tools, this is incomplete.
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 0%, so the description must compensate. It only states 'Optionally specify which fields to return,' adding minimal value. No explanation of valid fields or format is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Look up a lead by email address' using the Marketo API, with optional field selection and returning matching records. This distinguishes it from siblings like get_lead_by_id.
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 a lead by email but offers no explicit guidance on when to use this tool versus alternatives like get_lead_by_id or create_or_update_lead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_lead_by_idB
Retrieve a lead by its numeric Marketo ID. Optionally specify which fields to return (defaults to standard fields). Returns lead record with all requested field values.
| Name | Required | Description | Default |
|---|---|---|---|
| leadId | Yes | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates a read operation ('Retrieve') but does not explicitly state that the tool is read-only or disclose any side effects, permissions, or error handling. Lacks transparency beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no extraneous information. Front-loaded with the primary purpose, and the second sentence adds relevant detail about parameter usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (single lead retrieval with optional fields) and no output schema, the description covers the essential purpose and parameter semantics. Could be improved by mentioning response format or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning: it clarifies that 'fields' is optional and defaults to standard fields. This compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (retrieve), resource (lead by numeric Marketo ID), and the optional fields feature. It is specific but does not explicitly differentiate from sibling tools like marketo_get_lead_by_email or marketo_get_lead_activities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_lead_by_email). No mention of prerequisites or conditions that would make this tool inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_lead_changesA
Fetch field-change history for a specific lead. Optionally filter to specific field names. Useful for auditing data changes and tracking lead lifecycle progression.
| Name | Required | Description | Default |
|---|---|---|---|
| leadId | Yes | ||
| fields | No | ||
| nextPageToken | No | ||
| batchSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It correctly implies a read operation but does not detail pagination behavior, sorting, or date ranges. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence states the core action, the second adds optional filtering and use cases. Efficient 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?
No output schema, yet the description does not mention what the response contains (e.g., list of changes with fields like timestamp, old/new values). Missing essential info for the agent to understand the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It explains 'leadId' and 'fields' filtering but omits 'nextPageToken' (pagination) and 'batchSize'. Only partial value added.
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 'Fetch' and resource 'field-change history' are specific and clear. It distinguishes itself from siblings like marketo_get_lead_by_id (current state) and marketo_get_lead_activities (activities, not changes).
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?
States it's 'useful for auditing data changes and tracking lead lifecycle progression', providing clear context for when to use. It does not explicitly exclude cases, but the purpose is well-implied given sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_lead_listsA
Get all static lists that a lead belongs to. Supports cursor-based pagination via nextPageToken. Returns list IDs and names.
| Name | Required | Description | Default |
|---|---|---|---|
| leadId | Yes | ||
| batchSize | No | ||
| nextPageToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions pagination and return fields but does not disclose side effects (likely read-only), error handling, or rate limits. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines purpose, second adds pagination and output. No redundant words or extraneous 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 simple tool (3 params, no output schema), description adequately covers purpose, pagination, and return shape. Could mention that lists are static only, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds meaning: 'Supports cursor-based pagination via nextPageToken' explains pagination, and 'Returns list IDs and names' hints at output. leadId is obvious, but batchSize is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all static lists that a lead belongs to', specifying the verb and resource. It distinguishes from siblings like marketo_get_lead_by_id or marketo_add_lead_to_list by focusing on list membership.
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 lists for a lead. It mentions pagination but does not explicitly state when not to use or compare to alternatives like marketo_get_lead_activities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_program_by_idA
Retrieve a single program by its numeric ID. Returns full program metadata including channel, status, costs, tags, and folder path.
| Name | Required | Description | Default |
|---|---|---|---|
| programId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. While it indicates a read operation (retrieve), it does not explicitly state no side effects, required permissions, or behavior on invalid IDs. The description is adequate but lacks explicit non-mutation confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loading the core action and resource, then listing return elements. No superfluous words, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 required param, no output schema), the description covers the main purpose, return content, and ID type. It could briefly mention error handling or permissions, but overall it is sufficiently complete for a simple retrieval 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?
The schema has one parameter (programId) with 0% description coverage. The description mentions 'by its numeric ID', adding minimal context that the ID is numeric, but does not fully describe the parameter’s purpose, constraints, or how to obtain it. More detail would be beneficial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action (Retrieve), resource (single program), key identifier (numeric ID), and expected return content (full metadata with channel, status, costs, tags, folder path). This differentiates it from sibling tools like get_programs or get_program_members.
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 specific program is needed, but it omits explicit guidance on when to use this tool versus alternatives, such as get_programs for listing all programs or get_program_members for members. No prerequisites, exclusions, or comparison to siblings are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_program_membersA
Get leads that are members of a specific program. Optionally specify which fields to return. Supports cursor-based pagination via nextPageToken. Returns member status alongside lead data.
| Name | Required | Description | Default |
|---|---|---|---|
| programId | Yes | ||
| fields | No | ||
| batchSize | No | ||
| nextPageToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Mentions pagination and return data but lacks explicit read-only indication, rate limits, or side effects. No annotations to offset.
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?
21-word sentence packed with essential information 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?
Covers required and optional parameters, pagination, and return data. No output schema, but description adequately specifies 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?
Adds meaning for programId, fields, and nextPageToken beyond the schema. batchSize is not described but can be inferred from pagination context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('Get leads'), the resource ('members of a specific program'), and optional features (field selection, pagination). Distinguishes from siblings like marketo_get_programs.
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?
Tells when to use (get program members) and mentions options, but no exclusions, prerequisites, or alternatives for cases like leads not in a program.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_programsA
List programs in Marketo. Filter by type (filterType: id, programType, folder, tag) with filterValues, or by date range (earliestUpdatedAt/latestUpdatedAt). Paginate with maxReturn/offset. Returns program metadata including channel, status, costs, and tags.
| Name | Required | Description | Default |
|---|---|---|---|
| maxReturn | No | ||
| offset | No | ||
| filterType | No | ||
| filterValues | No | ||
| earliestUpdatedAt | No | ||
| latestUpdatedAt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It correctly implies a read-only operation ('List programs') and mentions return data, but lacks details on authentication needs, rate limits, or potential side effects. The description is adequate but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, comprising two efficient sentences. The first sentence states the primary action, and the second covers parameters and return data. No extraneous 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 has 6 parameters, no required fields, and no output schema, the description covers the main aspects: filtering, pagination, and return fields (channel, status, costs, tags). It misses details like sorting, error responses, or default pagination limits, but is reasonably complete for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the raw schema: it explains filterType's enumerated values (id, programType, folder, tag), the role of filterValues, date range parameters, and pagination controls. However, it omits details like value format or default behaviors, which slightly reduces clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List programs in Marketo' and details the filtering and pagination options, making the tool's purpose unambiguous. It distinguishes from siblings like get_program_by_id which retrieves a single program.
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 explains how to use the tool with filter types, values, date range, and pagination, but does not explicitly state when to use it over alternatives or when not to use it. The sibling list provides context but no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_smart_list_by_idA
Retrieve a single smart list by its numeric ID. Returns the smart list definition including filter rules and membership criteria.
| Name | Required | Description | Default |
|---|---|---|---|
| smartListId | Yes |
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 clarifies the return value includes filter rules and membership criteria, but does not state that it is a read-only operation, or disclose potential error states, rate limits, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences clearly communicate the action and the return content without any 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 simplicity of the tool (single parameter, no annotations, no output schema), the description adequately covers purpose and basic return content. However, it lacks usage guidance and behavioral transparency, which are needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds minimal value: it confirms the ID is 'numeric', which is already evident from the schema type 'number'. No additional constraints, format, or examples are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the clear verb 'Retrieve' and specifies the resource 'a single smart list by its numeric ID'. It directly contrasts with the sibling tool 'marketo_get_smart_lists', which retrieves multiple lists, making the purpose distinct.
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 specific numeric ID is known but does not explicitly state when to use this tool over alternatives like 'marketo_get_smart_lists' or how to obtain the ID. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_get_smart_listsA
List smart lists in the Marketo instance. Paginate with maxReturn (default 200) and offset. Returns smart list metadata including filter rules and folder location.
| Name | Required | Description | Default |
|---|---|---|---|
| maxReturn | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides key behavioral details: it is a read operation, paginates via maxReturn and offset, and returns smart list metadata including filter rules and folder location. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no extraneous words, and front-loads the essential function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with two optional parameters and no output schema, the description covers the action, pagination, and return contents; lacks only offset default value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains the purpose of maxReturn (with default 200) and offset for pagination, adding meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List' and the resource 'smart lists in the Marketo instance', distinguishing it from siblings like marketo_get_smart_list_by_id which fetches a single smart list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing all smart lists with pagination, but does not explicitly contrast with sibling tools or explain when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_remove_lead_from_listA
Remove one or more leads from a static list. Accepts an array of lead IDs. Max 300 leads per call.
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | ||
| leadIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States it removes leads (destructive action) and limits batch size, but lacks details on permissions, reversibility, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose followed by a constraint. No unnecessary words 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?
Given simple parameters and no output schema, description adequately covers operation and batch limit. Lacks details on edge cases (e.g., leads not in list, multiple lists) but sufficient for a straightforward removal tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 2 params with 0% description coverage. Description clarifies leadIds as 'array of lead IDs' but does not explain listId, though its name is self-explanatory. Adds some value but incomplete.
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 'Remove one or more leads from a static list', specifying the verb (remove), resource (leads from a static list), and implicitly distinguishing it from the sibling tool 'marketo_add_lead_to_list'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a key constraint (Max 300 leads per call) and clear usage context, but does not explicitly mention when not to use this tool or direct to alternatives like marketo_add_lead_to_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_send_sample_emailA
Send a sample/preview of an email to a specified email address. Optionally render with a specific lead's data by passing leadId. Useful for QA before approving.
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | ||
| emailAddress | Yes | ||
| textOnly | No | ||
| leadId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It states it sends a sample email but does not disclose that it actually dispatches a real email, nor does it mention permissions, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with the core action, followed by optional detail and use case. 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 no annotations, no output schema, and 0% parameter descriptions, the description covers main purpose and two params but misses required emailId explanation, the fact that it actually sends an email, and any response or error information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must explain parameters. It adds meaning for emailAddress and leadId, but does not explain emailId (the email to send) or textOnly flag, leaving half the parameters underspecified.
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 sends a sample/preview of an email to a specified address, and distinguishes from siblings like get_email or get_lead by focusing on the send action for QA purposes.
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 explicit context ('Useful for QA before approving'), but does not mention when not to use or list alternatives, leaving some gaps for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketo_update_channelA
Update an existing channel's properties (name, description, type). Cannot change progression statuses after creation.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | ||
| name | No | ||
| description | No | ||
| type | No | ||
| applicationId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions a limitation on progression statuses but omits details on side effects, authentication needs, or error conditions, which are important for an update operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence stating the purpose and a critical constraint. No wasted words, front-loaded with the verb 'Update'.
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 (5 simple params, no output schema), the description addresses the core action and one key limitation. However, it lacks usage details for parameters and expected behavior on partial updates, making it only adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists three updatable properties (name, description, type) but does not explain channelId, applicationId, or their roles. With 0% schema coverage, it adds only partial meaning beyond raw types.
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 channel's properties (name, description, type) and distinguishes itself from sibling tools like create_channel and delete_channel by being a modification 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 provides a clear constraint ('Cannot change progression statuses after creation') but does not explicitly mention when to use this tool versus alternatives like get_channel_by_id or create_channel, though the context implies use for modification.
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.
7 tool updates
v1.1.0- Added
marketo_clone_program - Added
marketo_get_email_by_id - Added
marketo_get_emails - Added
marketo_get_program_by_id - Added
marketo_get_program_members - Added
marketo_get_programs - Added
marketo_send_sample_email
16 tool updates
v1.0.0- Added
marketo_add_lead_to_list - Added
marketo_create_channel - Added
marketo_create_or_update_lead - Added
marketo_delete_channel - Added
marketo_delete_lead - Added
marketo_get_channel_by_id - Added
marketo_get_channels - Added
marketo_get_lead_activities - Added
marketo_get_lead_by_email - Added
marketo_get_lead_by_id - Added
marketo_get_lead_changes - Added
marketo_get_lead_lists - Added
marketo_get_smart_list_by_id - Added
marketo_get_smart_lists - Added
marketo_remove_lead_from_list - Added
marketo_update_channel
4 tool updates
- First observed
marketo_approve_form - First observed
marketo_clone_form - First observed
marketo_get_form_by_id - First observed
marketo_get_forms
TDQS
All tools target distinct resources and actions (leads, forms, emails, programs, channels, smart lists) with no overlapping purposes, making it easy for an agent to select the correct tool.
All tools follow a consistent 'marketo_verb_noun' pattern (e.g., marketo_add_lead_to_list, marketo_get_form_by_id), with clear and predictable naming throughout.
27 tools is appropriate for a comprehensive marketing automation platform covering multiple subdomains (leads, forms, emails, programs, channels, smart lists). Each tool has a clear purpose and none seem redundant.
Coverage is strong for leads (CRUD) and channels (full lifecycle), but missing create/delete for forms and emails, and missing create/delete for programs. This leaves notable gaps that may require workarounds.
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
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Model Context Protocol server for Studex tools, notifications, and profile integrations
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for todo.vu task management and time tracking.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables interaction with the Tradovate API for managing trading contracts, positions, orders, and accounts.1MIT
- FlicenseAqualityDmaintenanceA server that implements the Model Context Protocol for managing dynamic forms, allowing users to create, retrieve, and handle responses for web forms via the @dynamicfrm/js library.4-
- FlicenseDqualityCmaintenanceA comprehensive Model Context Protocol server that enables interaction with the Klaviyo API, providing tools and resources for managing customer profiles, lists, segments, campaigns, flows, and various marketing automation features.473-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for Marketing Connect AI integrations that provides tools, resources, and prompts for AI models to interact with marketing systems and data.-
Appeared in Searches
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/alexleventer/marketo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server