Read leadflow://schema/capabilities once before the first build. That resource is the source of truth.
A failed post is list_leads. Where people leave is get_funnel_analytics. Do not invent a count or a post outcome.
A full generate is one build_funnel with name, editor_type, design, site_scripts, steps, and replace: true.
There is one subscription. Campaigns and team members are unlimited. Do not invent a funnel cap.
Build from what the human already said. Ask only when a missing choice would post the wrong lead or send people to the wrong place and there is no default.
Publish only when the human asks. test_webhook stays a preview until the human approves that send. Do not ask for Twilio Auth Tokens or send a test SMS.
Do not invent pipes, design keys, industry templates, or a question for {leadid_token} or {xxtrustedformcerturl}.
Protocol
Pass100/10020 / 20 pts
Connection, authentication, and protocol compatibility.
How to fix: Set the top-level tool.title to a short human-readable label (for example, "Search catalog"). Claude directory submission requires tool titles; annotations.title remains accepted only as a legacy fallback.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Read workspace id, name, and the live connection identifier. identifier is a public id, not the API key. Do not repeat the API key or its prefix. Also returns subscription, timezone, and key scope. Campaigns and team members are unlimited.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_workspace",
"description": "Read workspace id, name, and the live connection identifier. identifier is a public id, not the API key. Do not repeat the API key or its prefix. Also returns subscription, timezone, and key scope. Campaigns and team members are unlimited.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description81/100
Read leads and why a post failed. Filter by funnelId, slug, query (name, email, phone), or status (accepted, duplicate, rejected, error, failed). Pass leadId for that lead’s delivery attempts. Does not change the lead. Do not invent a status.
Describe the returned information so the agent knows whether it will answer the request.
Inputs25/100
2 of 6 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
funnelId
Not provided
Missing description. Explain what this value means and how to supply it.
slug
Not provided
Missing description. Explain what this value means and how to supply it.
query
Not provided
Missing description. Explain what this value means and how to supply it.
status
Not provided
Missing description. Explain what this value means and how to supply it.
leadId
One lead’s post diagnosis, including each delivery attempt.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
limit
List size. Default 25, max 50.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
Add a human-readable title so users do not have to interpret the tool identifier.
Description98/100
Read where people leave a published funnel. Returns each step’s reached, answered, continued, disqualified, trueAbandon, and abandonPercent, plus worstDrop. Optional start and end are ISO dates. Default is everything since the funnel’s analytics reset. Do not invent counts. This does not edit the funnel.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
funnelId
Funnel id from list_funnels / build_funnel
Clear enough to supply this argument.
start
ISO start. Clamped to the analytics reset.
Clear enough to supply this argument.
end
ISO end. Omit for no upper bound.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_funnel_analytics",
"description": "Read where people leave a published funnel. Returns each step’s reached, answered, continued, disqualified, trueAbandon, and abandonPercent, plus worstDrop. Optional start and end are ISO dates. Default is everything since the funnel’s analytics reset. Do not invent counts. This does not edit the funnel.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"funnelId"
],
"properties": {
"end": {
"type": "string",
"description": "ISO end. Omit for no upper bound."
},
"start": {
"type": "string",
"description": "ISO start. Clamped to the analytics reset."
},
"funnelId": {
"type": "string",
"description": "Funnel id from list_funnels / build_funnel"
}
}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
One-call generate: create or update a funnel with design + site_scripts + story. Omit funnelId to create. If a funnel with the same name already exists, the result includes nameCollision and still creates a new funnel — re-run with funnelId to edit the existing one. Re-run with funnelId + replace true is safe. Webhook url, method, headers, body, bodyJson, and bodyFields are top-level on the webhook step (data may also hold them; data wins). A dq:true option with no next wires to the disqualified node when the funnel has exactly one. Auto-wires webhook failure to the same next, and OTP failure to the disqualified node. Re-attaches OTP, returns publish check + mergePreview + droppedKeys. Prefer this over create → apply_design → build_story → apply_site_scripts.
The description explains the capability, when to use it, and what to expect.
Inputs54/100
34 of 61 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
funnelId
Omit to create. Present to update (idempotent with replace true).
Clear enough to supply this argument.
name
Required when creating. Optional rename when updating.
Clear enough to supply this argument.
defaultPhoneFormat
Funnel phone mask used when a phone step omits phoneFormat. Omitted means usa.
Clear enough to supply this argument.
editor_type
Not provided
Missing description. Explain what this value means and how to supply it.
template_id
Not provided
Missing description. Explain what this value means and how to supply it.
design
Same tokens as apply_design: h1Text, bodyTextColor, accentColor, h1Style, …
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Missing description. Explain what this value means and how to supply it.
steps › items › type
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › label
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › prompt
Question title, plain text. Default 22px bold.
Clear enough to supply this argument.
steps › items › title
Alias for prompt.
Clear enough to supply this argument.
steps › items › subtitle
Optional 14px subtitle under the title.
Clear enough to supply this argument.
steps › items › belowOptionsText
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › tcpaText
On-screen TCPA. Stored as sent; default only when omitted on a phone/form-with-tel step.
Clear enough to supply this argument.
steps › items › tcpaRequired
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › formDisclaimerText
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › computedFields
Question rules: when stored answer matches, write a derived date. { outputKey, matchMode, matchValue, offsetMonths, offsetDays, dateFormat }. Not a transformer pipe.
Clear enough to supply this argument.
steps › items › redirectUrl
disqualified only: off-site URL after the DQ is counted.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › buttonLabel
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › titleSize
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › subtitleSize
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › bold
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › fieldName
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › placeholder
Placeholder on a text question. On a form, each field label is the placeholder.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › phoneFormat
Phone mask. usa (555) 555-5555, aus 0412 345 678, uk 07123 456789, de 0171 2345678. Default usa. Stored digits: usa 10, aus 9 without leading 0, uk 11, de 10–12.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › inputType
text | name | email | tel | state. phone is an alias for tel.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › next
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › isStart
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › isFunnelSuccess
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › isSecondaryPathComplete
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › responseType
quickReply | multiChoice | textInput | form
Clear enough to supply this argument.
steps › items › fields › items › label
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › fields › items › variable
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › fields › items › inputType
text | name | email | tel | state
Clear enough to supply this argument.
steps › items › formFields
Replaces the whole form field list.
Clear enough to supply this argument.
steps › items › options › items › id
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › options › items › label
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › options › items › value
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › options › items › dq
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › options › items › next
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › data
Optional bag. The same key here wins over a top-level url, method, headers, body, bodyJson, or bodyFields.
Clear enough to supply this argument.
steps › items › url
Webhook, action, or redirect URL. On a disqualified step, url is the off-site redirect.
Clear enough to supply this argument.
steps › items › method
Webhook method. POST if omitted.
Clear enough to supply this argument.
steps › items › headers
Webhook headers: [{key, value}] or {key: value}.
Clear enough to supply this argument.
steps › items › body
Webhook or email body. Prefer bodyJson for a webhook.
Clear enough to supply this argument.
steps › items › bodyJson
Webhook body object or JSON string. Stored as body. Wins over bodyFields and body.
Clear enough to supply this argument.
steps › items › bodyFields
Webhook body as [{key, value}].
Clear enough to supply this argument.
steps › items › responseFields
Extract values from the CRM response into lead fields: [{path, variable}] (dot-notation path, e.g. "lead_id").
Clear enough to supply this argument.
steps › items › responseMatcher
Classify the CRM response into accepted/duplicate/rejected/error. { statusPath, acceptedValues[], rejectedValues[], errorValues[], duplicateValues[], reasonPath, duplicateReasons[], idPath }. e.g. LeadRya: { statusPath: "status", acceptedValues: ["accepted"], rejectedValues: ["rejected"], errorValues: ["error"], reasonPath: "reason", duplicateReasons: ["duplicate"], idPath: "lead_id" }. No matcher = keyword heuristic.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Rebuild or append story steps on an existing funnel. Prefer build_funnel for a full generate. Webhook url, method, headers, body, and bodyJson are top-level on the step. A dq:true option with no next wires to the only disqualified node. replace true rebuilds, re-attaches OTP, and auto-wires webhook failure.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs47/100
29 of 56 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
funnelId
Funnel id from list_funnels / build_funnel
Clear enough to supply this argument.
replace
Not provided
Missing description. Explain what this value means and how to supply it.
layout
Not provided
Missing description. Explain what this value means and how to supply it.
verbose
If true, echo the full funnel. Default is the changed node + publish + unwired + notes.
Clear enough to supply this argument.
steps › items › id
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › type
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › label
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › prompt
Question title, plain text. Default 22px bold.
Clear enough to supply this argument.
steps › items › title
Alias for prompt.
Clear enough to supply this argument.
steps › items › subtitle
Optional 14px subtitle under the title.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › belowOptionsText
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › tcpaText
On-screen TCPA. Stored as sent; default only when omitted on a phone/form-with-tel step.
Clear enough to supply this argument.
steps › items › tcpaRequired
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › formDisclaimerText
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › computedFields
Question rules: when stored answer matches, write a derived date. { outputKey, matchMode, matchValue, offsetMonths, offsetDays, dateFormat }. Not a transformer pipe.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › redirectUrl
disqualified only: off-site URL after the DQ is counted.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › buttonLabel
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › titleSize
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › subtitleSize
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › bold
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › fieldName
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › placeholder
Placeholder on a text question. On a form, each field label is the placeholder.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › phoneFormat
Phone mask. usa (555) 555-5555, aus 0412 345 678, uk 07123 456789, de 0171 2345678. Default usa. Stored digits: usa 10, aus 9 without leading 0, uk 11, de 10–12.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › inputType
text | name | email | tel | state. phone is an alias for tel.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › next
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › isStart
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › isFunnelSuccess
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › isSecondaryPathComplete
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › responseType
quickReply | multiChoice | textInput | form
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
steps › items › fields › items › label
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › fields › items › variable
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › fields › items › inputType
text | name | email | tel | state
Clear enough to supply this argument.
steps › items › formFields
Replaces the whole form field list.
Clear enough to supply this argument.
steps › items › options › items › id
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › options › items › label
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › options › items › value
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › options › items › dq
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › options › items › next
Not provided
Missing description. Explain what this value means and how to supply it.
steps › items › data
Optional bag. The same key here wins over a top-level url, method, headers, body, bodyJson, or bodyFields.
Clear enough to supply this argument.
steps › items › url
Webhook, action, or redirect URL. On a disqualified step, url is the off-site redirect.
Clear enough to supply this argument.
steps › items › method
Webhook method. POST if omitted.
Clear enough to supply this argument.
steps › items › headers
Webhook headers: [{key, value}] or {key: value}.
Clear enough to supply this argument.
steps › items › body
Webhook or email body. Prefer bodyJson for a webhook.
Clear enough to supply this argument.
steps › items › bodyJson
Webhook body object or JSON string. Stored as body. Wins over bodyFields and body.
Clear enough to supply this argument.
steps › items › bodyFields
Webhook body as [{key, value}].
Clear enough to supply this argument.
steps › items › responseFields
Extract values from the CRM response into lead fields: [{path, variable}] (dot-notation path, e.g. "lead_id").
Clear enough to supply this argument.
steps › items › responseMatcher
Classify the CRM response into accepted/duplicate/rejected/error. { statusPath, acceptedValues[], rejectedValues[], errorValues[], duplicateValues[], reasonPath, duplicateReasons[], idPath }. e.g. LeadRya: { statusPath: "status", acceptedValues: ["accepted"], rejectedValues: ["rejected"], errorValues: ["error"], reasonPath: "reason", duplicateReasons: ["duplicate"], idPath: "lead_id" }. No matcher = keyword heuristic.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description68/100
Patch one node (copy, webhook URL, computedFields, tcpaText, formFields replace, disqualified redirectUrl, Start / Funnel Success). Webhook url, method, headers, body, bodyJson, and bodyFields are top-level, as are action url/mode/phone and email fromName, replyTo, subject, body, and sendTo. phone_verify integrationId, phoneField, and codeLength are top-level too. data may also hold them; the same key inside data wins. A masked secret header (•••• plus the last four characters) keeps the stored secret. Do not wrap fields in patch. Unknown top-level keys are returned in droppedKeys.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs39/100
15 of 38 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
funnelId
Funnel id from list_funnels / build_funnel
Clear enough to supply this argument.
nodeId
Canvas node id
Clear enough to supply this argument.
label
Not provided
Missing description. Explain what this value means and how to supply it.
prompt
Not provided
Missing description. Explain what this value means and how to supply it.
title
Not provided
Missing description. Explain what this value means and how to supply it.
subtitle
Not provided
Missing description. Explain what this value means and how to supply it.
belowOptionsText
Not provided
Missing description. Explain what this value means and how to supply it.
tcpaText
Not provided
Missing description. Explain what this value means and how to supply it.
tcpaRequired
Not provided
Missing description. Explain what this value means and how to supply it.
formDisclaimerText
Not provided
Missing description. Explain what this value means and how to supply it.
placeholder
Text-question placeholder. On a form, the field label is the placeholder.
Clear enough to supply this argument.
phoneFormat
usa | aus | uk | de. Default usa.
Clear enough to supply this argument.
inputType
text | name | email | tel | state. phone is an alias for tel.
Clear enough to supply this argument.
computedFields
Question rules: when stored answer matches, write a derived date. { outputKey, matchMode, matchValue, offsetMonths, offsetDays, dateFormat }. Not a transformer pipe.
Clear enough to supply this argument.
redirectUrl
Not provided
Missing description. Explain what this value means and how to supply it.
buttonLabel
Not provided
Missing description. Explain what this value means and how to supply it.
data
Optional bag. The same key here wins over a top-level webhook, action, or email field.
Clear enough to supply this argument.
url
Webhook, action, or redirect URL. On a disqualified node, url is the off-site redirect.
Clear enough to supply this argument.
method
Not provided
Missing description. Explain what this value means and how to supply it.
headers
Webhook headers: [{key, value}] or {key: value}.
Clear enough to supply this argument.
body
Not provided
Missing description. Explain what this value means and how to supply it.
bodyJson
Webhook body object or JSON string. Stored as body.
Clear enough to supply this argument.
bodyFields
Not provided
Missing description. Explain what this value means and how to supply it.
responseFields
Extract values from the CRM response into lead fields: [{path, variable}].
Add a human-readable title so users do not have to interpret the tool identifier.
Description85/100
Preview or fire the draft webhook. Omit confirm to interpolate a fake payload without POSTing. Set confirm true only after the human approved this send.
The description explains the capability, when to use it, and what to expect.
Inputs38/100
2 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
funnelId
Funnel id from list_funnels / build_funnel
Clear enough to supply this argument.
nodeId
Canvas node id
Explain the meaning of this value, not just its name.
confirm
Not provided
Missing description. Explain what this value means and how to supply it.
leadData
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
Add a human-readable title so users do not have to interpret the tool identifier.
Description74/100
Walk a draft funnel in memory. No render, no browser, no outbound POST. Pass answers and optional runtime overrides. Does not run automatically after build_funnel. Secret header values are masked, including when that same value appears in the URL or body.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
funnelId
Funnel id from list_funnels / build_funnel
Clear enough to supply this argument.
answers
fieldName → stored answer (option label or value).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
runtime
Overrides for geo, url, device, and tracking variables.
Explain the meaning of this value, not just its name.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
Add a human-readable title so users do not have to interpret the tool identifier.
Description87/100
Create an empty draft funnel. Prefer build_funnel when the person already described the steps. A matching name still creates a new funnel and returns nameCollision.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
name
Not provided
Missing description. Explain what this value means and how to supply it.
editor_type
Not provided
Missing description. Explain what this value means and how to supply it.
template_id
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Publish one funnel in this workspace so its public page is live. Only after the person asks and validate_funnel has no blocking error. Does not collect payment or credentials.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Input documentation gives an agent enough context to populate the arguments.
funnelId
Funnel id from list_funnels / build_funnel
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "publish_funnel",
"description": "Publish one funnel in this workspace so its public page is live. Only after the person asks and validate_funnel has no blocking error. Does not collect payment or credentials.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"funnelId"
],
"properties": {
"funnelId": {
"type": "string",
"description": "Funnel id from list_funnels / build_funnel"
}
}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description77/100
Insert a phone_verify node after afterNodeId. Wires success to the old next step and failure to the disqualified node, and attaches Twilio. Omit integrationId to use the only workspace account.
Describe the returned information so the agent knows whether it will answer the request.
Inputs25/100
1 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
funnelId
Funnel id from list_funnels / build_funnel
Clear enough to supply this argument.
afterNodeId
Not provided
Missing description. Explain what this value means and how to supply it.
integrationId
Not provided
Missing description. Explain what this value means and how to supply it.
phoneField
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_integrations",
"description": "List Twilio accounts already saved in this workspace. Does not return auth tokens. Do not ask the person to paste an Account SID or Auth Token.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
mcp-leadflow setup, tools, quality score, publishing readiness, and alternatives.
How do I add mcp-leadflow to Claude, ChatGPT, or Cursor?
Add mcp-leadflow to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://app.mcpleadflow.com/api/mcp.
Is mcp-leadflow MCP ready for ChatGPT and Claude?
As of October 14, 2026, mcp-leadflow scores 94/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and does not yet meet Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is mcp-leadflow's MCP tool documentation?
As of October 14, 2026, mcp-leadflow scores 52/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 38 of 38 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to mcp-leadflow?
As of October 14, 2026, alternatives to mcp-leadflow in sales-and-marketing on the Manufact MCP catalog include Griddo AX Docs, Rocket Sloth, api.datacircle.dev, Close, and Apollo.io.
How can mcp-leadflow improve its MCP documentation?
create_variable is the lowest-scoring reviewed tool at 35/100. 0 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.