{"serverId":"mcp-registry/com.formpaste/formpaste","tools":[{"name":"create_form","fixed":{"name":"create_form","description":"Create a Formpaste form and return its access key + a wired snippet. Triggers destination verification for a new address (the owner completes it in the dashboard); an already-verified destination delivers immediately. Errors with: unauthorized, upgrade_required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name","destinationEmail"],"properties":{"name":{"type":"string","description":"A human-readable name for the form, e.g. \"Contact form\"."},"framework":{"enum":["html","react","nextjs","astro","vue","svelte"],"type":"string","description":"Target framework for the returned snippet. Defaults to html."},"destinationEmail":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Where submissions are emailed. Must be verified before delivery starts."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":267,"tokensAfter":267},{"name":"get_form","fixed":{"name":"get_form","description":"Read one of your forms to verify it is wired correctly: returns its access_key, destination_email, destination_verified (whether submissions will be emailed yet), allowed_domains, and notification/autoresponder/webhook config. Never returns the webhook signing secret. Errors with: unauthorized, not_found.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["formId"],"properties":{"formId":{"type":"string","description":"A form id from create_form or list_forms, e.g. frm_..."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":156,"tokensAfter":156},{"name":"get_snippet","fixed":{"name":"get_snippet","description":"Return a copy-paste form snippet for a framework (html, react, nextjs, astro, vue, svelte). Pass formId to fill in a real access key; otherwise a placeholder is used. Errors with: unauthorized, invalid_framework.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["framework"],"properties":{"formId":{"type":"string","description":"An owned form id to fill in the real access key; omit for a placeholder."},"framework":{"enum":["html","react","nextjs","astro","vue","svelte"],"type":"string","description":"Target framework for the snippet."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":175,"tokensAfter":175},{"name":"list_forms","fixed":{"name":"list_forms","description":"List all forms on your account, each with its id, name, access_key, and inbox/spam counts. Use this to discover form ids or confirm a form you just created exists. Errors with: unauthorized.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":92,"tokensAfter":92},{"name":"list_submissions","fixed":{"name":"list_submissions","description":"List submissions for one of your forms. Returns counts + per-submission metadata by default; set includeContent to include message bodies (third-party PII). Errors with: unauthorized, not_found, forbidden. Requires a full-access token.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["formId"],"properties":{"limit":{"type":"number","description":"Maximum number of submissions to return."},"folder":{"enum":["inbox","spam"],"type":"string","description":"Which folder to list. Defaults to inbox."},"formId":{"type":"string","description":"A form id from create_form or list_forms, e.g. frm_..."},"includeContent":{"type":"boolean","description":"Include full submission message bodies (third-party PII). Defaults to false."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":228,"tokensAfter":228},{"name":"send_test_submission","fixed":{"name":"send_test_submission","description":"Store a TEST submission so you can prove a form is live and receiving. Stored only: it appears in the owner's Inbox with a Test badge but sends NO email, runs NO spam scoring, and never counts toward quota. Optionally pass sample fields; omit to use a default payload. Capped at the 5 newest test rows per form. Errors with: unauthorized, not_found, invalid_input, too_many_fields, field_too_large.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["formId"],"properties":{"fields":{"type":"object","description":"Optional sample form fields as a flat string map, e.g. { name, email, message }. Omit to use a default test payload.","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"formId":{"type":"string","description":"A form id from create_form or list_forms, e.g. frm_..."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":250,"tokensAfter":250}],"toolsChanged":6,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}