Form

form: 27 operations.

Also for this capability: API · CLI · MCP · SDKs

form: 27 operations. Name one in "op" and pass that operation's own arguments in "input". describe returns an operation's input schema.

Toolform
Addresshttps://api.hanzo.ai/v1/mcp
Methodtools/call (JSON-RPC 2.0)
Arguments2, 1 required
OperationPOST /v1/form/forms · POST /v1/form/themes · POST /v1/form/forms/{id}/webhooks · DELETE /v1/form/forms/{id} · DELETE /v1/form/forms/{id}/responses/{response} · DELETE /v1/form/themes/{id} · DELETE /v1/form/forms/{id}/webhooks/{webhook} · GET /v1/form/forms/{id}/export · POST /v1/form/forms/{id}/responses/{response}/file · GET /v1/form/forms/{id} · GET /v1/form/forms/{id}/responses/{response} · GET /v1/form/themes/{id} · GET /v1/form/forms/{id}/webhooks/{webhook} · GET /v1/form/public/{id} · POST /v1/form/forms/{id}/import · GET /v1/form/forms/{id}/webhooks/{webhook}/deliveries · GET /v1/form/forms/{id}/responses · GET /v1/form/themes · GET /v1/form/forms/{id}/webhooks · GET /v1/form/forms · POST /v1/form/forms/{id}/webhooks/{webhook}/deliveries/{delivery}/retry · PUT /v1/form/forms/{id} · PUT /v1/form/themes/{id} · PUT /v1/form/forms/{id}/webhooks/{webhook} · POST /v1/form/public/{id}/responses · GET /v1/form/forms/{id}/summary · PATCH /v1/form/forms/{id}
Productform

Arguments

FieldTypeRequiredDefaultValuesDescription
inputobject———arguments for the chosen op
opstringyes———

tools/list declares a type, a description, which fields are required and an enumerated value set for each field and nothing further, and every column above is MCP's own. This tool takes an operation name and that operation's arguments, so what the document constrains is what goes inside input, field by field, on the operation you name — ask describe for that. A — means MCP does not constrain the field.

Call it

A tools/call carries every argument in one flat object — nothing binds to a path or a query string. This call carries exactly the arguments the operation requires, so it is the smallest one that can run.

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "form",
         "arguments": {
           "op": "get_form"
         }
       }
     }'

Values are the operation's own defaults and enumerated values where it declares them, and a <placeholder> where neither source declares one. tools/list needs no credential; tools/call does — called without one MCP answers HTTP 200 with a JSON-RPC result whose isError is set and whose text says what was missing. How to get a key →

The operation behind it

form dispatches to 27 operations.

OperationRouteProductSummary
create_formPOST /v1/form/formsformMakes a form in the caller's org and answers it as stored, its fields' ids assigned and its defaults filled: kind form, visibility public, language en, one question at a time, and the platform's default sinks when it names none.
create_form_themePOST /v1/form/themesformMakes a theme in the caller's org: a name, four colours (#rrggbb), a font family and an https background image, each optional but the name.
create_form_webhookPOST /v1/form/forms/{id}/webhooksformAdds a webhook to a form: every completed response is posted to its https address as JSON, signed with Hanzo-Signature: t=<unix seconds>,sha256=<base64 of HMAC-SHA256(secret, "<seconds>." + body)>; a receiver refuses a timestamp older than five minutes and an event_id it has seen.
delete_formDELETE /v1/form/forms/{id}formDeletes a form with every response, webhook and delivery it has, and the webhooks' signing secrets.
delete_form_responseDELETE /v1/form/forms/{id}/responses/{response}formDeletes one response of a form, and its webhook deliveries.
delete_form_themeDELETE /v1/form/themes/{id}formDeletes a theme.
delete_form_webhookDELETE /v1/form/forms/{id}/webhooks/{webhook}formDeletes a webhook, its deliveries and its secret.
export_form_responsesGET /v1/form/forms/{id}/exportformExports a form's responses as JSON or CSV, a page of up to 5000 at a time under the same filter a listing takes; next is the page to ask for after it, 0 at the end.
file_form_responsePOST /v1/form/forms/{id}/responses/{response}/fileformFiles a completed response on the CRM's timeline now, and answers the response with whether it is filed and, when it is not, why.
get_formGET /v1/form/forms/{id}formReads one form of the caller's org, by its id or its slug.
get_form_responseGET /v1/form/forms/{id}/responses/{response}formReads one response of a form.
get_form_themeGET /v1/form/themes/{id}formReads one theme of the caller's org.
get_form_webhookGET /v1/form/forms/{id}/webhooks/{webhook}formReads one webhook of a form.
get_public_formGET /v1/form/public/{id}formReads a published form as its page draws it: the questions, the screens, the hidden values it takes, how it is answered and its theme.
import_form_responsesPOST /v1/form/forms/{id}/importformBrings responses made elsewhere into a form, keeping when each was made, a batch of at most 500 at a time.
list_form_deliveriesGET /v1/form/forms/{id}/webhooks/{webhook}/deliveriesformLists a webhook's deliveries, newest first: each response posted, how many attempts it took, the last status the address answered and why it failed.
list_form_responsesGET /v1/form/forms/{id}/responsesformLists a form's responses, newest first, a page at a time: since and until bound when they were made, completed keeps the finished or the open ones, query keeps the ones whose answers hold it, and included_response_ids and excluded_response_ids keep or drop named ones.
list_form_themesGET /v1/form/themesformLists the caller org's themes by name.
list_form_webhooksGET /v1/form/forms/{id}/webhooksformLists a form's webhooks.
list_formsGET /v1/form/formsformLists the caller org's forms, newest first, a page at a time; search keeps the forms whose title holds it and tag the ones carrying it.
redeliver_form_webhookPOST /v1/form/forms/{id}/webhooks/{webhook}/deliveries/{delivery}/retryformPosts a delivery's response to its webhook again, now, and answers how it went.
replace_formPUT /v1/form/forms/{id}formReplaces a form whole and answers it as stored.
replace_form_themePUT /v1/form/themes/{id}formReplaces a theme whole; every form drawn in it is drawn in the new one.
replace_form_webhookPUT /v1/form/forms/{id}/webhooks/{webhook}formReplaces a webhook's tag, address and whether it is enabled.
submit_form_responsePOST /v1/form/public/{id}/responsesformAnswers a published form.
summarize_formGET /v1/form/forms/{id}/summaryformSums up a form's responses: how many were begun and completed, and for each field how many answered it, the distribution of what was said (choices, points, yes and no), the mean, least and most of a number, and how many open responses stopped in front of it.
update_formPATCH /v1/form/forms/{id}formChanges the parts of a form the body names and keeps the rest, then answers it as stored.

The same capability over plain HTTP is in the form API reference, on https://api.hanzo.ai.


All 127 tools · MCP · API reference

Generated from tools/list on https://api.hanzo.ai/v1/mcp — 127 tools captured 2026-11-10.

Was this page useful?
Broken link or missing step? Drop it in #docs on Discord or open a PR.