@clipform/mcp-server 2.5.1 → 2.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/{chunk-NYMC63ZK.js → chunk-4QF4KGPE.js} +107 -3
- package/dist/{chunk-NYMC63ZK.js.map → chunk-4QF4KGPE.js.map} +1 -1
- package/dist/{chunk-3BYQLPTT.js → chunk-IL26A4IN.js} +124 -4
- package/dist/chunk-IL26A4IN.js.map +1 -0
- package/dist/{chunk-3GBZFAEM.js → chunk-NCWQ42GI.js} +369 -20
- package/dist/chunk-NCWQ42GI.js.map +1 -0
- package/dist/{chunk-6EHOUAPE.js → chunk-UBJ7CZL2.js} +2 -2
- package/dist/index.js +4 -4
- package/dist/instrument.d.ts +30 -0
- package/dist/instrument.js +5296 -0
- package/dist/instrument.js.map +1 -0
- package/dist/prompts.js +2 -2
- package/dist/resources.js +2 -2
- package/dist/server.js +4 -4
- package/package.json +6 -1
- package/dist/chunk-3BYQLPTT.js.map +0 -1
- package/dist/chunk-3GBZFAEM.js.map +0 -1
- /package/dist/{chunk-6EHOUAPE.js.map → chunk-UBJ7CZL2.js.map} +0 -0
package/README.md
CHANGED
|
@@ -64,12 +64,14 @@ Your MCP client lists these automatically on connect (via `tools/list`). Full re
|
|
|
64
64
|
| Tool | Description |
|
|
65
65
|
|------|-------------|
|
|
66
66
|
| `clipform_create_form` | Create a new Clipform (interactive video-style form). |
|
|
67
|
+
| `clipform_import_form` | Convert a public Google Form, Typeform, or Tally form into a new Clipform. |
|
|
67
68
|
| `clipform_list_forms` | List forms in your workspace with optional filtering. |
|
|
68
69
|
| `clipform_whoami` | Show the current identity: auth mode (api key, session, or anonymous), active workspace, and plan limits. |
|
|
69
70
|
| `clipform_get_form` | Retrieve a form's details including all nodes in sequential order and their routing. |
|
|
70
71
|
| `clipform_update_form` | Update a form's title, publish status, settings, or tags. |
|
|
71
72
|
| `clipform_delete_form` | Move a form and all its nodes to the trash. |
|
|
72
73
|
| `clipform_get_results` | View response counts, choice/action answer breakdowns, and recent open-text answers for a form. |
|
|
74
|
+
| `clipform_get_responses` | List a Clipform form's individual responses (submissions) with time filtering - complements clipform_get_results (aggregates). |
|
|
73
75
|
| `clipform_add_node` | Add a new node to an existing form. |
|
|
74
76
|
| `clipform_update_node` | Update one or more existing nodes' text, type, config, or options. |
|
|
75
77
|
| `clipform_delete_node` | Delete a node from a form. |
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
WORKFLOW_TYPES,
|
|
3
3
|
getDiscoveryParams,
|
|
4
4
|
getSessionContextWithAuth
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-IL26A4IN.js";
|
|
6
6
|
import {
|
|
7
7
|
__export
|
|
8
8
|
} from "./chunk-G3PMV62Z.js";
|
|
@@ -4354,6 +4354,49 @@ function bookingWorkflow(args, sessionContext, authMode = "authenticated") {
|
|
|
4354
4354
|
|
|
4355
4355
|
## Key rule: 3-5 fields max. Every extra field costs registrations.`;
|
|
4356
4356
|
}
|
|
4357
|
+
function intakeWorkflow(args, sessionContext, authMode = "authenticated") {
|
|
4358
|
+
const useCase = args.use_case ?? "new clients";
|
|
4359
|
+
const discovery = buildDiscovery(getDiscoveryParams("intake", void 0, authMode === "anonymous" ? "demo" : "full"), args, authMode);
|
|
4360
|
+
return `${sessionContext ? sessionContext + "\n\n" : ""}${discovery}Here's how to build a client intake form for ${useCase} with Clipform. Read the attached intake guide for craft knowledge on a warm welcome and low-friction capture.
|
|
4361
|
+
|
|
4362
|
+
## Workflow
|
|
4363
|
+
|
|
4364
|
+
1. **Decide what you actually need** - contact details plus one open question about what the client is looking for. Capture, don't qualify.
|
|
4365
|
+
2. ${BUILD_ONCE_STEP}
|
|
4366
|
+
- Settings: show_step_counter: true, disable_back_navigation: false
|
|
4367
|
+
- Welcome (type: "button") - warm intro: "Thanks for reaching out - a couple of quick questions so we can help you properly." button_text: "Let's begin"
|
|
4368
|
+
- Contact collection (type: "details") - first name + email; phone optional
|
|
4369
|
+
- What they need (type: "open") - "Tell us a bit about what you're looking for." Enable video + audio + text responses (video-first)
|
|
4370
|
+
- Optional one qualifier (type: "choice") - only if it changes what you do next ("What are you most interested in?"). Don't stack these.
|
|
4371
|
+
- Optional "Anything else?" (type: "open") - catches what you didn't think to ask
|
|
4372
|
+
- End screen: "Thanks! We've got your details and we'll be in touch shortly." icon: "tick", no score, no restart
|
|
4373
|
+
- tags: format "intake", genre "onboarding", and 2-3 topic words
|
|
4374
|
+
3. **Optional: add a welcome video** - a short personal intro from you. Generate narration with clipform_generate_tts, then build a video with clipform_search_media + clipform_generate_video.
|
|
4375
|
+
4. ${REPUBLISH_STEP}
|
|
4376
|
+
5. **Log** with clipform_log_generation
|
|
4377
|
+
|
|
4378
|
+
## Key rule: 3-5 steps max. An intake that feels like paperwork loses the client you just won.`;
|
|
4379
|
+
}
|
|
4380
|
+
function leadCaptureWorkflow(args, sessionContext, authMode = "authenticated") {
|
|
4381
|
+
const useCase = args.use_case ?? "enquiries";
|
|
4382
|
+
const discovery = buildDiscovery(getDiscoveryParams("lead-capture", void 0, authMode === "anonymous" ? "demo" : "full"), args, authMode);
|
|
4383
|
+
return `${sessionContext ? sessionContext + "\n\n" : ""}${discovery}Here's how to build a lead capture form for ${useCase} with Clipform. Read the attached lead-capture guide - the whole game is minimal friction. This is a LINEAR form: no branching, no scoring.
|
|
4384
|
+
|
|
4385
|
+
## Workflow
|
|
4386
|
+
|
|
4387
|
+
1. **Decide the one thing you need** - a contact. Everything else is optional and costs conversions.
|
|
4388
|
+
2. ${BUILD_ONCE_STEP}
|
|
4389
|
+
- Settings: show_step_counter: false, disable_back_navigation: false
|
|
4390
|
+
- Optional hook (type: "button") - one line restating the value, e.g. "Want in? Drop your details and we'll be in touch." button_text: "Count me in"
|
|
4391
|
+
- Contact collection (type: "details") - first name + email; phone only if you'll call
|
|
4392
|
+
- Optional ONE qualifier (type: "choice") - only if the answer routes your follow-up ("What are you most interested in?"). If it doesn't, cut it.
|
|
4393
|
+
- End screen: "Thanks! We'll be in touch soon." Set the expectation (when/how). icon: "tick", no score, no restart
|
|
4394
|
+
- tags: format "lead-capture", genre "enquiry", and 2-3 topic words
|
|
4395
|
+
3. ${REPUBLISH_STEP}
|
|
4396
|
+
4. **Log** with clipform_log_generation
|
|
4397
|
+
|
|
4398
|
+
## Key rule: 3-4 steps max. Get the contact early, qualify lightly or not at all.`;
|
|
4399
|
+
}
|
|
4357
4400
|
var WORKFLOW_BUILDERS = {
|
|
4358
4401
|
"quiz": quizWorkflow,
|
|
4359
4402
|
"interview": interviewWorkflow,
|
|
@@ -4361,7 +4404,9 @@ var WORKFLOW_BUILDERS = {
|
|
|
4361
4404
|
"funnel": funnelWorkflow,
|
|
4362
4405
|
"testimonial": testimonialWorkflow,
|
|
4363
4406
|
"application": applicationWorkflow,
|
|
4364
|
-
"booking": bookingWorkflow
|
|
4407
|
+
"booking": bookingWorkflow,
|
|
4408
|
+
"intake": intakeWorkflow,
|
|
4409
|
+
"lead-capture": leadCaptureWorkflow
|
|
4365
4410
|
};
|
|
4366
4411
|
var QUIZ_VARIANT_BUILDERS = {
|
|
4367
4412
|
"personality": personalityQuizWorkflow,
|
|
@@ -4696,6 +4741,65 @@ Outcome categories: ${args.categories}` : "";
|
|
|
4696
4741
|
]
|
|
4697
4742
|
})
|
|
4698
4743
|
);
|
|
4744
|
+
server.registerPrompt(
|
|
4745
|
+
"create-intake",
|
|
4746
|
+
{
|
|
4747
|
+
title: "Create a Client Intake Form",
|
|
4748
|
+
description: "Build a warm client intake or onboarding form - capture contact details and what the client needs",
|
|
4749
|
+
argsSchema: {
|
|
4750
|
+
use_case: external_exports.string().optional().describe("What kind of business or service (e.g. 'massage', 'coaching', 'personal training', 'agency')"),
|
|
4751
|
+
response_format: external_exports.enum(["video", "audio", "text", "all"]).optional().describe("How people answer the open question (default: all)")
|
|
4752
|
+
}
|
|
4753
|
+
},
|
|
4754
|
+
async (args) => ({
|
|
4755
|
+
messages: [
|
|
4756
|
+
{
|
|
4757
|
+
role: "user",
|
|
4758
|
+
content: {
|
|
4759
|
+
type: "text",
|
|
4760
|
+
text: `I want to create a client intake form${args.use_case ? ` for a ${args.use_case} business` : ""}.`
|
|
4761
|
+
}
|
|
4762
|
+
},
|
|
4763
|
+
resourceLink("guide-intake", "clipform://guides/intake", "Client Intake & Onboarding Guide"),
|
|
4764
|
+
{
|
|
4765
|
+
role: "assistant",
|
|
4766
|
+
content: {
|
|
4767
|
+
type: "text",
|
|
4768
|
+
text: await getWorkflowText("intake", args)
|
|
4769
|
+
}
|
|
4770
|
+
}
|
|
4771
|
+
]
|
|
4772
|
+
})
|
|
4773
|
+
);
|
|
4774
|
+
server.registerPrompt(
|
|
4775
|
+
"create-lead-capture",
|
|
4776
|
+
{
|
|
4777
|
+
title: "Create a Lead Capture Form",
|
|
4778
|
+
description: "Build a short lead capture or enquiry form - turn interest into a contact with minimal friction",
|
|
4779
|
+
argsSchema: {
|
|
4780
|
+
use_case: external_exports.string().optional().describe("What you're capturing leads for (e.g. 'a service', 'a product', 'a waitlist', 'a quote')")
|
|
4781
|
+
}
|
|
4782
|
+
},
|
|
4783
|
+
async (args) => ({
|
|
4784
|
+
messages: [
|
|
4785
|
+
{
|
|
4786
|
+
role: "user",
|
|
4787
|
+
content: {
|
|
4788
|
+
type: "text",
|
|
4789
|
+
text: `I want to create a lead capture form${args.use_case ? ` for ${args.use_case}` : ""}.`
|
|
4790
|
+
}
|
|
4791
|
+
},
|
|
4792
|
+
resourceLink("guide-lead-capture", "clipform://guides/lead-capture", "Lead Capture Guide"),
|
|
4793
|
+
{
|
|
4794
|
+
role: "assistant",
|
|
4795
|
+
content: {
|
|
4796
|
+
type: "text",
|
|
4797
|
+
text: await getWorkflowText("lead-capture", args)
|
|
4798
|
+
}
|
|
4799
|
+
}
|
|
4800
|
+
]
|
|
4801
|
+
})
|
|
4802
|
+
);
|
|
4699
4803
|
}
|
|
4700
4804
|
|
|
4701
4805
|
export {
|
|
@@ -4708,4 +4812,4 @@ export {
|
|
|
4708
4812
|
getWorkflowText,
|
|
4709
4813
|
registerPrompts
|
|
4710
4814
|
};
|
|
4711
|
-
//# sourceMappingURL=chunk-
|
|
4815
|
+
//# sourceMappingURL=chunk-4QF4KGPE.js.map
|