GoFormz MCP by usefulapi
Read GoFormz templates, forms, groups and data sources; create and update forms and rows.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"goformz": {
"url": "https://goformz.usefulapi.io/mcp"
}
}
}Remote endpoints
https://goformz.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (23)
🟢goformz_list_templates(name, page, page_size)
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.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Only items whose name starts with this text.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_get_template(template_id)
Get one template by id. GET /v2/templates/{id}.
Input Schema
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Template id (a GUID)."
}
},
"required": [
"template_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_list_forms(name, status, updated_after, sort, direction, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Only items whose name starts with this text.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"description": "Only draft or only complete forms.",
"type": "string",
"enum": [
"draft",
"complete"
]
},
"updated_after": {
"description": "Only forms last updated after this date or date-time (ISO 8601).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,7})?)?(Z|[+-]\\d{2}:\\d{2})?)?$"
},
"sort": {
"description": "Sort field.",
"type": "string",
"enum": [
"name",
"createddate",
"lastupdateddate",
"completeddate"
]
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_list_template_forms(template_id, name, status, sort, direction, ...)
List the forms created from one template (name, status, last update date). Field values are not included. GET /v2/templates/{templateId}/formz.
Input Schema
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Template id (a GUID)."
},
"name": {
"description": "Only items whose name starts with this text.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"description": "Only draft or only complete forms.",
"type": "string",
"enum": [
"draft",
"complete"
]
},
"sort": {
"description": "Sort field.",
"type": "string",
"enum": [
"name",
"createddate",
"lastupdateddate",
"completeddate"
]
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"template_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_get_form(form_id, include_deleted)
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}.
Input Schema
{
"type": "object",
"properties": {
"form_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Form id (a GUID)."
},
"include_deleted": {
"description": "Also return a form that has been deleted (default false).",
"type": "boolean"
}
},
"required": [
"form_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_list_groups(name, page, page_size)
List user groups (forms can be assigned to a group). GET /v2/groups.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Only items whose name starts with this text.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_get_group(group_id)
Get one group by id. GET /v2/groups/{id}.
Input Schema
{
"type": "object",
"properties": {
"group_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Group id (a GUID)."
}
},
"required": [
"group_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_list_users(name, page, page_size)
List the account's users (id, username, first and last name). A user id is needed to assign a new form. GET /v2/users.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Only items whose name starts with this text.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_get_user(user_id)
Get one user by id. GET /v2/users/{id}.
Input Schema
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "User id (a GUID)."
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_list_datasources(name, page, page_size)
List data sources (lookup tables that feed dropdown and database fields in templates). GET /v2/datasources.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Only items whose name starts with this text.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_get_datasource(datasource_id)
Get one data source: its name, columns and indexed columns. GET /v2/datasources/{id}.
Input Schema
{
"type": "object",
"properties": {
"datasource_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Data source id (a GUID)."
}
},
"required": [
"datasource_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_list_datasource_rows(datasource_id, name, page, page_size)
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.
Input Schema
{
"type": "object",
"properties": {
"datasource_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Data source id (a GUID)."
},
"name": {
"description": "Only rows whose key column starts with this text.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"datasource_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_get_datasource_row(datasource_id, row_id)
Get one data source row by id. GET /v2/datasources/{dataSourceId}/rows/{rowId}.
Input Schema
{
"type": "object",
"properties": {
"datasource_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Data source id (a GUID)."
},
"row_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Row id (a GUID)."
}
},
"required": [
"datasource_id",
"row_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_list_webhooks(template_id, page, page_size)
List the webhooks that call a URL when a form of a template is completed (event form.complete). Read-only. GET /v2/webhooks.
Input Schema
{
"type": "object",
"properties": {
"template_id": {
"description": "Only webhooks for this template (the webhook's entity id).",
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_get_queue_item(queue_id)
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}.
Input Schema
{
"type": "object",
"properties": {
"queue_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Queue item id (a GUID)."
}
},
"required": [
"queue_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_get_file(file_id)
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}.
Input Schema
{
"type": "object",
"properties": {
"file_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "File id (a GUID)."
}
},
"required": [
"file_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢goformz_get_pdf_export(form_id, export_id)
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}.
Input Schema
{
"type": "object",
"properties": {
"form_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Form id (a GUID)."
},
"export_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Export id (a GUID)."
}
},
"required": [
"form_id",
"export_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡goformz_export_form_pdf(form_id, pages)
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.
Input Schema
{
"type": "object",
"properties": {
"form_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Form id (a GUID)."
},
"pages": {
"description": "Pages to include, for example \"1-5,7,9\" (default all pages).",
"type": "string",
"maxLength": 100,
"pattern": "^\\d+(-\\d+)?(,\\d+(-\\d+)?)*$"
}
},
"required": [
"form_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡goformz_create_form(template_id, name, override_default_form_name, fields, assign_to_type, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Template id (a GUID)."
},
"name": {
"description": "Form name. Ignored unless override_default_form_name is true: GoFormz names forms by the template's rule.",
"type": "string",
"minLength": 1,
"maxLength": 250
},
"override_default_form_name": {
"description": "Use `name` instead of the template's automatic form name (default false).",
"type": "boolean"
},
"fields": {
"description": "Field values keyed by field name or id, for example {\"PO #\": {\"value\": \"1223333\"}, \"Customer\": {\"text\": \"Acme\"}}.",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"additionalProperties": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"assign_to_type": {
"description": "Assign the form to a User or a Group (needs assign_to_id).",
"type": "string",
"enum": [
"User",
"Group"
]
},
"assign_to_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "User or group id (a GUID)."
}
},
"required": [
"template_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴goformz_update_form(form_id, name, fields)
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}.
Input Schema
{
"type": "object",
"properties": {
"form_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Form id (a GUID)."
},
"name": {
"description": "New form name.",
"type": "string",
"minLength": 1,
"maxLength": 250
},
"fields": {
"description": "Field values keyed by field name or id, for example {\"PO #\": {\"value\": \"1223333\"}}; null clears the field.",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"additionalProperties": {
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
]
}
}
},
"required": [
"form_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴goformz_set_form_status(form_id, status)
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.
Input Schema
{
"type": "object",
"properties": {
"form_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Form id (a GUID)."
},
"status": {
"type": "string",
"enum": [
"draft",
"complete"
],
"description": "complete to finish the form, draft to re-open it."
}
},
"required": [
"form_id",
"status"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡goformz_create_datasource_row(datasource_id, key_column, values)
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.
Input Schema
{
"type": "object",
"properties": {
"datasource_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Data source id (a GUID)."
},
"key_column": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "The row's lookup key (the value of the key column)."
},
"values": {
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
},
"description": "Column values in column order, as strings."
}
},
"required": [
"datasource_id",
"key_column",
"values"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴goformz_update_datasource_row(datasource_id, row_id, key_column, values)
WRITE: replace a data source row's key and values (the whole row is replaced; send every column). PATCH /v2/datasources/{dataSourceId}/rows/{rowId}.
Input Schema
{
"type": "object",
"properties": {
"datasource_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Data source id (a GUID)."
},
"row_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"description": "Row id (a GUID)."
},
"key_column": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "The row's lookup key."
},
"values": {
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
},
"description": "All column values in column order, as strings."
}
},
"required": [
"datasource_id",
"row_id",
"key_column",
"values"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence