Superforms
Human-input bridge for AI agents with voice-first answer links, MCP tools, and HTTP APIs.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWjoin_creation_session에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"superforms": {
"url": "https://superforms.co/mcp"
}
}
}원격 엔드포인트
https://superforms.co/mcpstreamable-http할 수 있는 일
도구 목록
도구 (11)
🟡create_form(prompt, questions, goal, context, questionContext, ...)
Publish a voice-first form link immediately after creator confirmation, collect human answers, and pipe responses back to the agent.
입력 스키마
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"description": "Plain-English ask or request. Use only when explicit questions are not already known."
},
"questions": {
"type": "array",
"description": "Explicit questions to ask the respondent. Use this whenever questions already exist; preserve them exactly.",
"items": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"context": {
"type": "string"
}
},
"required": [
"text"
],
"additionalProperties": false
}
]
}
},
"goal": {
"type": "string"
},
"context": {
"type": "string",
"description": "Private context for smart follow-ups. Summarize relevant non-sensitive host-conversation context and append any extra context the creator provides. Never shown to respondents."
},
"questionContext": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"creationSessionUrl": {
"type": "string"
},
"title": {
"type": "string"
},
"persistent": {
"type": "boolean"
},
"followUpMode": {
"type": "string",
"enum": [
"none",
"smart",
"deep_dive"
],
"description": "For exactly one question, set this only after asking the creator \"Want smart follow-up questions?\" Use deep_dive for yes or none for no. For multiple questions, use none unless explicitly requested."
},
"max_followups_per_question": {
"type": "number",
"description": "Optional compatibility setting. Omit for adaptive one-question smart follow-ups."
},
"max_total_questions": {
"type": "number",
"description": "Optional compatibility setting. Omit for adaptive one-question smart follow-ups."
},
"responseMode": {
"type": "string",
"enum": [
"voice_preferred",
"text_only",
"voice_only"
]
},
"responseLimit": {
"type": "string",
"enum": [
"one",
"multiple"
],
"description": "Use \"one\" for a form intended for one named person/client. Use \"multiple\" for forms, surveys, feedback, customers, users, and public/embedded links."
}
},
"additionalProperties": false
}🟡create_feedback_form(prompt, questions, goal, context, questionContext, ...)
Publish a voice-first feedback, cancellation, feature request, survey, or research form immediately after creator confirmation, with optional smart follow-ups.
입력 스키마
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"description": "Plain-English ask or request. Use only when explicit questions are not already known."
},
"questions": {
"type": "array",
"description": "Explicit questions to ask the respondent. Use this whenever questions already exist; preserve them exactly.",
"items": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"context": {
"type": "string"
}
},
"required": [
"text"
],
"additionalProperties": false
}
]
}
},
"goal": {
"type": "string"
},
"context": {
"type": "string",
"description": "Private context for smart follow-ups. Summarize relevant non-sensitive host-conversation context and append any extra context the creator provides. Never shown to respondents."
},
"questionContext": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"creationSessionUrl": {
"type": "string"
},
"title": {
"type": "string"
},
"persistent": {
"type": "boolean"
},
"followUpMode": {
"type": "string",
"enum": [
"none",
"smart",
"deep_dive"
],
"description": "For exactly one question, set this only after asking the creator \"Want smart follow-up questions?\" Use deep_dive for yes or none for no. For multiple questions, use none unless explicitly requested."
},
"max_followups_per_question": {
"type": "number",
"description": "Optional compatibility setting. Omit for adaptive one-question smart follow-ups."
},
"max_total_questions": {
"type": "number",
"description": "Optional compatibility setting. Omit for adaptive one-question smart follow-ups."
},
"responseMode": {
"type": "string",
"enum": [
"voice_preferred",
"text_only",
"voice_only"
]
},
"responseLimit": {
"type": "string",
"enum": [
"one",
"multiple"
],
"description": "Use \"one\" for a form intended for one named person/client. Use \"multiple\" for forms, surveys, feedback, customers, users, and public/embedded links."
}
},
"additionalProperties": false
}🟡create_ask(prompt, questions, goal, context, questionContext, ...)
Create a voice-first Superforms answer link for human input. Backward-compatible alias for create_form.
입력 스키마
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"description": "Plain-English ask or request. Use only when explicit questions are not already known."
},
"questions": {
"type": "array",
"description": "Explicit questions to ask the respondent. Use this whenever questions already exist; preserve them exactly.",
"items": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"context": {
"type": "string"
}
},
"required": [
"text"
],
"additionalProperties": false
}
]
}
},
"goal": {
"type": "string"
},
"context": {
"type": "string",
"description": "Private context for smart follow-ups. Summarize relevant non-sensitive host-conversation context and append any extra context the creator provides. Never shown to respondents."
},
"questionContext": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"creationSessionUrl": {
"type": "string"
},
"title": {
"type": "string"
},
"persistent": {
"type": "boolean"
},
"followUpMode": {
"type": "string",
"enum": [
"none",
"smart",
"deep_dive"
],
"description": "For exactly one question, set this only after asking the creator \"Want smart follow-up questions?\" Use deep_dive for yes or none for no. For multiple questions, use none unless explicitly requested."
},
"max_followups_per_question": {
"type": "number",
"description": "Optional compatibility setting. Omit for adaptive one-question smart follow-ups."
},
"max_total_questions": {
"type": "number",
"description": "Optional compatibility setting. Omit for adaptive one-question smart follow-ups."
},
"responseMode": {
"type": "string",
"enum": [
"voice_preferred",
"text_only",
"voice_only"
]
},
"responseLimit": {
"type": "string",
"enum": [
"one",
"multiple"
],
"description": "Use \"one\" for a form intended for one named person/client. Use \"multiple\" for forms, surveys, feedback, customers, users, and public/embedded links."
}
},
"additionalProperties": false
}⚪join_creation_session(creationSessionUrl, agentName)
Join a Superforms homepage creation handoff session before creating the real form. Pass agentName with the client name, such as Codex, Claude Code, Claude, ChatGPT, or Cursor.
입력 스키마
{
"type": "object",
"properties": {
"creationSessionUrl": {
"type": "string"
},
"agentName": {
"type": "string"
}
},
"required": [
"creationSessionUrl"
],
"additionalProperties": false
}🟡update_creation_session(creationSessionUrl, title, goal, context, questions, ...)
Update a homepage creation handoff draft with the current form title, questions, and settings before the user clicks Set live.
입력 스키마
{
"type": "object",
"properties": {
"creationSessionUrl": {
"type": "string"
},
"title": {
"type": "string"
},
"goal": {
"type": "string"
},
"context": {
"type": "string",
"description": "Private smart-follow-up context. Summarize relevant non-sensitive host-conversation context and append any extra context the creator provides. Never shown to respondents."
},
"questions": {
"type": "array",
"description": "Current draft questions to show in the live form preview.",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"context": {
"type": "string"
}
},
"required": [
"text"
],
"additionalProperties": false
}
]
}
},
"followUpMode": {
"type": "string",
"enum": [
"none",
"smart",
"deep_dive"
]
},
"max_followups_per_question": {
"type": "number",
"description": "Use 0 by default. Use 1 only when smart follow-ups are explicitly requested."
},
"max_total_questions": {
"type": "number",
"description": "Use 20 for deep-dive interviews."
},
"responseMode": {
"type": "string",
"enum": [
"voice_preferred",
"text_only",
"voice_only"
]
},
"responseLimit": {
"type": "string",
"enum": [
"one",
"multiple"
],
"description": "Use one for a named person/client. Use multiple for feedback forms, surveys, customers, users, and public links."
}
},
"required": [
"creationSessionUrl"
],
"additionalProperties": false
}🟢get_responses(askId, agentToken, since)
Fetch persisted raw responses for a Superforms ask. This is the MCP equivalent of the HTTP bridge answers endpoint.
입력 스키마
{
"type": "object",
"properties": {
"askId": {
"type": "string"
},
"agentToken": {
"type": "string"
},
"since": {
"type": "string"
}
},
"required": [
"askId",
"agentToken"
],
"additionalProperties": false
}🟢list_asks(agentToken)
List recent asks for a provided private agent token.
입력 스키마
{
"type": "object",
"properties": {
"agentToken": {
"type": "string"
}
},
"required": [
"agentToken"
],
"additionalProperties": false
}🟢watch_ask(url, askId, agentToken, since, timeoutMs)
Return as soon as an individual answer is saved, including answers received while an agent was reconnecting and while the form remains in progress. Use since for durable per-answer catch-up; the HTTP bridge also exposes an SSE stream endpoint.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"askId": {
"type": "string"
},
"agentToken": {
"type": "string"
},
"since": {
"type": "string",
"description": "ISO timestamp cursor from the last response the agent processed."
},
"timeoutMs": {
"type": "number",
"description": "Maximum wait in milliseconds, capped at 120000."
}
},
"required": [
"url",
"agentToken"
],
"additionalProperties": false
}🟢list_my_forms
List forms owned by the connected Superforms account, including response counts and latest response timestamps.
입력 스키마
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_my_form_responses(askId, since)
Read persisted raw responses for a form owned by the connected Superforms account. No per-form agent token is required.
입력 스키마
{
"type": "object",
"properties": {
"askId": {
"type": "string"
},
"since": {
"type": "string",
"description": "Optional ISO timestamp cursor."
}
},
"required": [
"askId"
],
"additionalProperties": false
}🟢watch_my_form_responses(askId, since, timeoutMs)
Return any existing individual answers immediately, or wait briefly until the respondent saves their next answer, even while the form remains in progress.
입력 스키마
{
"type": "object",
"properties": {
"askId": {
"type": "string"
},
"since": {
"type": "string",
"description": "Optional ISO timestamp cursor."
},
"timeoutMs": {
"type": "number",
"description": "Maximum wait in milliseconds, capped at 120000."
}
},
"required": [
"askId"
],
"additionalProperties": false
}커뮤니티
증거