Forms On Fire / Appenate MCP by usefulapi
Server Details
Read mobile forms, entries, users and tasks; create confirmed draft or sent tasks for field workers.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 11 tools
Each tool targets a distinct resource and action: get_* fetches one by id, list_* enumerates resources, search_* filters tasks or entries, and create_task is the sole write operation. The boundaries between get_task and search_tasks, get_form and list_forms, and get_data_source and list_data_sources are clear from the descriptions.
All tool names use the same formsonfire_ prefix followed by a predictable verb_noun pattern: create_task, get_*, list_*, and search_*. There are no mixed casing or vague verb styles.
The 11 tools are well scoped for a forms/task platform integration, covering the core resources without excessive surface area. Each tool appears to earn its place by serving a distinct lookup or workflow action.
The surface covers reading forms, data sources, users, groups, tasks, and entries, plus creating tasks. However, there are notable gaps around task lifecycle operations such as update/reassign/cancel/delete task, and no direct get_entry-by-id or form/data-source mutation tools.
Available Tools
11 toolsformsonfire_create_taskCreate taskADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | Task icon name (vendor icon list), e.g. Clock. | |
| name | No | Task name shown on the device, e.g. 'Site inspection - Acme'. | |
| answers | No | Prefilled answers: field data name and value. | |
| confirm | Yes | Set true only after the user approved creating the task and any requested notification. | |
| user_id | No | Id (GUID) of the worker the task is assigned to. | |
| start_by | No | When the task should be started (ISO 8601 UTC). | |
| user_email | No | Email of the worker (user) the task is assigned to. | |
| complete_by | Yes | Due time (ISO 8601 UTC). | |
| instruction | No | Instruction shown for this form activity. | |
| send_immediate | No | Notify the worker right away (vendor default applies when omitted). | |
| additional_info | No | Free-text instructions shown with the task. | |
| form_external_id | Yes | External id of the form the worker has to fill out. | |
| user_external_id | No | External id of the worker the task is assigned to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-idempotent and destructive, but the description adds real value beyond them: draft-by-default state, the notification side effect of send_immediate, the confirm=true approval prerequisite, and the consequence of double-calling. It does not describe the response or how to recover from a mistaken creation, which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly five dense sentences, front-loaded with the operation and write semantics, then safety (confirm), then input resolution, then the non-idempotency warning. No filler; every sentence carries a distinct instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation with no output schema, the description covers the critical gaps: required confirm, required due time, draft vs. send semantics, and identity resolution. It omits nothing that would cause a wrong call, though it does not mention what a successful call returns or how to locate the created task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds selection guidance the schema does not: the worker can be identified by email, user id, or external id, and answers must use field data names from formsonfire_get_form. That reduces mis-selection among the three mutually substitutable worker parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with an explicit verb+resource ('WRITE: create a task') and specifies the resource scope (one form, one field worker, optional prefilled answers). It is unmistakably distinct from siblings like get_task or search_tasks, and even names the endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the default behavior (draft), the opt-in alternative (send_immediate=true sends and notifies), the required confirm gate, and points to the sibling tools needed to resolve inputs (list_users, formsonfire_get_form). This is genuine when-to-use/when-not guidance with alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formsonfire_get_data_sourceGet data sourceARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Data source id (GUID). | |
| page_no | No | Page number, starting at 0 (default 0). Pass the previous reply's next_page_no. | |
| page_size | No | Rows per page, 1-1250 (default 50). | |
| external_id | No | Data source external id. | |
| return_rows | No | Also return the rows (default false: headers and total only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds value beyond that by disclosing the underlying endpoint (GET /datasource), the fact that rows are suppressed unless return_rows is true, and the pagination contract - behavior an agent cannot infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses: what is returned, the row-returning condition with paging, then the endpoint. The return payload is front-loaded and no sentence is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of describing the response, and it does (headers, TotalRows, row page, page_no continuation). It stops short of noting that no parameters are required - i.e. that at least one of id/external_id must be supplied - which is the one thing an agent could still get wrong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents id, external_id, page_no, page_size and return_rows, so the baseline is 3. The description usefully frames id vs external_id as an either/or and restates the return_rows sentinel, but adds no formats, bounds or defaults beyond what the schema already carries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('One data source by id (GUID) or external id') plus exactly what comes back (column headers, TotalRows, optional row page). The singular 'one data source' implicitly separates it from the sibling list_data_sources, so an agent can pick correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives operational guidance for the parameters ('Rows are only returned when return_rows is true; page through them with page_no'), which tells the agent how to page. It never says when to choose this over list_data_sources or search_entries, so the when-to-use layer is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formsonfire_get_formGet form definitionARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Form id (GUID). | |
| status | No | Form status (default: Published). | |
| version | No | Form version (default: the latest published). | |
| external_id | No | Form external id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value beyond that by describing the returned payload shape and the practical meaning of the field names (they are the keys for prefilled answers), plus the underlying endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the payload contents front-loaded, followed by the identifier requirement. The trailing 'GET /screen/form.' is a slightly dangling technical detail, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by sketching the return shape (name, version, status, typed fields). Minor gaps remain: it doesn't say how status/version interact with the id lookup or what happens when the form is not found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description still adds meaning the schema cannot express: it frames id and external_id as an either/or identifier choice, whereas the schema marks all four params optional with no anyOf, leaving the selection rule undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('One form's definition') and enumerates what it contains (name, version, status, fields with names and types). This clearly separates it from list_forms, which is the collection-level sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('Give the form's id (GUID) or its external id' and hints the field names feed prefilled answers), but it never states when to prefer this over formsonfire_list_forms or another sibling, nor any exclusion or prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formsonfire_get_taskGet taskBRead-onlyInspect
One task by its id (GUID), with activities and history. GET /task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id (GUID). | |
| answer_format | No | 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. | |
| retrieve_entries | No | Also return the form entries completed by the task's activities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description earns credit for disclosing the payload scope (task plus activities and history), but says nothing about failure behavior for a missing/invalid GUID or about access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short fragments, front-loaded with the retrieval semantics and the endpoint path; nothing is wasted. The terseness borders on clipped, but every element carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry return-value burden, and it only says 'activities and history' — it does not clarify what retrieve_entries adds or how answer_format changes the response. Adequate for a simple read, but the response shape remains underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented, including the answer_format enum and retrieve_entries. The description only echoes the id/GUID concept and adds no meaning for answer_format or retrieve_entries, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get one task by its id') plus the included data (activities and history), and even names the underlying endpoint GET /task. It does not explicitly contrast itself with formsonfire_search_tasks, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'One task by its id' implies this is the single-record fetch as opposed to search_tasks, but there is no explicit when-to-use, when-not, or named alternative. The agent must infer the routing from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formsonfire_get_userGet userARead-onlyInspect
One user by id (GUID): name, status, groups, folders, role and registered devices. GET /user.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | User id (GUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the useful detail that the payload includes groups, folders, role and registered devices, but says nothing about permissions required to read a user, error behavior for unknown ids, or the HTTP endpoint's auth context beyond 'GET /user'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence leads with the key fact (one user by id) and follows with the returned fields and endpoint, with no filler. Every clause carries information an agent can use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, listing the returned attributes compensates well, and the lone required parameter is fully covered by the schema. Only the absence of any guidance on permissions or failure modes keeps it short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is already documented as 'User id (GUID)', so the description's '(GUID)' restates the schema rather than adding syntax or format guidance. Baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('One user by id (GUID)') and enumerates the returned attributes (name, status, groups, folders, role, devices), which clearly separates it from list_users and search_entries. It stops short of naming the sibling it contrasts with, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id (GUID)' implies the tool requires a known user identifier and is the single-record counterpart to the list tools, but it never says when to use this versus formsonfire_list_users or what to do without an id. Usage is only inferable from the name and phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formsonfire_list_data_sourcesList data sourcesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Data source name. | |
| page_no | No | Page number, starting at 0 (default 0). Pass the previous reply's next_page_no. | |
| page_size | No | Results per page, 1-250 (default 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered; the description adds that this maps to GET /datasource/search and which fields come back. Pagination behavior is left to the schema, which is acceptable given the low annotation burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the what-is-it definition front-loaded before the sibling routing hint and wire endpoint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by naming the four returned fields, and paging is fully documented in the input schema. Only minor gaps remain, such as whether results are sorted or how large a full datasource list typically is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including paging semantics and the hint to pass the previous reply's next_page_no, so the schema already carries parameter meaning. The description adds nothing about the name filter or paging, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the data sources') and then defines the domain term with concrete examples (lookup tables feeding dropdowns and prefill, such as customers, sites, products). It also enumerates the returned fields, so an agent knows exactly what a call yields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes to the alternative: 'Use formsonfire_get_data_source for the rows,' which cleanly separates metadata listing from row retrieval. It does not say when listing is the wrong choice beyond that (e.g., whether to prefer name-filtered search), so it stops just short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formsonfire_list_formsList formsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page_no | No | Page number, starting at 0 (default 0). Pass the previous reply's next_page_no. | |
| page_size | No | Results per page, 1-250 (default 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only the set of returned fields, with no note on result caps, ordering, or total counts — modest added value on top of the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the resource and returned fields front-loaded; nothing is padded. The trailing endpoint path is mildly redundant technical detail but costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only list tool with a fully described schema and rich annotations, the description covers what the tool returns and how to chain it with other tools. Pagination behavior is delegated to the schema, which is acceptable, and no output schema exists so field disclosure here does real work.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; both page_no and page_size are fully documented in the schema, including the 1-250 range and the instruction to pass next_page_no from the previous reply. The description adds nothing beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (forms/screens in the organization) and names the fields returned (id, name, version, status). It also names the follow-on tools (get_form, search_entries), which implies the list-vs-detail split, though it never explicitly contrasts itself with a sibling listing tool because none exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent infers it should call this to discover forms before calling formsonfire_get_form or formsonfire_search_entries. There is no explicit when-to-use or when-not-to-use statement, and the endpoint hint 'GET /screen/form/search' is implementation detail rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formsonfire_list_groupsList user groupsARead-onlyInspect
List user groups with their id, name and member user ids. Filter by name or external id. Returns UserGroups with TotalRows. GET /usergroup/search.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Group name. | |
| page_no | No | Page number, starting at 0 (default 0). Pass the previous reply's next_page_no. | |
| page_size | No | Results per page, 1-250 (default 50). | |
| external_id | No | Group external id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds value beyond that by naming the underlying endpoint (GET /usergroup/search) and the return shape (UserGroups with TotalRows), which matters because no output schema exists. It stops short of disclosing auth requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler: purpose and returned fields first, filtering second, return type and endpoint last. Nothing repeats and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated read-only list tool with a fully documented schema, the description supplies the missing return-shape information (UserGroups with TotalRows) that the absent output schema would otherwise leave blank. Only auth/rate-limit context is missing, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all four parameters are documented in-schema, including pagination semantics and next_page_no chaining. The description only restates the two filter parameters, adding no syntax or format detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (user groups), plus which fields come back (id, name, member user ids). The resource is unambiguously distinct from siblings like formsonfire_list_users or formsonfire_list_forms, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Filter by name or external id" implies the filtering use case, but there is no explicit when-to-use/when-not guidance and no mention of alternatives (e.g., get_user vs list_users). Usage must be inferred from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formsonfire_list_usersList usersARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page_no | No | Page number, starting at 0 (default 0). Pass the previous reply's next_page_no. | |
| page_size | No | Results per page, 1-250 (default 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true. The description adds useful behavioral context beyond that: it enumerates returned fields and states that passwords and keys are never returned, which is valuable security context for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states what is listed, what fields are returned, and a key security exclusion. The endpoint reference is short and does not distract. Every sentence carries useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully lists the returned fields and notes that sensitive credentials are excluded. Pagination behavior is handled by the schema. It is nearly complete, though it could say more about ordering or whether results are filtered by the caller's permissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both pagination parameters are fully documented in the schema with defaults and limits. The description adds no additional parameter meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: listing the organization's users, with scope ('field workers and admins') and returned fields. It is clearly distinguishable from creation/search siblings, but it does not explicitly contrast with get_user for single-user retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The listing purpose is implied by 'List the organization's users', but there is no explicit guidance on when to use this versus get_user or other user-related siblings. No exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formsonfire_search_entriesSearch form entriesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated field names to return (works with answer_format Flat). | |
| form_id | No | Only entries of this form (id, GUID). | |
| page_no | No | Page number, starting at 0 (default 0). Pass the previous reply's next_page_no. | |
| to_date | No | ISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z). | |
| order_by | No | Sort and date-filter by ReceivedTime (default) or CompleteTime (when the form was completed on the device). | |
| from_date | No | ISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z). | |
| page_size | No | Results per page, 1-250 (default 50). | |
| date_order | No | Sort direction (default Ascending, oldest first). | |
| form_version | No | Form version; 0 or omitted = the latest published version, -1 = all versions. | |
| media_as_url | No | Return photos/signatures as URLs instead of embedded data. | |
| answer_format | No | 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. | |
| form_external_id | No | Only entries of the form with this external id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, open-world), and the description adds real value on top: it discloses pagination behavior, that the response is a page of Entries plus TotalRows, and the underlying GET endpoint. It stops short of stating auth requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with what the tool returns and who/when/where it captures, followed by filtering options. The trailing GET path is an implementation detail but cheap to include.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 optional parameters and no output schema, the description does enough: it names the returned shape (page of Entries with TotalRows) and explains pagination chaining. Only minor gaps remain, such as guidance on combining from_date/to_date with order_by when both are supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters including the order_by date-filter coupling and the Flat/Rich/Raw answer formats. The description's parameter sentence largely restates those fields rather than adding syntax or edge-case guidance, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search submitted form entries') plus a parenthetical clarifying what an entry is, and separates it from sibling form tools like get_form/list_forms which retrieve the form definition rather than submissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use it (to find submitted entries filtered by form, version, or date range) but never states when NOT to use it or names an alternative — e.g. it does not say to use get_form for the form definition or search_tasks for tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formsonfire_search_tasksSearch tasksBRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Task name. | |
| status | No | Only tasks in this status. | |
| page_no | No | Page number, starting at 0 (default 0). Pass the previous reply's next_page_no. | |
| to_date | No | ISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z). | |
| from_date | No | ISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z). | |
| page_size | No | Results per page, 1-250 (default 50). | |
| user_email | No | Only tasks of the user with this email. | |
| template_id | No | Only tasks created from this task template id. | |
| answer_format | No | 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. | |
| retrieve_entries | No | Also return the form entries completed by the task's activities. | |
| user_external_id | No | Only tasks of the user with this external id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the paged-return detail (page of Tasks with TotalRows) but omits other behavior an agent would want, such as pagination defaults and how answer_format/retrieve_entries change the payload. With annotations carrying the safety burden, this is an adequate 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with the core purpose, followed by filterable dimensions, then the return shape and endpoint. It is dense but every clause carries information; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description partly compensates by naming the return shape (page of Tasks with TotalRows). But with 11 parameters, it says nothing about how answer_format reshapes answers or what retrieve_entries pulls in, which are the least obvious knobs. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, and the description repeats the filter set (assignee, status, name, template, date range) without adding syntax or format detail. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search tasks') and even defines what a task is (a job assigned to field workers with activities). It also names the return shape (page of Tasks with TotalRows). It doesn't explicitly distinguish itself from the sibling get_task (single-task retrieval), so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by listing the filterable dimensions (assignee, status, name, template, date range) and the return payload, so an agent can infer this is the list/browse path. However, it names no alternative and gives no explicit when-to-use vs get_task or search_entries, leaving the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
- First observed
formsonfire_create_task - First observed
formsonfire_get_data_source - First observed
formsonfire_get_form - First observed
formsonfire_get_task - First observed
formsonfire_get_user - First observed
formsonfire_list_data_sources - First observed
formsonfire_list_forms - First observed
formsonfire_list_groups - First observed
formsonfire_list_users - First observed
formsonfire_search_entries - First observed
formsonfire_search_tasks
Related MCP Connectors
Read Fieldwire projects, tasks, plans, forms, RFIs and submittals; create and update tasks.
Read Tookan tasks, agents, teams and customers; create delivery tasks and assign agents.
- TasksOAuthapp.thetasks
Read and edit your Tasks boards: create and update tasks, comment, and track time.
Read GoFormz templates, forms, groups and data sources; create and update forms and rows.
Related MCP Servers
FlicenseAqualityBmaintenanceEnables agents to send tasks and notifications to phones, wait for replies, append follow-ups, cancel mistakes, and query or search the full history of tasks, answers, and submissions as a knowledge base.1445 npm-- -licenseNot gradedqualityNot gradedmaintenanceField operations agent API for task management, geo-tracking, and team coordination. Built for African logistics, delivery, and field service teams.-
- AlicenseNot gradedqualityCmaintenanceEnables reading and writing Google Tasks checklist items through the Google Tasks API, including listing task lists and tasks, and creating, updating, completing, or deleting tasks.80 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables reading and writing to KoBoToolbox via MCP, including creating forms, deploying them, attaching media, and submitting data, all from chat.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.