Superforms

Human-input bridge for AI agents with voice-first answer links, MCP tools, and HTTP APIs.

我该使用它吗

质量与安全性

A
描述质量
97%
模式完整度
79%
命名质量
95%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(1)

  • LOWTool 'join_creation_session' description lacks action verb在 join_creation_session 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~2,355token 数(工具定义)
~2.2 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.84%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `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
}

社区

评价此服务器

证据

最近观测

已验证未记录版本11 个工具
已验证未记录版本11 个工具