Reference · MCP server

The 26 tools of the anota MCP server

This is exactly what Claude and Claude Code can do in your anota account: every tool, what it needs, and an example of how to ask for it.

Endpoint
https://anota.cloud/mcp
Authentication
Authorization: Bearer anota_sk_… Your anota API key.

Forms

Create, inspect, edit, publish, and trash. Changes go to the draft until you publish.

list_forms

Read-only

Lists the forms in your workspace (drafts and published, archived ones excluded) with their status, submission count, and public link.

InputsNone

Ask like this Which forms do I have, and how many responses does each one have?

Technical details

Description the model receives:

Lists all forms in the workspace (drafts and published; archived forms are excluded), most recently updated first. Each row includes the form id to use with the other tools, its status, submission count, and the public fill-out URL.

readOnlyHint: true

get_form

Read-only

Shows the full structure of a form's draft: pages, fields, options, and logic rules.

Inputs
  • formId

Ask like this Show me the fields on the registration form.

Technical details

Description the model receives:

Gets a form's full structure from its current draft: title, status, PDF template, every page with its fields (id, type, label, required flag, and the option values/labels of choice fields), and every conditional logic rule (id, conditions, actions) currently on the form, plus its email notifications (id, type, enabled flag, recipients) and a note saying who is emailed when a submission arrives.

readOnlyHint: true

formId string · required
Form id (GUID).

create_form

Modifies data

Creates a new form as a private draft, with its title and fields on a single page.

Inputs
  • title
  • fields
  • descriptionoptional
  • languageoptional

Ask like this Create a contact form with name, email, and message.

Technical details

Description the model receives:

Creates a new draft form with the given title and fields on a single page. Choice fields (dropdown, radio, checkbox) need 'options'; matrix fields take 'rows' and 'columns'. The form starts as a private draft — the owner can refine it at the returned builder URL, and publishing it makes it publicly fillable.

readOnlyHint: false · destructiveHint: false

title string · required
Form title shown to respondents, e.g. "Solicitud de empleo".
fields array · required
Fields to add, in display order.
description string · optional
Optional intro text shown at the top of the form, under the title.
language string · optional
The language the title and field texts are written in: "es" (Spanish, the default), "en" (English) or "pt" (Portuguese). It becomes the form's base language, which respondents, emails and PDFs fall back to.

add_fields

Modifies data

Appends fields to the end of the draft. Works on published forms too; the changes go live when you publish again.

Inputs
  • formId
  • fields

Ask like this Add an optional phone field to the contact form.

Technical details

Description the model receives:

Appends fields to the end of a form's draft (its last page). Uses the same field format as form creation. Changes affect the draft only and go live when the form is published.

readOnlyHint: false · destructiveHint: false

formId string · required
Form id (GUID).
fields array · required
Fields to append, in display order.

edit_field

Destructive

Replaces a field's definition, keeping its id and position. Only on forms that have never been published: publishing locks the fields.

Inputs
  • formId
  • fieldId
  • field

Ask like this Change the “Size” field to a dropdown with S, M, and L.

Technical details

Description the model receives:

Replaces an existing field's definition (type, label, required, options, etc.) in a form's draft, keeping its id and position. Only allowed while the form has never been published — once a form is published its existing fields are locked, since respondents may already have submitted answers shaped by them; appending new fields still works on a published form's draft. Uses the same field format as form creation.

readOnlyHint: false · destructiveHint: true

formId string · required
Form id (GUID).
fieldId string · required
Id of the field to replace (e.g. "f_a1b2c3").
field object · required
The field's new definition, replacing the old one entirely.

delete_field

Destructive

Removes a field from the draft and strips it from any logic rules that used it. Only on forms that have never been published.

Inputs
  • formId
  • fieldId

Ask like this Remove the “Company” field from the sign-up form.

Technical details

Description the model receives:

Removes a field from a form's draft. Only allowed while the form has never been published — once a form is published its existing fields are locked, since respondents may already have submitted answers for them. If any logic rule referenced this field, that reference is stripped from the rule (and the rule itself removed if nothing is left of it) rather than blocking the delete.

readOnlyHint: false · destructiveHint: true

formId string · required
Form id (GUID).
fieldId string · required
Id of the field to delete (e.g. "f_a1b2c3").

rename_form

Modifies data

Changes a form's title. Submissions stay the same; the public link follows the new title only while the form has never been published.

Inputs
  • formId
  • newTitle

Ask like this Rename the survey to “Satisfaction survey 2026”.

Technical details

Description the model receives:

Renames a form. Existing submissions are never affected. The public URL (slug) follows the new title while the form has never been published; once it has been published the URL stays the same, since people may already have the link.

readOnlyHint: false · destructiveHint: false · idempotentHint: true

formId string · required
Form id (GUID).
newTitle string · required
The new form title.

clone_form

Modifies data

Duplicates a form as a new draft with its own public link, without copying submissions. It's the way to change the locked fields of a published form.

Inputs
  • formId

Ask like this Duplicate the order form so I can change its fields.

Technical details

Description the model receives:

Duplicates a form: the clone is a new Draft with a fresh public URL, copying the source's current draft (pages, fields, logic rules, PDF template). Versions and submissions are not copied. Because the clone has never been published, all of its fields are editable — cloning is the way to "edit" the locked fields of a published form without touching its existing submissions.

readOnlyHint: false · destructiveHint: false

formId string · required
Form id (GUID).

publish_form

Modifies data

Publishes the draft so it can be filled out at its public link. If it was already published, the changes go live as a new version and submissions are kept.

Inputs
  • formId

Ask like this Publish the registration form and give me the link.

Technical details

Description the model receives:

Publishes the form's current draft so it can be filled out at its public URL. Publishing an already-published form pushes the latest draft changes live as a new version; existing submissions are kept. Unless the form has an enabled email notification, each submission is emailed to the workspace owner.

readOnlyHint: false · destructiveHint: false

formId string · required
Form id (GUID).

set_pdf_template

Modifies data

Picks the PDF layout used when the form's submissions are exported. An unknown key returns the list of valid ones.

Inputs
  • formId
  • key

Ask like this Use the “classic” PDF template for the order form.

Technical details

Description the model receives:

Sets the PDF layout used when this form's submissions are exported as PDF documents. Pass one of the catalog keys; an unknown key returns the list of valid ones.

readOnlyHint: false · destructiveHint: false · idempotentHint: true

formId string · required
Form id (GUID).
key string · required
PDF template key, e.g. "classic".

delete_form

Destructive

Moves a form to the Trash: it stops accepting responses, but its submissions are kept and you can restore it from the app.

Inputs
  • formId

Ask like this Move the test form to the trash.

Technical details

Description the model receives:

Moves a form to the Trash. The form disappears from lists and its public URL stops accepting responses, but nothing is destroyed: submissions are kept and the owner can restore the form from the Trash in the app. It no longer counts against the workspace's plan form limit while trashed.

readOnlyHint: false · destructiveHint: true

formId string · required
Form id (GUID).

Templates

Start from a template in the anota gallery instead of from scratch.

list_templates

Read-only

Lists the public templates in Spanish, English, or Portuguese, grouped by category.

Inputs
  • languageoptional

Ask like this Which event templates do you have in English?

Technical details

Description the model receives:

Lists the ready-made public form templates available in a language ('es' Spanish — the default, 'en' English, 'pt' Portuguese), grouped by category. Each returned id identifies a template that can be copied into the workspace.

readOnlyHint: true

language string · optional
Template language: 'es' (default), 'en', or 'pt'.

create_form_from_template

Modifies data

Creates a draft in your workspace by copying a template's full structure.

Inputs
  • templateId

Ask like this Create a form from the job application template.

Technical details

Description the model receives:

Creates a new draft form in the workspace by copying a template's full structure. The draft can then be adjusted and published like any other form.

readOnlyHint: false · destructiveHint: false

templateId string · required
Template id (GUID).

Conditional logic

Rules that react to answers. They're saved to the draft; publish to make them live.

add_logic_rules

Modifies data

Adds conditional rules: show or hide fields, make them required, skip to a page, calculate values, email a copy, show a thank-you message, or redirect.

Inputs
  • formId
  • rules

Ask like this If they answer “Yes” to “Do you have a car?”, show the “License plate” field.

Technical details

Description the model receives:

Adds conditional logic rules to a form's draft: when a rule's conditions match the respondent's answers, its actions run (show/hide a field, require/unrequire it, enable/disable it, copy another field's value into it, skip to a page, calculate a numeric field from a formula, route a copy of the submission email to an address, show a conditional thank-you message, or redirect to a URL after submit). Rules run in the order given here, after any rules the form already has; a later rule can override an earlier one's show/hide/require/enable/skipToPage/calculate result for the same target. setThankYou/redirectTo are the exception: the FIRST matching rule wins, later matches are ignored. A rule can be added disabled (kept on the form but never evaluated) via 'disabled'. Works on a published form's draft too; new rules go live when the form is published again.

readOnlyHint: false · destructiveHint: false

formId string · required
Form id (GUID).
rules array · required
Rules to add, in the order they should run.

edit_logic_rule

Destructive

Replaces a rule's conditions, actions, and enabled/disabled state, keeping its id and order.

Inputs
  • formId
  • ruleId
  • rule

Ask like this Disable the rule that shows the “License plate” field.

Technical details

Description the model receives:

Replaces an existing logic rule's conditions, actions, and disabled flag, keeping its id and position among the form's rules. Uses the same rule format as adding logic rules.

readOnlyHint: false · destructiveHint: true

formId string · required
Form id (GUID).
ruleId string · required
Id of the rule to replace (e.g. "lr_a1b2c3").
rule object · required
The rule's new definition, replacing the old one entirely.

delete_logic_rule

Destructive

Removes a logic rule from the form's draft.

Inputs
  • formId
  • ruleId

Ask like this Delete the rule that redirects after the form is submitted.

Technical details

Description the model receives:

Removes a logic rule from a form's draft.

readOnlyHint: false · destructiveHint: true

formId string · required
Form id (GUID).
ruleId string · required
Id of the rule to delete (e.g. "lr_a1b2c3").

Submissions

Read, count, create, and triage your forms' submissions.

list_submissions

Read-only

Lists a form's submissions, newest first, with paging and filters by status and payment.

Inputs
  • formId
  • pageoptional
  • pageSizeoptional
  • statusoptional
  • paymentoptional

Ask like this Show me the flagged responses on the contact form.

Technical details

Description the model receives:

Lists a form's submissions, newest first, with a short preview of each answer set. Supports paging, an optional status filter and an optional payment filter (by default unpaid Stripe payment submissions are hidden). Each row's id identifies the submission whose full labelled answers can be read.

readOnlyHint: true

formId string · required
Form id (GUID).
page integer · optional
1-based page number. Default 1.
pageSize integer · optional
Rows per page, 1-100. Default 25.
status string · optional
Optional status filter: New, Read, Flagged, or Spam. Omit for all.
payment string · optional
Optional payment filter: 'paid' (payment collected) or 'unpaid' (abandoned checkouts, kept 30 days). Omit for the default view, which hides unpaid ones.

get_submission

Read-only

Shows one full submission as readable question-and-answer pairs.

Inputs
  • submissionId

Ask like this Open the latest response on the order form.

Technical details

Description the model receives:

Gets one submission's full answers as human-readable label/value pairs, resolved against the form version it was submitted to (composite and choice answers are joined into readable strings).

readOnlyHint: true

submissionId string · required
Submission id (GUID).

submission_stats

Read-only

A form's statistics: total, counts per status, daily responses for the last 7 days, and payments (paid and unpaid).

Inputs
  • formId

Ask like this How many responses did the survey get each day over the last week?

Technical details

Description the model receives:

Submission statistics for a form: total count, counts per status (New/Read/Flagged/Spam), daily submission counts for the last 7 days (UTC dates, zero-filled), and Stripe payment counts (paid / unpaid). Unpaid payment submissions are excluded from the total, per-status and daily counts.

readOnlyHint: true

formId string · required
Form id (GUID).

create_submission

Modifies data

Submits a response to a published form as if someone filled it in: it's validated, plan limits apply, and emails and webhooks fire. On payment forms it returns a Stripe checkout link, and emails and webhooks wait until it's paid.

Inputs
  • formId
  • answers

Ask like this Create a test response on the order form to try out the webhook.

Technical details

Description the model receives:

Creates a submission on a published form, as if a respondent had filled it: answers are validated against the live version (required fields, formats; logic-hidden fields are exempt), plan quotas are enforced, and the normal post-submit pipeline (notification emails, webhooks) runs. Keys are the form's field ids; values are strings, or arrays of strings for multi-choice fields.

readOnlyHint: false · destructiveHint: false

formId string · required
Form id (GUID).
answers object · required
Answers keyed by field id, e.g. {"f_a1b2c3": "Ana", "f_d4e5f6": ["A","B"]}.

set_submission_status

Modifies data

Changes a submission's inbox status: new, read, flagged, or spam. The answers themselves are never modified.

Inputs
  • submissionId
  • status

Ask like this Mark the latest response on the contact form as spam.

Technical details

Description the model receives:

Sets a submission's inbox status: New, Read, Flagged, or Spam. Only the status label changes — the submitted answers are never modified.

readOnlyHint: false · destructiveHint: false · idempotentHint: true

submissionId string · required
Submission id (GUID).
status string · required
New status: New, Read, Flagged, or Spam.

delete_submission

Destructive

Permanently deletes a submission and its uploaded files. It can't be undone.

Inputs
  • submissionId

Ask like this Delete the test response we created earlier.

Technical details

Description the model receives:

Permanently deletes a submission and its uploaded files. This cannot be undone — the answers are gone and the storage the files used is released back to the workspace's quota.

readOnlyHint: false · destructiveHint: true

submissionId string · required
Submission id (GUID).

Email notifications

Choose who gets an email with every new submission.

set_email_notification

Modifies data

Emails every new submission to up to 10 people, whether or not they're in your workspace, with the PDF attached if you like. With no notifications, submissions go only to the workspace owner.

Inputs
  • formId
  • recipients
  • notificationIdoptional
  • enabledoptional
  • subjectoptional
  • attachPdfoptional

Ask like this Every time someone fills in the machine report, email it to these five addresses.

Technical details

Description the model receives:

Creates or updates a form's email notification: from then on, every new submission is emailed to the given recipients (any addresses, not only workspace members) as a table of the answers, optionally with the PDF attached. Omit notificationId to add a notification; pass the id of one of the form's existing notifications to replace that one's recipients (and subject/attachPdf when given). Set enabled=false to pause one. By default, with no enabled notification, each submission is emailed to the workspace owner; once an enabled notification exists that default stops, so include the owner in recipients if they should keep receiving submissions.

readOnlyHint: false · destructiveHint: false

formId string · required
Form id (GUID).
recipients array · required
Email addresses to notify, one per item, 1-10.
notificationId string · optional
Id of one of the form's existing email notifications. Omit to create a new one.
enabled boolean · optional
false pauses the notification without losing its recipients. Default true.
subject string · optional
Email subject. Omit to keep the current one; empty uses the default "New submission: <form title>" in the form's language.
attachPdf boolean · optional
Attach the submission's PDF. Omit to keep the current setting (off for a new notification).

Webhooks

Send every new submission to your own system, signed so you can verify it.

list_webhooks

Read-only

Lists a form's webhooks: URL, events, whether it's enabled, and only a masked hint of the secret (whsec_… plus its last 4 characters).

Inputs
  • formId

Ask like this Which URLs does the order form send its responses to?

Technical details

Description the model receives:

Lists a form's webhooks: id, target URL, subscribed events, enabled flag, and a masked hint of the signing secret (whsec_… plus its last 4 characters). The full secret is returned only once, when the webhook is added; to replace a lost secret, delete the webhook and add it again.

readOnlyHint: true

formId string · required
Form id (GUID).

add_webhook

Modifies data

Sends every new submission as JSON to your HTTPS URL, signed with an X-Anota-Signature header (HMAC-SHA256). The secret is shown only once, when it's created.

Inputs
  • formId
  • url

Ask like this Send every order-form response to https://my-app.com/hooks/anota.

Technical details

Description the model receives:

Adds a webhook to a form. From then on, every new submission is POSTed as JSON to the given HTTPS URL, with an X-Anota-Signature header (HMAC-SHA256 of the body using the returned secret) so the receiver can verify the payload came from anota. The secret is returned only in this response; listing webhooks shows just a masked hint. Failed deliveries are retried a few times; delivery never blocks or fails the respondent's submission. Payload and signature format: https://docs.p4software.cloud/anota-en/developers-api

readOnlyHint: false · destructiveHint: false

formId string · required
Form id (GUID).
url string · required
HTTPS URL to POST each new submission to.

delete_webhook

Destructive

Deletes a webhook: deliveries stop immediately and its delivery history is removed.

Inputs
  • formId
  • webhookId

Ask like this Remove the test webhook from the order form.

Technical details

Description the model receives:

Deletes a webhook from a form. Deliveries stop immediately; past delivery history is removed with it.

readOnlyHint: false · destructiveHint: true

formId string · required
Form id (GUID).
webhookId string · required
Webhook id (GUID).

Connect it and try it

Create your API key and follow the connection guide for Claude or Claude Code.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.