ShipMyForm
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Form backend as 29 tools: create endpoints, route submissions, publish pages, run the inbox.
| Author | com.shipmyform |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 3046 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"ShipMyForm": {
"url": "https://shipmyform.com/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (29)
sign_upStart a ShipMyForm account from an email address, with no browser. A 6-digit code is emailed to the address; verify_account with { email, code } then returns the API key. Works without authentication. Also works for an existing account (the code approves API access).
Parameters:
email(required) — string — The user's email address. Ask for it; never invent one.agent— string — Your name, e.g. 'Claude Code', shown in the verification email.preset— string — Named scope bundle: full (everything), wiring (forms only, no submission access), readonly, triagescopes— array — Explicit scopes, instead of a preset. Ignored where it would exceed the calling key's own scopes.workspaceName— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
verify_accountProve the address with the 6-digit code emailed by sign_up. Without a key on the connection, pass the email too: on success this returns the API key (shown once). Turns on email notifications.
Parameters:
code(required) — stringagent— stringemail— string — Required when not yet connected with a keypreset— string — Named scope bundle: full (everything), wiring (forms only, no submission access), readonly, triagescopes— array — Explicit scopes, instead of a preset. Ignored where it would exceed the calling key's own scopes.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
resend_verification_codeEmail a fresh 6-digit verification code to the account's address.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_accountThe account's email, verification state, plan, limits, usage and dashboard URL.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_api_keyMint another API key for this workspace (shown once), optionally narrower than this one. A key can never grant scopes it does not itself hold, so this is the safe way to hand a limited key to another agent.
Parameters:
name(required) — stringpreset— string — Named scope bundle: full (everything), wiring (forms only, no submission access), readonly, triagescopes— array — Explicit scopes, instead of a preset. Ignored where it would exceed the calling key's own scopes.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_api_keysAPI keys on this workspace (metadata only).
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
revoke_api_keyRevoke a key by id. The key in use on this connection cannot revoke itself.
Parameters:
keyId(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
start_upgradeGet a hosted checkout URL for the Starter or Business plan. Payment is completed by a person on that page; the plan activates automatically afterwards (check with get_account).
Parameters:
plan(required) — stringperiod— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_billing_portalA self-service billing portal URL: change plan, update the card, cancel.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_formsThe workspace's forms with their public endpoint URLs.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_formCreate a form and get its endpoint plus a paste-ready HTML snippet. Email notifications to the account owner are set up automatically. Works on every plan.
Parameters:
name(required) — string — Human-readable form name, e.g. 'Contact form'purpose— string — What the form is for, in a sentence. Helps the spam classifier.allowedDomains— array — Sites allowed to submit, e.g. ['example.com']. Empty = any.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_formA form's full configuration, connectors and hosted-page status.
Parameters:
formId(required) — string — Form id, e.g. frm_abc123
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
update_formChange any subset of a form's settings: name, purpose, allowedDomains, redirectUrl, spamMode, active, storeSubmissions, validation rules, blocklist, autoResponder (Pro).
Parameters:
formId(required) — string — Form id, e.g. frm_abc123name— stringactive— booleanpurposespamMode— string — How hard this form filters: minimal (nothing is filtered, paid plans only), relaxed (flag but always deliver), standard, strict. Abuse protection — rate limits, honeypot — is unaffected.blocklist— array — Emails, @domains or keywords that mark a submission as spamvalidation— Server-side rules by field, e.g. { "email": { "required": true, "type": "email" }, "message": { "minLength": 10 } }. null clears.redirectUrl— Absolute URL visitors are sent to after submittingautoResponder— objectallowedDomains— arraystoreSubmissions— boolean
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
delete_formDelete a form; its endpoint stops accepting submissions.
Parameters:
formId(required) — string — Form id, e.g. frm_abc123
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_form_snippetA copy-paste form snippet for a framework (html, react, vue, or fetch) wired to the form's endpoint.
Parameters:
formId(required) — string — Form id, e.g. frm_abc123framework— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_submission_statsDelivered / spam-held / flagged counts for a form, plus workspace quota usage. Works on every plan.
Parameters:
formId(required) — string — Form id, e.g. frm_abc123
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_connector_typesEvery destination submissions can be routed to, with the config fields each needs and which plan it requires.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_connectorsConnectors on a form with their status and last error.
Parameters:
formId(required) — string — Form id, e.g. frm_abc123
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
add_connectorRoute a form's submissions somewhere: email, webhook, Slack, Discord, Airtable, HubSpot, Telegram and more. Get the config fields from list_connector_types. OAuth connectors (Google Sheets, Notion) must be added in the dashboard.
Parameters:
formId(required) — string — Form id, e.g. frm_abc123type(required) — string — Connector type from list_connector_types, e.g. 'slack'config(required) — object — Field values keyed by the config field names
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
test_connectorSend a test delivery through a connector and report the result.
Parameters:
connectorId(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
set_connector_activeParameters:
connectorId(required) — stringactive(required) — boolean
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
remove_connectorParameters:
connectorId(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
publish_hosted_pagePublish a standalone page for the form on shipmyform.com (no website needed) and get its URL plus an embed script. Uses the designed page if one exists, otherwise a default email + message form.
Parameters:
formId(required) — string — Form id, e.g. frm_abc123
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
unpublish_hosted_pageParameters:
formId(required) — string — Form id, e.g. frm_abc123
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_submissionsRead submissions across the workspace or for one form, with filters (status, date range, text search, country, attachments, failed deliveries) and paging. Spam is excluded unless status is 'spam'. Requires a paid plan.
Parameters:
q— string — Free-text search across field valuessort— stringlimit— integersince— string — ISO date; received on/afteruntil— string — ISO date; received beforeformId— string — Form id, e.g. frm_abc123offset— integerstatus— stringhasFiles— booleancountries— array — ISO 3166 alpha-2 codesdeliveryFailed— boolean
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_submissionOne submission with spam signals and delivery history.
Parameters:
submissionId(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
label_submissionsMark submissions as spam, ok (not spam) or flagged. spam/ok also teach the classifier, so your judgement improves future filtering. This is how you triage in your own environment: list, decide, label.
Parameters:
ids(required) — arraylabel(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
delete_submissionsPermanently delete submissions (and their files).
Parameters:
ids(required) — array
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
export_submissionsAll of a form's submissions (up to 2,000) as CSV text, optionally filtered by status.
Parameters:
formId(required) — string — Form id, e.g. frm_abc123status— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.