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.
- 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.
- Reads text others write23
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- 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/mcpclaude mcp add --transport http goformz https://goformz.usefulapi.io/mcpRun 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.
{
"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.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.usefulapi/goformz)Source: MCP Registry · repository. Synced Oct 26, 2026, 00:25 UTC.