# Form

URL: https://docs.hanzo.ai/docs/mcp-tools/form

> form: 27 operations.

Also for this capability: [API](https://docs.hanzo.ai/docs/openapi/form) · [CLI](https://docs.hanzo.ai/docs/cli/form) · **MCP** · [SDKs](https://docs.hanzo.ai/docs/sdks)

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

|               |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Tool**      | `form`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Address**   | `https://api.hanzo.ai/v1/mcp`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Method**    | `tools/call` (JSON-RPC 2.0)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Arguments** | 2, 1 required                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Operation** | `POST /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}` |
| **Product**   | [form](https://docs.hanzo.ai/docs/openapi/form)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

## Arguments

| Field   | Type     | Required | Default | Values | Description                 |
| ------- | -------- | -------- | ------- | ------ | --------------------------- |
| `input` | `object` | —        | —       | —      | arguments for the chosen op |
| `op`    | `string` | **yes**  | —       | —      | —                           |

`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.

```bash
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 →](https://docs.hanzo.ai/docs/mcp-tools#credentials)

## The operation behind it

`form` dispatches to 27 operations.

| Operation                | Route                                                                     | Product                                         | Summary                                                                                                                                                                                                                                                                                       |
| ------------------------ | ------------------------------------------------------------------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create_form`            | `POST /v1/form/forms`                                                     | [form](https://docs.hanzo.ai/docs/openapi/form) | Makes 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_theme`      | `POST /v1/form/themes`                                                    | [form](https://docs.hanzo.ai/docs/openapi/form) | Makes 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_webhook`    | `POST /v1/form/forms/{id}/webhooks`                                       | [form](https://docs.hanzo.ai/docs/openapi/form) | Adds 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_form`            | `DELETE /v1/form/forms/{id}`                                              | [form](https://docs.hanzo.ai/docs/openapi/form) | Deletes a form with every response, webhook and delivery it has, and the webhooks' signing secrets.                                                                                                                                                                                           |
| `delete_form_response`   | `DELETE /v1/form/forms/{id}/responses/{response}`                         | [form](https://docs.hanzo.ai/docs/openapi/form) | Deletes one response of a form, and its webhook deliveries.                                                                                                                                                                                                                                   |
| `delete_form_theme`      | `DELETE /v1/form/themes/{id}`                                             | [form](https://docs.hanzo.ai/docs/openapi/form) | Deletes a theme.                                                                                                                                                                                                                                                                              |
| `delete_form_webhook`    | `DELETE /v1/form/forms/{id}/webhooks/{webhook}`                           | [form](https://docs.hanzo.ai/docs/openapi/form) | Deletes a webhook, its deliveries and its secret.                                                                                                                                                                                                                                             |
| `export_form_responses`  | `GET /v1/form/forms/{id}/export`                                          | [form](https://docs.hanzo.ai/docs/openapi/form) | Exports 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_response`     | `POST /v1/form/forms/{id}/responses/{response}/file`                      | [form](https://docs.hanzo.ai/docs/openapi/form) | Files 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_form`               | `GET /v1/form/forms/{id}`                                                 | [form](https://docs.hanzo.ai/docs/openapi/form) | Reads one form of the caller's org, by its id or its slug.                                                                                                                                                                                                                                    |
| `get_form_response`      | `GET /v1/form/forms/{id}/responses/{response}`                            | [form](https://docs.hanzo.ai/docs/openapi/form) | Reads one response of a form.                                                                                                                                                                                                                                                                 |
| `get_form_theme`         | `GET /v1/form/themes/{id}`                                                | [form](https://docs.hanzo.ai/docs/openapi/form) | Reads one theme of the caller's org.                                                                                                                                                                                                                                                          |
| `get_form_webhook`       | `GET /v1/form/forms/{id}/webhooks/{webhook}`                              | [form](https://docs.hanzo.ai/docs/openapi/form) | Reads one webhook of a form.                                                                                                                                                                                                                                                                  |
| `get_public_form`        | `GET /v1/form/public/{id}`                                                | [form](https://docs.hanzo.ai/docs/openapi/form) | Reads 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_responses`  | `POST /v1/form/forms/{id}/import`                                         | [form](https://docs.hanzo.ai/docs/openapi/form) | Brings responses made elsewhere into a form, keeping when each was made, a batch of at most 500 at a time.                                                                                                                                                                                    |
| `list_form_deliveries`   | `GET /v1/form/forms/{id}/webhooks/{webhook}/deliveries`                   | [form](https://docs.hanzo.ai/docs/openapi/form) | Lists 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_responses`    | `GET /v1/form/forms/{id}/responses`                                       | [form](https://docs.hanzo.ai/docs/openapi/form) | Lists 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_themes`       | `GET /v1/form/themes`                                                     | [form](https://docs.hanzo.ai/docs/openapi/form) | Lists the caller org's themes by name.                                                                                                                                                                                                                                                        |
| `list_form_webhooks`     | `GET /v1/form/forms/{id}/webhooks`                                        | [form](https://docs.hanzo.ai/docs/openapi/form) | Lists a form's webhooks.                                                                                                                                                                                                                                                                      |
| `list_forms`             | `GET /v1/form/forms`                                                      | [form](https://docs.hanzo.ai/docs/openapi/form) | Lists 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_webhook` | `POST /v1/form/forms/{id}/webhooks/{webhook}/deliveries/{delivery}/retry` | [form](https://docs.hanzo.ai/docs/openapi/form) | Posts a delivery's response to its webhook again, now, and answers how it went.                                                                                                                                                                                                               |
| `replace_form`           | `PUT /v1/form/forms/{id}`                                                 | [form](https://docs.hanzo.ai/docs/openapi/form) | Replaces a form whole and answers it as stored.                                                                                                                                                                                                                                               |
| `replace_form_theme`     | `PUT /v1/form/themes/{id}`                                                | [form](https://docs.hanzo.ai/docs/openapi/form) | Replaces a theme whole; every form drawn in it is drawn in the new one.                                                                                                                                                                                                                       |
| `replace_form_webhook`   | `PUT /v1/form/forms/{id}/webhooks/{webhook}`                              | [form](https://docs.hanzo.ai/docs/openapi/form) | Replaces a webhook's tag, address and whether it is enabled.                                                                                                                                                                                                                                  |
| `submit_form_response`   | `POST /v1/form/public/{id}/responses`                                     | [form](https://docs.hanzo.ai/docs/openapi/form) | Answers a published form.                                                                                                                                                                                                                                                                     |
| `summarize_form`         | `GET /v1/form/forms/{id}/summary`                                         | [form](https://docs.hanzo.ai/docs/openapi/form) | Sums 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_form`            | `PATCH /v1/form/forms/{id}`                                               | [form](https://docs.hanzo.ai/docs/openapi/form) | Changes 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](https://docs.hanzo.ai/docs/openapi/form), on `https://api.hanzo.ai`.

---

[All 127 tools](https://docs.hanzo.ai/docs/mcp-tools/all-tools) · [MCP](https://docs.hanzo.ai/docs/mcp-tools) · [API reference](https://docs.hanzo.ai/docs/openapi)

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