Skip to content

GoFormz MCP by usefulapi

io.usefulapi/goformzusefulapi.iostreamable-httpv1.0.0Scanned

Read GoFormz templates, forms, groups and data sources; create and update forms and rows.

23 tools: 3 can delete or cancel things, 3 change things and 17 only read.

Tools: 3 delete, 0 irreversible, 3 write, 17 read.
  • Reads private data · 3
  • Reads text others write · 23
  • Can send data out · 0
  • No findings

Anlyon alternative

6 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

23 tools

Deletes or cancels 3Claude Code: deny
  • goformz_set_form_statusWRITE: mark a form complete (this can trigger the template's completion workflows and webhooks) or re-open it as a draft so it can be edited.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_set_form_status" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: mark a form complete (this can trigger the template's completion workflows and webhooks) or re-open it as a draft so it can be edited. POST /v2/formz/{id}/status.

    Annotations the server declares

    • title: Complete or re-open a form
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • goformz_update_datasource_rowWRITE: replace a data source row's key and values (the whole row is replaced; send every column).Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_update_datasource_row" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: replace a data source row's key and values (the whole row is replaced; send every column). PATCH /v2/datasources/{dataSourceId}/rows/{rowId}.

    Annotations the server declares

    • title: Update a data source row
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • goformz_update_formWRITE: change a form's name and/or field values (partial update: only the fields given change; a null value clears a field).Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_update_form" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: change a form's name and/or field values (partial update: only the fields given change; a null value clears a field). Does NOT change the status and does not trigger workflows; to re-run completion workflows use goformz_set_form_status draft, update, then complete. PATCH /v2/formz/{id}.

    Annotations the server declares

    • title: Update a form
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Changes things 3Claude Code: ask
  • goformz_create_datasource_rowWRITE: add a row to a data source.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_create_datasource_row" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: add a row to a data source. key_column is the lookup key; values are the column values in the data source's column order (see goformz_get_datasource). Each call adds another row. POST /v2/datasources/{dataSourceId}/rows.

    Annotations the server declares

    • title: Add a data source row
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • goformz_create_formWRITE: create a new draft form from a template, optionally pre-filled and assigned to a user or group (assignment is only possible at creation).Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_create_form" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: create a new draft form from a template, optionally pre-filled and assigned to a user or group (assignment is only possible at creation). Field keys are the template's field names (or ids) and the values are field objects such as {"text": "Acme"}; see goformz_get_form on an existing form of the template for each field's shape. Each call creates another form. POST /v2/formz.

    Annotations the server declares

    • title: Create a form
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • goformz_export_form_pdfWRITE: start a PDF export of a form (the form is not changed; GoFormz creates a PDF file).Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: start a PDF export of a form (the form is not changed; GoFormz creates a PDF file). The reply gives the queue_id of the job: poll goformz_get_queue_item until Completed, then read the file with goformz_get_file using the id in redirectUrl. POST /v2/formz/{formId}/exports.

    Annotations the server declares

    • title: Export a form to PDF
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 17Show 17 read-only tools
  • goformz_get_datasourceGet one data source: its name, columns and indexed columns.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_get_datasource" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one data source: its name, columns and indexed columns. GET /v2/datasources/{id}.

    Annotations the server declares

    • title: Get a data source
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_get_datasource_rowGet one data source row by id.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_get_datasource_row" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one data source row by id. GET /v2/datasources/{dataSourceId}/rows/{rowId}.

    Annotations the server declares

    • title: Get a data source row
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_get_fileGet a file summary: type, created date and a temporary download `link` (it expires; see linkExpiration).Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "goformz_get_file" says "get": a word for reading.

    What it can reach

    • private-dataThe name "goformz_get_file" says "get" and "file": it reads files.
    • private-dataThe description's first sentence says "get" and "file": it reads files.
    • private-dataThe input names a file (input.file_id), and the tool reads: it reads files.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get a file summary: type, created date and a temporary download `link` (it expires; see linkExpiration). Use it for an exported PDF or a form image/signature. The file itself is not downloaded here. GET /v2/files/{id}.

    Annotations the server declares

    • title: Get a file
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_get_formGet one form with all its field values (text, numbers, dates, checkboxes, table rows, signature/image references), status, assignment and template version.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "goformz_get_form" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "get" and "table": it reads databases.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one form with all its field values (text, numbers, dates, checkboxes, table rows, signature/image references), status, assignment and template version. GET /v2/formz/{id}.

    Annotations the server declares

    • title: Get a form
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_get_groupGet one group by id.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_get_group" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one group by id. GET /v2/groups/{id}.

    Annotations the server declares

    • title: Get a group
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_get_pdf_exportGet the metadata of a PDF export of a form, including the temporary download `link` once the PDF is ready.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_get_pdf_export" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get the metadata of a PDF export of a form, including the temporary download `link` once the PDF is ready. GET /v2/formz/{formId}/exports/{exportId}.

    Annotations the server declares

    • title: Get a PDF export
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_get_queue_itemCheck a queued job, for example the PDF export started by goformz_export_form_pdf.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_get_queue_item" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Check a queued job, for example the PDF export started by goformz_export_form_pdf. Returns status (and progressIndicator); when it is Completed, redirectUrl points at the result (a /v2/files/{id} URL: pass that id to goformz_get_file). GET /v2/queue/{id}.

    Annotations the server declares

    • title: Get an async job status
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_get_templateGet one template by id.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_get_template" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one template by id. GET /v2/templates/{id}.

    Annotations the server declares

    • title: Get a template
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_get_userGet one user by id.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_get_user" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one user by id. GET /v2/users/{id}.

    Annotations the server declares

    • title: Get a user
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_list_datasource_rowsList the rows of a data source.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_list_datasource_rows" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the rows of a data source. Each row has an id, a keyColumn (the lookup key) and a value (a JSON-encoded array of the column values). GET /v2/datasources/{dataSourceId}/rows.

    Annotations the server declares

    • title: List data source rows
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_list_datasourcesList data sources (lookup tables that feed dropdown and database fields in templates).Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "goformz_list_datasources" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "table": it reads databases.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List data sources (lookup tables that feed dropdown and database fields in templates). GET /v2/datasources.

    Annotations the server declares

    • title: List data sources
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_list_formsList forms (filled-in instances of templates) with name, status (draft or complete), last update date and assignment.Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_list_forms" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List forms (filled-in instances of templates) with name, status (draft or complete), last update date and assignment. Field values are NOT included: call goformz_get_form for those. Filter by name prefix, status or last-updated date. GET /v2/formz.

    Annotations the server declares

    • title: List forms
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_list_groupsList user groups (forms can be assigned to a group).Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_list_groups" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List user groups (forms can be assigned to a group). GET /v2/groups.

    Annotations the server declares

    • title: List groups
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_list_template_formsList the forms created from one template (name, status, last update date).Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_list_template_forms" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the forms created from one template (name, status, last update date). Field values are not included. GET /v2/templates/{templateId}/formz.

    Annotations the server declares

    • title: List forms of a template
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_list_templatesList the form templates of the account (id, name).Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_list_templates" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the form templates of the account (id, name). Use a template id to list its forms or to create a form. GET /v2/templates.

    Annotations the server declares

    • title: List templates
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_list_usersList the account's users (id, username, first and last name).Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_list_users" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the account's users (id, username, first and last name). A user id is needed to assign a new form. GET /v2/users.

    Annotations the server declares

    • title: List users
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • goformz_list_webhooksList the webhooks that call a URL when a form of a template is completed (event form.complete).Reads text others writeNo findings

    Why it is in this group

    • The name "goformz_list_webhooks" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    List the webhooks that call a URL when a form of a template is completed (event form.complete). Read-only. GET /v2/webhooks.

    Annotations the server declares

    • title: List webhooks
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads private data3
Reads files, mail, messages, databases, secrets, calendars or repositories.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http goformz https://goformz.usefulapi.io/mcp
claude mcp add --transport http goformz https://goformz.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__goformz__goformz_list_templates",
      "mcp__goformz__goformz_get_template",
      "mcp__goformz__goformz_list_forms",
      "mcp__goformz__goformz_list_template_forms",
      "mcp__goformz__goformz_get_form",
      "mcp__goformz__goformz_list_groups",
      "mcp__goformz__goformz_get_group",
      "mcp__goformz__goformz_list_users",
      "mcp__goformz__goformz_get_user",
      "mcp__goformz__goformz_list_datasources",
      "mcp__goformz__goformz_get_datasource",
      "mcp__goformz__goformz_list_datasource_rows",
      "mcp__goformz__goformz_get_datasource_row",
      "mcp__goformz__goformz_list_webhooks",
      "mcp__goformz__goformz_get_queue_item",
      "mcp__goformz__goformz_get_file",
      "mcp__goformz__goformz_get_pdf_export"
    ],
    "ask": [
      "mcp__goformz__goformz_export_form_pdf",
      "mcp__goformz__goformz_create_form",
      "mcp__goformz__goformz_create_datasource_row"
    ],
    "deny": [
      "mcp__goformz__goformz_update_form",
      "mcp__goformz__goformz_set_form_status",
      "mcp__goformz__goformz_update_datasource_row"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as goformz. Review it before you use it.

Capability tags behind 23 rules
  • mcp__goformz__goformz_list_templates untrusted-input
  • mcp__goformz__goformz_get_template untrusted-input
  • mcp__goformz__goformz_list_forms untrusted-input
  • mcp__goformz__goformz_list_template_forms untrusted-input
  • mcp__goformz__goformz_get_form private-data, untrusted-input
  • mcp__goformz__goformz_list_groups untrusted-input
  • mcp__goformz__goformz_get_group untrusted-input
  • mcp__goformz__goformz_list_users untrusted-input
  • mcp__goformz__goformz_get_user untrusted-input
  • mcp__goformz__goformz_list_datasources private-data, untrusted-input
  • mcp__goformz__goformz_get_datasource untrusted-input
  • mcp__goformz__goformz_list_datasource_rows untrusted-input
  • mcp__goformz__goformz_get_datasource_row untrusted-input
  • mcp__goformz__goformz_list_webhooks untrusted-input
  • mcp__goformz__goformz_get_queue_item untrusted-input
  • mcp__goformz__goformz_get_file private-data, untrusted-input
  • mcp__goformz__goformz_get_pdf_export untrusted-input
  • mcp__goformz__goformz_export_form_pdf untrusted-input
  • mcp__goformz__goformz_create_form untrusted-input
  • mcp__goformz__goformz_update_form untrusted-input
  • mcp__goformz__goformz_set_form_status untrusted-input
  • mcp__goformz__goformz_create_datasource_row untrusted-input
  • mcp__goformz__goformz_update_datasource_row untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/goformz/verify?hash=58c24e6b4d28e5bc6db36667fde082725d66b8f5ed1ac46754cd5841c780194b" | jq -e '.changed == false'

Pinned hash 58c24e6b4d28, from Oct 26, 2026, 00:26 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.usefulapi/goformz/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.usefulapi/goformz
[![anlyon.dev](https://anlyon.dev/badge/io.usefulapi/goformz.svg)](https://anlyon.dev/servers/io.usefulapi/goformz)

Source: MCP Registry · repository. Synced Oct 26, 2026, 00:25 UTC.