# Tools reference

> The 10 tools the Formclick MCP server provides, the scope each needs, and their arguments.

Source: https://docs.formclick.io/mcp/mcp-tools

Your assistant only sees the tools your approval allows. Read-only access shows the first six; read + write access adds the rest.

| Tool | Scope | What it does |
| --- | --- | --- |
| `list_forms` | `forms:read` | List your HTML Forms with IDs, status, submission counts and dashboard links. |
| `get_form` | `forms:read` | One form’s endpoint, access key, notification emails, redirect URL, success message and webhooks. |
| `get_embed_snippet` | `forms:read` | Ready-to-paste HTML `<form>` and `fetch()` code for a form. |
| `list_submissions` | `submissions:read` | Submissions, newest first, with search, date range and filters. |
| `get_submission` | `submissions:read` | One submission with all its field values. |
| `get_usage` | `usage:read` | Your plan, submissions used this period and number of forms. |
| `create_html_form` | `forms:write` | Create a form and return its endpoint, access key and snippets. |
| `update_form_settings` | `forms:write` | Change name, notification emails, redirect URL, success message or active status. |
| `add_webhook` | `webhooks:write` | Send each new submission to a URL as JSON. |
| `remove_webhook` | `webhooks:write` | Remove a webhook from a form. |

## list_submissions

| Argument | Type | Description |
| --- | --- | --- |
| `form_id` | uuid | **Required.** From `list_forms`. |
| `page` | integer | Page number, from 1. |
| `limit` | integer | Results per page, default 20, max 50. |
| `search` | string | Case-insensitive text matched in any field. |
| `from` / `to` | ISO 8601 | Only submissions in this time range. |
| `filter` | enum | `all`, `unread`, `read`, `starred`, `spam` or `archived`. |

## create_html_form

| Argument | Type | Description |
| --- | --- | --- |
| `name` | string | **Required.** Up to 120 characters. |
| `description` | string | Optional internal description. |
| `fields` | field[] | Up to 30 inputs for the generated snippet (see below). |
| `submit_text` | string | Submit button label. |
| `notification_emails` | string[] | Up to 5 recipients. Default: your account email. |
| `redirect_url` | url | Where visitors go after submitting. |

A **field** has `name` (required), `label`, `type` (`text`, `email`, `tel`, `url`, `number`, `date`, `textarea`, `select`, `checkbox`), `required`, `placeholder` and `options` (for selects).

## update_form_settings

| Argument | Type | Description |
| --- | --- | --- |
| `form_id` | uuid | **Required.** |
| `name` | string | New name. |
| `notification_emails` | string[] | 1–5 recipients. |
| `redirect_url` | url \| null | `null` removes the redirect. |
| `success_message` | string | Up to 500 characters. |
| `is_active` | boolean | `false` pauses the form. |

Only the arguments you pass are changed.

## add_webhook

| Argument | Type | Description |
| --- | --- | --- |
| `form_id` | uuid | **Required.** |
| `url` | url | **Required.** Must be a public internet address. |
| `name` | string | Label shown in the dashboard. |
| `method` | enum | `POST`, `PUT`, `PATCH` or `GET`. |
| `headers` | object | Custom headers, e.g. `Authorization`. |
| `events` | enum[] | `submission.created`. |

The payload is described in [Webhook events](https://docs.formclick.io/api-reference/webhook-events). `remove_webhook` takes `form_id` and `webhook_id` (from `get_form`).

## Other tools

- `list_forms` and `get_usage` take no arguments.
- `get_form` takes `form_id`.
- `get_embed_snippet` takes `form_id`, optional `fields` and `submit_text`.
- `get_submission` takes `form_id` and `submission_id`.
