Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,523Letters: 13Defects: 1,322counted 2 min ago
teppi

Server definition

Hash
sha256:ecac1863d247f612591b8965e2c66a449e94294cf0d4ff7977b1fcdcae0ddbf6
What it is
What a remote MCP server returned when asked what it offers: 29 tools

The blob, as servednamed by its sha256

{ "instructions": "ShipMyForm is an AI-native form backend: forms POST to https://shipmyform.com/f/<formId>; submissions are spam-filtered, stored, and routed to email, Slack, Sheets, Notion, webhooks and more. Everything the dashboard does is a tool here. No account yet? Ask the user for their email and call sign_up (never invent an address), keep the returned API key, reconnect with it, then verify_account with the emailed code. Then create_form → get_form_snippet to wire a site, add_connector to route submissions, publish_hosted_page for a standalone page. Free plans can do all of that; reading, classifying (label_submissions) and exporting submissions needs a paid plan, which start_upgrade sets up. Keys are scoped: get_account shows what yours may do, and a tool refusing with a scope error means you need a key the user creates — you cannot widen your own. When you only need to wire a form up, ask for preset 'wiring' at sign_up so you never hold access to the user's submissions. Docs: https://shipmyform.com/docs/mcp", "tools": [ { "description": "Route 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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "config": { "additionalProperties": {}, "description": "Field values keyed by the config field names", "propertyNames": { "type": "string" }, "type": "object" }, "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" }, "type": { "description": "Connector type from list_connector_types, e.g. 'slack'", "type": "string" } }, "required": [ "formId", "type", "config" ], "type": "object" }, "name": "add_connector", "outputSchema": null }, { "description": "Mint 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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "name": { "maxLength": 80, "minLength": 1, "type": "string" }, "preset": { "description": "Named scope bundle: full (everything), wiring (forms only, no submission access), readonly, triage", "enum": [ "full", "wiring", "readonly", "triage" ], "type": "string" }, "scopes": { "description": "Explicit scopes, instead of a preset. Ignored where it would exceed the calling key's own scopes.", "items": { "enum": [ "forms:read", "forms:write", "forms:delete", "submissions:read", "submissions:write", "submissions:delete", "account:manage" ], "type": "string" }, "type": "array" } }, "required": [ "name" ], "type": "object" }, "name": "create_api_key", "outputSchema": null }, { "description": "Create 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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "allowedDomains": { "description": "Sites allowed to submit, e.g. ['example.com']. Empty = any.", "items": { "type": "string" }, "maxItems": 20, "type": "array" }, "name": { "description": "Human-readable form name, e.g. 'Contact form'", "maxLength": 80, "minLength": 1, "type": "string" }, "purpose": { "description": "What the form is for, in a sentence. Helps the spam classifier.", "maxLength": 500, "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "create_form", "outputSchema": null }, { "description": "Delete a form; its endpoint stops accepting submissions.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" } }, "required": [ "formId" ], "type": "object" }, "name": "delete_form", "outputSchema": null }, { "description": "Permanently delete submissions (and their files).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "ids": { "items": { "type": "string" }, "maxItems": 200, "minItems": 1, "type": "array" } }, "required": [ "ids" ], "type": "object" }, "name": "delete_submissions", "outputSchema": null }, { "description": "All of a form's submissions (up to 2,000) as CSV text, optionally filtered by status.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" }, "status": { "enum": [ "ok", "spam", "flagged" ], "type": "string" } }, "required": [ "formId" ], "type": "object" }, "name": "export_submissions", "outputSchema": null }, { "description": "The account's email, verification state, plan, limits, usage and dashboard URL.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "get_account", "outputSchema": null }, { "description": "A self-service billing portal URL: change plan, update the card, cancel.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "get_billing_portal", "outputSchema": null }, { "description": "A form's full configuration, connectors and hosted-page status.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" } }, "required": [ "formId" ], "type": "object" }, "name": "get_form", "outputSchema": null }, { "description": "A copy-paste form snippet for a framework (html, react, vue, or fetch) wired to the form's endpoint.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" }, "framework": { "default": "html", "enum": [ "html", "react", "vue", "fetch" ], "type": "string" } }, "required": [ "formId" ], "type": "object" }, "name": "get_form_snippet", "outputSchema": null }, { "description": "One submission with spam signals and delivery history.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "submissionId": { "type": "string" } }, "required": [ "submissionId" ], "type": "object" }, "name": "get_submission", "outputSchema": null }, { "description": "Delivered / spam-held / flagged counts for a form, plus workspace quota usage. Works on every plan.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" } }, "required": [ "formId" ], "type": "object" }, "name": "get_submission_stats", "outputSchema": null }, { "description": "Mark 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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "ids": { "items": { "type": "string" }, "maxItems": 200, "minItems": 1, "type": "array" }, "label": { "enum": [ "ok", "spam", "flagged" ], "type": "string" } }, "required": [ "ids", "label" ], "type": "object" }, "name": "label_submissions", "outputSchema": null }, { "description": "API keys on this workspace (metadata only).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "list_api_keys", "outputSchema": null }, { "description": "Every destination submissions can be routed to, with the config fields each needs and which plan it requires.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "list_connector_types", "outputSchema": null }, { "description": "Connectors on a form with their status and last error.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" } }, "required": [ "formId" ], "type": "object" }, "name": "list_connectors", "outputSchema": null }, { "description": "The workspace's forms with their public endpoint URLs.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "list_forms", "outputSchema": null }, { "description": "Read 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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "countries": { "description": "ISO 3166 alpha-2 codes", "items": { "type": "string" }, "type": "array" }, "deliveryFailed": { "type": "boolean" }, "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" }, "hasFiles": { "type": "boolean" }, "limit": { "default": 25, "maximum": 100, "minimum": 1, "type": "integer" }, "offset": { "default": 0, "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "q": { "description": "Free-text search across field values", "type": "string" }, "since": { "description": "ISO date; received on/after", "type": "string" }, "sort": { "enum": [ "newest", "oldest", "score" ], "type": "string" }, "status": { "enum": [ "ok", "spam", "flagged" ], "type": "string" }, "until": { "description": "ISO date; received before", "type": "string" } }, "type": "object" }, "name": "list_submissions", "outputSchema": null }, { "description": "Publish 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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" } }, "required": [ "formId" ], "type": "object" }, "name": "publish_hosted_page", "outputSchema": null }, { "description": null, "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "connectorId": { "type": "string" } }, "required": [ "connectorId" ], "type": "object" }, "name": "remove_connector", "outputSchema": null }, { "description": "Email a fresh 6-digit verification code to the account's address.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "resend_verification_code", "outputSchema": null }, { "description": "Revoke a key by id. The key in use on this connection cannot revoke itself.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "keyId": { "type": "string" } }, "required": [ "keyId" ], "type": "object" }, "name": "revoke_api_key", "outputSchema": null }, { "description": null, "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "active": { "type": "boolean" }, "connectorId": { "type": "string" } }, "required": [ "connectorId", "active" ], "type": "object" }, "name": "set_connector_active", "outputSchema": null }, { "description": "Start 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).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "agent": { "description": "Your name, e.g. 'Claude Code', shown in the verification email.", "maxLength": 40, "type": "string" }, "email": { "description": "The user's email address. Ask for it; never invent one.", "type": "string" }, "preset": { "description": "Named scope bundle: full (everything), wiring (forms only, no submission access), readonly, triage", "enum": [ "full", "wiring", "readonly", "triage" ], "type": "string" }, "scopes": { "description": "Explicit scopes, instead of a preset. Ignored where it would exceed the calling key's own scopes.", "items": { "enum": [ "forms:read", "forms:write", "forms:delete", "submissions:read", "submissions:write", "submissions:delete", "account:manage" ], "type": "string" }, "type": "array" }, "workspaceName": { "maxLength": 80, "type": "string" } }, "required": [ "email" ], "type": "object" }, "name": "sign_up", "outputSchema": null }, { "description": "Get a hosted checkout URL for the Starter or Pro plan. Payment is completed by a person on that page; the plan activates automatically afterwards (check with get_account).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "period": { "default": "monthly", "enum": [ "monthly", "annual" ], "type": "string" }, "plan": { "enum": [ "starter", "pro" ], "type": "string" } }, "required": [ "plan" ], "type": "object" }, "name": "start_upgrade", "outputSchema": null }, { "description": "Send a test delivery through a connector and report the result.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "connectorId": { "type": "string" } }, "required": [ "connectorId" ], "type": "object" }, "name": "test_connector", "outputSchema": null }, { "description": null, "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" } }, "required": [ "formId" ], "type": "object" }, "name": "unpublish_hosted_page", "outputSchema": null }, { "description": "Change any subset of a form's settings: name, purpose, allowedDomains, redirectUrl, spamMode, active, storeSubmissions, validation rules, blocklist, autoResponder (Pro).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "active": { "type": "boolean" }, "allowedDomains": { "items": { "type": "string" }, "type": "array" }, "autoResponder": { "properties": { "enabled": { "type": "boolean" }, "message": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "subject": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "type": "object" }, "blocklist": { "description": "Emails, @domains or keywords that mark a submission as spam", "items": { "type": "string" }, "type": "array" }, "formId": { "description": "Form id, e.g. frm_abc123", "type": "string" }, "name": { "type": "string" }, "purpose": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "redirectUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Absolute URL visitors are sent to after submitting" }, "spamMode": { "enum": [ "basic", "strict" ], "type": "string" }, "storeSubmissions": { "type": "boolean" }, "validation": { "anyOf": [ { "additionalProperties": { "additionalProperties": {}, "propertyNames": { "type": "string" }, "type": "object" }, "propertyNames": { "type": "string" }, "type": "object" }, { "type": "null" } ], "description": "Server-side rules by field, e.g. { \"email\": { \"required\": true, \"type\": \"email\" }, \"message\": { \"minLength\": 10 } }. null clears." } }, "required": [ "formId" ], "type": "object" }, "name": "update_form", "outputSchema": null }, { "description": "Prove 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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "agent": { "maxLength": 40, "type": "string" }, "code": { "maxLength": 6, "minLength": 6, "type": "string" }, "email": { "description": "Required when not yet connected with a key", "type": "string" }, "preset": { "description": "Named scope bundle: full (everything), wiring (forms only, no submission access), readonly, triage", "enum": [ "full", "wiring", "readonly", "triage" ], "type": "string" }, "scopes": { "description": "Explicit scopes, instead of a preset. Ignored where it would exceed the calling key's own scopes.", "items": { "enum": [ "forms:read", "forms:write", "forms:delete", "submissions:read", "submissions:write", "submissions:delete", "account:manage" ], "type": "string" }, "type": "array" } }, "required": [ "code" ], "type": "object" }, "name": "verify_account", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:ecac1863d247f612591b8965e2c66a449e94294cf0d4ff7977b1fcdcae0ddbf6 | sha256sum