ShipMyForm
VerifiedFeaturedRemoteAbout ShipMyForm
ShipMyForm's JavaScript libraries submit static-site forms to its hosted backend, with bindings for React, Vue, Svelte, Solid, and Astro. They provide typed results and client-side support for abuse-screening mechanisms.
Key features
- 01Framework-agnostic submission client
- 02React, Vue, Svelte, Solid, and Astro bindings
- 03Typed submission results
- 04Honeypot and Turnstile token support
- 05Optional signed time-trap token
Use cases
- 01Submit a static-site contact form
- 02Add form submission to a React app
- 03Send form data from a Svelte or Vue site
- 04Pass a Turnstile token with a submission
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://shipmyform.com/api/mcpclaude mcp add --transport http shipmyform https://shipmyform.com/api/mcp{"mcpServers":{"shipmyform":{"type":"http","url":"https://shipmyform.com/api/mcp"}}}Open in Cursor{"servers":{"shipmyform":{"type":"http","url":"https://shipmyform.com/api/mcp"}}}Open in VS Code{"mcpServers":{"shipmyform":{"type":"http","url":"https://shipmyform.com/api/mcp"}}}{"mcpServers":{"shipmyform":{"serverUrl":"https://shipmyform.com/api/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
https://shipmyform.com/api/mcpAuth requiredTools
29| Parameter | Type | Required | Description |
|---|---|---|---|
| string | Yes | The user's email address. Ask for it; never invent one. | |
| workspaceName | string | No | |
| agent | string | No | Your name, e.g. 'Claude Code', shown in the verification email. |
| preset | enum | No | Named scope bundle: full (everything), wiring (forms only, no submission access), readonly, triagefull | wiring | readonly | triage |
| scopes | array | No | Explicit scopes, instead of a preset. Ignored where it would exceed the calling key's own scopes. |
Details
From the project READMEshipmyform-js
Client libraries for submitting forms to ShipMyForm over fetch, with typed results and framework bindings.
| Package | Use |
|---|---|
@shipmyform/core | Framework-agnostic client and progressive enhancement |
@shipmyform/react | useSubmit hook |
@shipmyform/vue | useSubmit composable |
@shipmyform/svelte | store and use:shipmyform action |
@shipmyform/solid | createSubmit primitive |
@shipmyform/astro | <ShipMyForm> component |
Quick start
import { createClient } from '@shipmyform/core'
const form = createClient({ formId: 'YOUR_FORM_ID' })
const result = await form.submit({ email: '[email protected]', message: 'Hello' })
if (!result.ok) console.error(result.error, result.message)
React:
import { useSubmit } from '@shipmyform/react'
function Contact() {
const { submit, submitting, succeeded, error } = useSubmit({ formId: 'YOUR_FORM_ID' })
if (succeeded) return <p>Thanks!</p>
return (
<form onSubmit={(e) => (e.preventDefault(), submit(e.currentTarget))}>
<input name="email" type="email" required />
<textarea name="message" required />
<button disabled={submitting}>Send</button>
{error && <p>{error.message}</p>}
</form>
)
}
Abuse protection
ShipMyForm's endpoint is public and cross-origin, so there is no CSRF token to fetch. Requests are screened by an origin allowlist, a honeypot field (_gotcha), an optional Cloudflare Turnstile token, and rate limiting. The client keeps the honeypot empty, forwards a Turnstile token when you pass one, and can fetch a signed time-trap token through an optional tokenProvider.
Releasing
Published with Changesets. Include one in your PR:
pnpm changeset
Merging to main opens a "Version Packages" PR; merging that bumps versions and publishes to npm.
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.