Koskamo

Web3Forms MCP

An MCP server hosted by usefulapi that allows AI assistants to interact with Web3Forms. It enables users to list forms, read form submissions, and create new submissions programmatically. The server handles authentication via OAuth using a Web3Forms Submissions API key and provides tools for managing form data within the Web3Forms ecosystem.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Web3Forms MCP logo, by usefulapiVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by usefulapi
You need:Find it in Web3Forms → Dashboard → Account → API Keys (Pro plan).Needs a key with the 'Create submissions' permission.
MCP endpoint (Streamable HTTP)
https://web3forms.usefulapi.io/mcp
Vendor documentation

What you can do with it

  • List all Web3Forms forms in the account
  • Read the latest form submissions
  • Create a test submission on a contact form

Source and maintenance

Vendor evidenceRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
web3forms-mcp 1.0.0
MCP protocol
2025-06-18
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
1 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Tools for Web3Forms, hosted by usefulapi.io. If the user is new or asks what this server can do, suggest requests such as: "Show the latest submissions of my contact form."; "How many submissions has each of my forms received?"; "Find submissions that mention pricing in the message field.". Read-only tools never change data; ask the user before a tool that creates, changes or deletes Web3Forms data. Free plan: 50 tool calls per month. Run web3forms_usage_status to see the calls used this month. If the user asks for something none of these tools can do, tell the user and, with their OK, run web3forms_request_feature to record the request. Paid plan: Pro (unlimited tool calls (fair use limit: 10,000 a month), $9/month or $90/year). Pro can be cancelled at any time and then runs to the end of the paid period, so it also suits a one-time job. When the user wants more calls or reaches the limit, run web3forms_upgrade (plan "monthly" or "yearly"); it returns a payment link for the user to open. web3forms_cancel_subscription cancels Pro at the end of the paid period.

Tools

4 advertised

web3forms_list_forms — List forms
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all Web3Forms forms in the account: form_id, form_name, created_at and total_count of submissions. Good first call to find a form_id. API: GET /forms.

web3forms_list_forms input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
web3forms_list_forms annotations
{
  "title": "List forms",
  "readOnlyHint": true
}
web3forms_list_submissions — List submissions
Advertised by the server during the last successful anonymous check.
Advertised read-only

List submissions of one form, newest first, with fields, submitter IP address, user agent, site_url and attachments. Returns has_more and next_cursor: pass next_cursor as cursor to get the next page. API: GET /submissions.

web3forms_list_submissions input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "form_id"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1,
      "description": "Page size, 1-100 (default 50)."
    },
    "cursor": {
      "type": "string",
      "description": "next_cursor from a previous response."
    },
    "form_id": {
      "type": "string",
      "minLength": 1,
      "description": "The form id (from web3forms_list_forms)."
    }
  }
}
web3forms_list_submissions annotations
{
  "title": "List submissions",
  "readOnlyHint": true
}
web3forms_get_submission — Get a submission
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get one submission by id (for example sub_a1b2c3d4e5f6), with its fields, IP address, user agent, site_url and attachments. API: GET /submissions/{id}.

web3forms_get_submission input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "submission_id"
  ],
  "properties": {
    "submission_id": {
      "type": "string",
      "minLength": 1,
      "description": "The submission id (from web3forms_list_submissions)."
    }
  }
}
web3forms_get_submission annotations
{
  "title": "Get a submission",
  "readOnlyHint": true
}
web3forms_create_submission — Create a submission
Advertised by the server during the last successful anonymous check.
Advertised destructive

WRITE: create a submission on a form you own, as if a visitor sent it. It is stored, counts toward the monthly quota, and sends the notification email, autoresponder and integrations. Needs a key with the 'Create submissions' permission. There is NO idempotency key: if a call times out, check web3forms_list_submissions before you retry, or you may create a duplicate. API: POST /submissions.

web3forms_create_submission input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "form_id",
    "fields"
  ],
  "properties": {
    "cc": {
      "type": "string",
      "description": "CC address."
    },
    "bcc": {
      "type": "string",
      "description": "BCC address."
    },
    "fields": {
      "type": "object",
      "description": "Form fields as name/value pairs (1 to 100 entries).",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "form_id": {
      "type": "string",
      "minLength": 1,
      "description": "The form to submit to (must be a form you own)."
    },
    "replyto": {
      "type": "string",
      "description": "Reply-To address of the notification email."
    },
    "subject": {
      "type": "string",
      "description": "Override the notification email subject."
    },
    "metadata": {
      "type": "object",
      "properties": {
        "ip": {
          "type": "string"
        },
        "site_url": {
          "type": "string"
        },
        "user_agent": {
          "type": "string"
        }
      },
      "description": "Attribution of the real submitter: ip, user_agent, site_url."
    },
    "from_name": {
      "type": "string",
      "description": "Override the sender name."
    },
    "preheader": {
      "type": "string",
      "description": "Email preheader text."
    }
  }
}
web3forms_create_submission annotations
{
  "title": "Create a submission",
  "destructiveHint": true
}

Prompts

1 advertised

getting_started — Get started with Web3Forms

Advertised by the server during the last successful anonymous check.

What you can do with Web3Forms here, with example requests to try.

No arguments advertised.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
578 ms
95th percentile latency
578 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 578 ms · metadata changed · 4 tool(s), 1 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http web3forms-mcp https://web3forms.usefulapi.io/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add web3forms-mcp --url https://web3forms.usefulapi.io/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable web3forms-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "web3forms-mcp": {
      "url": "https://web3forms.usefulapi.io/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "web3forms-mcp": {
      "type": "streamableHttp",
      "url": "https://web3forms.usefulapi.io/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start web3forms-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "web3forms-mcp": {
      "type": "http",
      "url": "https://web3forms.usefulapi.io/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http web3forms-mcp https://web3forms.usefulapi.io/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "web3forms-mcp": {
      "url": "https://web3forms.usefulapi.io/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "web3forms-mcp": {
      "serverUrl": "https://web3forms.usefulapi.io/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Web3Forms MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Web3Forms MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing