Forms On Fire / Appenate MCP by usefulapi
Read mobile forms, entries, users and tasks; create confirmed draft or sent tasks for field workers.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"forms-on-fire": {
"url": "https://forms-on-fire.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://forms-on-fire.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (11)
🟢formsonfire_list_forms(page_no, page_size)
List the forms (screens) in the organization with id, name, version and status. Use a form id with formsonfire_get_form or formsonfire_search_entries. GET /screen/form/search.
Esquema de entrada
{
"type": "object",
"properties": {
"page_no": {
"description": "Page number, starting at 0 (default 0). Pass the previous reply's next_page_no.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-250 (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢formsonfire_get_form(id, external_id, version, status)
One form's definition: name, version, status and its fields (names and types, which are the names to use for prefilled answers). Give the form's id (GUID) or its external id. GET /screen/form.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Form id (GUID)."
},
"external_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Form external id."
},
"version": {
"description": "Form version (default: the latest published).",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"status": {
"description": "Form status (default: Published).",
"type": "string",
"enum": [
"Published",
"Draft",
"Archived"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢formsonfire_search_entries(form_id, form_external_id, form_version, from_date, to_date, ...)
Search submitted form entries (the completed forms your team sent in): who filled them, when, where (GPS) and every answer. Filter by form id or external id, version and a date range (by received time, or complete time via order_by). Returns the page of Entries with TotalRows. GET /formentry/search.
Esquema de entrada
{
"type": "object",
"properties": {
"form_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Only entries of this form (id, GUID)."
},
"form_external_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Only entries of the form with this external id."
},
"form_version": {
"description": "Form version; 0 or omitted = the latest published version, -1 = all versions.",
"type": "integer",
"minimum": -1,
"maximum": 100000
},
"from_date": {
"type": "string",
"description": "ISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z)."
},
"to_date": {
"type": "string",
"description": "ISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z)."
},
"answer_format": {
"description": "How form answers are shaped: Flat (one value per field, easiest to read), Rich (typed values) or Raw (as stored). Default: the vendor's default.",
"type": "string",
"enum": [
"Flat",
"Rich",
"Raw"
]
},
"fields": {
"description": "Comma-separated field names to return (works with answer_format Flat).",
"type": "string",
"minLength": 1,
"maxLength": 500
},
"order_by": {
"description": "Sort and date-filter by ReceivedTime (default) or CompleteTime (when the form was completed on the device).",
"type": "string",
"enum": [
"ReceivedTime",
"CompleteTime"
]
},
"date_order": {
"description": "Sort direction (default Ascending, oldest first).",
"type": "string",
"enum": [
"Ascending",
"Descending"
]
},
"media_as_url": {
"description": "Return photos/signatures as URLs instead of embedded data.",
"type": "boolean"
},
"page_no": {
"description": "Page number, starting at 0 (default 0). Pass the previous reply's next_page_no.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-250 (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢formsonfire_search_tasks(user_email, user_external_id, status, template_id, name, ...)
Search tasks (jobs assigned to field workers, each with one or more activities such as filling out a form): status, assignee, due time, activities and history. Filter by assignee, status, name, task template and date range. Returns the page of Tasks with TotalRows. GET /task/search.
Esquema de entrada
{
"type": "object",
"properties": {
"user_email": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Only tasks of the user with this email."
},
"user_external_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Only tasks of the user with this external id."
},
"status": {
"description": "Only tasks in this status.",
"type": "string",
"enum": [
"Draft",
"InProgress",
"Completed",
"Accepted",
"Rejected"
]
},
"template_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Only tasks created from this task template id."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Task name."
},
"from_date": {
"type": "string",
"description": "ISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z)."
},
"to_date": {
"type": "string",
"description": "ISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z)."
},
"retrieve_entries": {
"description": "Also return the form entries completed by the task's activities.",
"type": "boolean"
},
"answer_format": {
"description": "How form answers are shaped: Flat (one value per field, easiest to read), Rich (typed values) or Raw (as stored). Default: the vendor's default.",
"type": "string",
"enum": [
"Flat",
"Rich",
"Raw"
]
},
"page_no": {
"description": "Page number, starting at 0 (default 0). Pass the previous reply's next_page_no.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-250 (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢formsonfire_get_task(id, retrieve_entries, answer_format)
One task by its id (GUID), with activities and history. GET /task.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Task id (GUID)."
},
"retrieve_entries": {
"description": "Also return the form entries completed by the task's activities.",
"type": "boolean"
},
"answer_format": {
"description": "How form answers are shaped: Flat (one value per field, easiest to read), Rich (typed values) or Raw (as stored). Default: the vendor's default.",
"type": "string",
"enum": [
"Flat",
"Rich",
"Raw"
]
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴formsonfire_create_task(user_email, user_id, user_external_id, name, icon, ...)
WRITE: create a task for a field worker with one form to fill out, optionally with prefilled answers. By default it remains a draft; send_immediate=true sends it and notifies the worker. Identify the worker by email, user id or external id (list_users). The form is identified by its external id (formsonfire_get_form shows field names for the prefilled answers). Requires confirm=true and a due time. Not idempotent: calling twice creates two tasks. POST /task.
Esquema de entrada
{
"type": "object",
"properties": {
"user_email": {
"description": "Email of the worker (user) the task is assigned to.",
"type": "string",
"maxLength": 200,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"user_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Id (GUID) of the worker the task is assigned to."
},
"user_external_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "External id of the worker the task is assigned to."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Task name shown on the device, e.g. 'Site inspection - Acme'."
},
"icon": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Task icon name (vendor icon list), e.g. Clock."
},
"start_by": {
"description": "When the task should be started (ISO 8601 UTC).",
"type": "string"
},
"complete_by": {
"type": "string",
"description": "Due time (ISO 8601 UTC)."
},
"additional_info": {
"description": "Free-text instructions shown with the task.",
"type": "string",
"maxLength": 2000
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Set true only after the user approved creating the task and any requested notification."
},
"send_immediate": {
"description": "Notify the worker right away (vendor default applies when omitted).",
"type": "boolean"
},
"form_external_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "External id of the form the worker has to fill out."
},
"instruction": {
"description": "Instruction shown for this form activity.",
"type": "string",
"maxLength": 1000
},
"answers": {
"description": "Prefilled answers: field data name and value.",
"maxItems": 200,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The field's data name in the form."
},
"value": {
"type": "string",
"maxLength": 4000,
"description": "The prefilled value."
}
},
"required": [
"name",
"value"
]
}
}
},
"required": [
"complete_by",
"confirm",
"form_external_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢formsonfire_list_users(page_no, page_size)
List the organization's users (field workers and admins): name, email, status, groups, website role and last activity. Passwords and keys are never returned. GET /user/search.
Esquema de entrada
{
"type": "object",
"properties": {
"page_no": {
"description": "Page number, starting at 0 (default 0). Pass the previous reply's next_page_no.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-250 (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢formsonfire_get_user(id)
One user by id (GUID): name, status, groups, folders, role and registered devices. GET /user.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "User id (GUID)."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢formsonfire_list_groups(name, external_id, page_no, page_size)
List user groups with their id, name and member user ids. Filter by name or external id. Returns UserGroups with TotalRows. GET /usergroup/search.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Group name."
},
"external_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Group external id."
},
"page_no": {
"description": "Page number, starting at 0 (default 0). Pass the previous reply's next_page_no.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-250 (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢formsonfire_list_data_sources(name, page_no, page_size)
List the data sources (lookup tables that feed dropdowns and prefill in forms, such as customers, sites or products): id, external id, name and row count. Use formsonfire_get_data_source for the rows. GET /datasource/search.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Data source name."
},
"page_no": {
"description": "Page number, starting at 0 (default 0). Pass the previous reply's next_page_no.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-250 (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢formsonfire_get_data_source(id, external_id, return_rows, page_no, page_size)
One data source by id (GUID) or external id: its column headers, TotalRows and (with return_rows) a page of rows. Rows are only returned when return_rows is true; page through them with page_no. GET /datasource.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Data source id (GUID)."
},
"external_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Data source external id."
},
"return_rows": {
"description": "Also return the rows (default false: headers and total only).",
"type": "boolean"
},
"page_no": {
"description": "Page number, starting at 0 (default 0). Pass the previous reply's next_page_no.",
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Rows per page, 1-1250 (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1250
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia