AI Form API MCP server
Commit Oct 30, 2026Allows AI agents to create forms, share links, and retrieve responses in JSON or CSV formats.
Also known as sum-eet/aiformapi-mcp, aiformapi-mcp
- Stars
- 0
- Tools
- 11
- Downloads, 30 days
- —
- Latest version
- 0.1.0
- Last commit
- Oct 30, 2026
- License
- MIT
What is AI Form API MCP?
AI Form API allows AI agents to create forms, share links, and retrieve responses in JSON or CSV formats. It exposes 11 tools, such as create_form, list_forms, get_form.
Summary generated from the project's README
About AI Form API MCP server
AI Form API provides two distinct MCP servers designed to bridge the gap between AI agents and data collection. The Creator server allows form owners to manage the entire lifecycle of a survey, from using the create_form tool to generate new structures to retrieving collected data via get_responses in JSON or CSV formats. This server requires an API key starting with afk_ and works with clients like Claude Code, Cursor, VS Code, and n8n through a Streamable HTTP transport.
The Fill server is built for end-users who want their own AI agents to complete forms. It operates without authentication, instead using a one-time fill code provided in a prompt. This allows an agent to use the get_fill_form tool to read a form and submit answers through submit_fill after user confirmation. This setup is compatible with Claude Desktop, ChatGPT, and other major AI interfaces, enabling a hands-free way for people to interact with web forms using natural language.
What you can do with it
- 1Automated form generationAn AI agent can build a new survey by defining specific fields and titles through the creator server.
- 2AI-assisted form completionA user can provide a fill token to their AI agent to automatically populate and submit a form.
Written from the project's README. Every use case is checked against a quote from it.
How to install AI Form API MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall AI Form API MCP in Claude Code
$ claude mcp add --transport http aiformapi-mcp https://aiformapi.com/mcpInstall AI Form API MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"aiformapi-mcp": {
"url": "https://aiformapi.com/mcp"
}
}
}Install AI Form API MCP in VS Code
.vscode/mcp.json
{
"servers": {
"aiformapi-mcp": {
"type": "http",
"url": "https://aiformapi.com/mcp"
}
}
}Install AI Form API MCP in VS Code CLI
$ code --add-mcp '{"name":"aiformapi-mcp","type":"http","url":"https://aiformapi.com/mcp"}'Install AI Form API MCP in Codex
$ codex mcp add aiformapi-mcp --url https://aiformapi.com/mcpInstall AI Form API MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.aiformapi-mcp] url = "https://aiformapi.com/mcp"
Install AI Form API MCP in Gemini CLI
$ gemini mcp add -s user --transport http aiformapi-mcp https://aiformapi.com/mcpInstall AI Form API MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"aiformapi-mcp": {
"url": "https://aiformapi.com/mcp",
"type": "http"
}
}
}AI Form API MCP tools 11
Detected from the READMEcreate_formlist_formsget_formupdate_formclose_formreopen_formget_responsesadd_webhookget_usageget_fill_formsubmit_fill
| create_form | — | |
| list_forms | — | |
| get_form | — | |
| update_form | — | |
| close_form | — | |
| reopen_form | — | |
| get_responses | — | |
| add_webhook | — | |
| get_usage | — | |
| get_fill_form | — | |
| submit_fill | — |
Configuration
AIFORMAPI_AUTHAIFORMAPI_KEY
| Name | Description | |
|---|---|---|
| AIFORMAPI_AUTH | — | |
| AIFORMAPI_KEY | — |
Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachablesum-eet/aiformapi-mcp is public and reachablegithub.com/sum-eet/aiformapi-mcp ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Not checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-10-30github.com/sum-eet/aiformapi-mcp ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNot checked
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model11 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNo tool named like delete, drop or execPass
- Remote endpoint answers the MCP handshakeHTTPS endpoint answered 401 (sign-in required)Pass
README
View on GitHubAI Form API: MCP servers
AI Form API is a forms API and MCP server. Your AI agent creates a form, you share the link, people answer, and the agent reads the answers as JSON or CSV.
This repo holds the connection docs, the server.json files for the official MCP Registry and code examples. The service runs at https://aiformapi.com. This repo has no server code.
- Docs: https://aiformapi.com/docs
- MCP setup page: https://aiformapi.com/docs/mcp
- OpenAPI 3.1 spec: https://aiformapi.com/openapi.json
- Full reference for agents: https://aiformapi.com/llms-full.txt
- Contact: hello@aiformapi.com
The 2 MCP servers
Both servers use the Streamable HTTP transport.
| Server | URL | Auth | Who uses it |
|---|---|---|---|
| Creator | https://aiformapi.com/mcp |
Authorization: Bearer afk_... |
You, the form owner. Create forms and read responses. |
| Fill | https://aiformapi.com/mcp/fill |
None. The fill code is an argument. | A person who hands a form to their own AI agent. |
Get an API key for the creator server from the dashboard at https://aiformapi.com. See Authentication. The key starts with afk_. Keep it out of files you commit.
The fill server needs no login. A visitor presses "Want your AI agent to fill this?" on a public form page and copies a prompt with a one-time fill code. The agent reads the form, asks the person for anything missing, shows all answers, and submits only after the person says yes.
Which apps work today
| App | Creator server | Fill server |
|---|---|---|
| Claude Code | Yes, with a header | Yes |
| Cursor | Yes, with a header | Yes |
| VS Code | Yes, with a header | Yes |
| Claude Desktop | Yes, through mcp-remote with a header |
Yes, as a custom connector |
| n8n | Yes, with a header | Yes |
| Claude.ai | Not yet. It needs OAuth, which is planned. | Yes, as a custom connector |
| ChatGPT | Not yet. It needs OAuth, which is planned. | Yes, as a custom connector |
Connect the creator server
Set your key in your shell first. Use your own key.
export AIFORMAPI_KEY="afk_paste_your_key_here"
Claude Code
claude mcp add --transport http aiformapi https://aiformapi.com/mcp \
--header "Authorization: Bearer $AIFORMAPI_KEY"
This stores the key in your local Claude Code config. To keep the key out of a shared file, use a project .mcp.json that reads the environment variable (example):
{
"mcpServers": {
"aiformapi": {
"type": "http",
"url": "https://aiformapi.com/mcp",
"headers": {
"Authorization": "Bearer ${AIFORMAPI_KEY}"
}
}
}
}
Run /mcp in Claude Code to see the connection. Claude Code docs: https://code.claude.com/docs/en/mcp
Cursor
Put this in .cursor/mcp.json for one project, or in ~/.cursor/mcp.json for all projects (example). Set AIFORMAPI_KEY in your shell profile first.
{
"mcpServers": {
"aiformapi": {
"url": "https://aiformapi.com/mcp",
"headers": {
"Authorization": "Bearer ${env:AIFORMAPI_KEY}"
}
}
}
}
Cursor docs: https://cursor.com/docs/context/mcp
VS Code
Put this in .vscode/mcp.json, or run MCP: Open User Configuration for a profile-wide file (example). VS Code uses the top-level key servers, not mcpServers. It asks for the key when the server starts for the first time.
{
"inputs": [
{
"type": "promptString",
"id": "aiformapi-key",
"description": "AI Form API key",
"password": true
}
],
"servers": {
"aiformapi": {
"type": "http",
"url": "https://aiformapi.com/mcp",
"headers": {
"Authorization": "Bearer ${input:aiformapi-key}"
}
}
}
}
VS Code docs: https://code.visualstudio.com/docs/agents/reference/mcp-configuration
Claude Desktop (through mcp-remote)
Claude Desktop reads local servers from claude_desktop_config.json. The mcp-remote package turns a remote server with a header into a local one. You need Node.js.
- Open the file. On macOS it is
~/Library/Application Support/Claude/claude_desktop_config.json. On Windows it is%APPDATA%\Claude\claude_desktop_config.json. You can also open it from Settings, Developer, Edit Config. - Add the server (example). The space of
Bearerlives in the environment variable, not inargs, so the entry also works on Windows.
{
"mcpServers": {
"aiformapi": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://aiformapi.com/mcp",
"--header",
"Authorization:${AIFORMAPI_AUTH}"
],
"env": {
"AIFORMAPI_AUTH": "Bearer afk_your_key_here"
}
}
}
}
- Quit Claude Desktop fully and open it again.
This file holds your key in plain text. Do not share it or commit it.
n8n
Use the MCP Client Tool node and connect it to an AI Agent node. Set the endpoint to https://aiformapi.com/mcp, the transport to HTTP Streamable, and the authentication to Bearer with your key. Field names change between n8n versions, so check yours. n8n docs: https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/
Connect the fill server
The fill server has no login, so it needs no header.
Claude.ai and Claude Desktop
Add it as a custom connector.
- Go to Customize, then Connectors.
- Press + Add, then Add custom connector.
- Enter a name, for example
AI Form API fill. - Enter the URL
https://aiformapi.com/mcp/fill. - Choose No sign in for authentication.
- Press Add.
- In a chat, press +, then Connectors, and switch the connector on.
Anthropic says custom connectors are available on Free, Pro, Max, Team and Enterprise plans, and that Free plans have a limit of 1 custom connector. See https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp
ChatGPT
ChatGPT adds remote servers as connectors in developer mode. Create a connector, enter the URL https://aiformapi.com/mcp/fill, and choose no authentication. Menu names and plan availability change often. Check OpenAI's current help page for the exact steps.
Claude Code, Cursor, VS Code and n8n
Add it the same way as the creator server, without the header.
claude mcp add --transport http aiformapi-fill https://aiformapi.com/mcp/fill
{
"mcpServers": {
"aiformapi-fill": {
"url": "https://aiformapi.com/mcp/fill"
}
}
}
Tools
Creator server (/mcp)
The tools return rows and form definitions. They do not summarise. Your own model reads the rows and writes the summary.
| Tool | Arguments | Same as |
|---|---|---|
create_form |
title, description (optional), fields, settings (optional) |
POST /v1/forms |
list_forms |
limit (optional), cursor (optional) |
GET /v1/forms |
get_form |
form_id |
GET /v1/forms/{id} |
update_form |
form_id, and any of title, description, fields, settings |
PATCH /v1/forms/{id} |
close_form |
form_id |
POST /v1/forms/{id}/close |
reopen_form |
form_id |
POST /v1/forms/{id}/reopen |
get_responses |
form_id, and any of format, since, limit, cursor, order |
GET /v1/forms/{id}/responses |
add_webhook |
form_id, url |
POST /v1/forms/{id}/webhooks |
get_usage |
none | GET /v1/usage |
The arguments match the body or query of the REST call. The form id is the argument form_id, not a path part. format is json (default) or csv. order is asc or desc. In update_form, fields replaces the whole list and settings merges key by key. There is no tool to delete a form. Use the REST API or the dashboard.
A failed call returns a tool error with the same JSON error body as the REST API. See API error codes.
Fill server (/mcp/fill)
| Tool | Arguments | Does |
|---|---|---|
get_fill_form |
fill_token |
Returns the form and instructions. Does not use up the code. |
submit_fill |
fill_token, answers |
Stores the answers. answers maps field ids to values. |
fill_token is the code from the prompt. It starts with fil_. A successful submit_fill returns response_id, receipt and submitted_at.
Limits on the free plan
| Scope | Free plan |
|---|---|
| API key (REST and creator MCP together) | 30 requests per minute, 1,000 per day |
| Open forms per account | 3 |
| Responses per account per calendar month (UTC), all sources | 100 |
| Fill MCP calls, per IP | 20 per minute |
| One fill code | 1 successful use, 60 minutes lifetime, 5 POST attempts |
POST /v1/fill/{token}, per IP |
10 per minute |
| Webhooks per form | 3 |
| Request body size | 64 KB |
Creator MCP calls count against the same limit as REST calls for the key. The API, MCP, agent fill and CSV export are included in the free plan. A 429 response has a Retry-After header. The full table, with the RateLimit-* headers, is at https://aiformapi.com/docs/rate-limits
Examples
The examples/ folder has copy-paste code from the quickstart. Each example creates a small RSVP form and reads the responses back.
examples/curl/create-and-read.shexamples/javascript/create-and-read.mjs(Node 18 or newer,fetch)examples/python/create_and_read.py(requests)examples/mcp/: the client config files from this README
MCP Registry
The two servers are listed in the official MCP Registry with the server.json files in this repo:
server.json: creator server,io.github.sum-eet/aiformapiserver-fill.json: fill server,io.github.sum-eet/aiformapi-fill
License
The docs and examples in this repo use the MIT license. AI Form API is a hosted service. This license does not cover the service.
AI Form API MCP questions
How do I add AI Form API MCP to Claude Code?
Run claude mcp add --transport http aiformapi-mcp https://aiformapi.com/mcp in your terminal. Add --scope user to make it available in every project.
How do I add AI Form API MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does AI Form API MCP provide?
It exposes 11 tools, including create_form, list_forms, get_form, update_form, close_form.
How does the Fill server work?
The Fill server allows a person's AI agent to read a form using a fill token, ask for missing information, and submit answers after user approval.