Skip to main content
Glama

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.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness3/5

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 tools
formsonfire_create_taskCreate taskA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
iconNoTask icon name (vendor icon list), e.g. Clock.
nameNoTask name shown on the device, e.g. 'Site inspection - Acme'.
answersNoPrefilled answers: field data name and value.
confirmYesSet true only after the user approved creating the task and any requested notification.
user_idNoId (GUID) of the worker the task is assigned to.
start_byNoWhen the task should be started (ISO 8601 UTC).
user_emailNoEmail of the worker (user) the task is assigned to.
complete_byYesDue time (ISO 8601 UTC).
instructionNoInstruction shown for this form activity.
send_immediateNoNotify the worker right away (vendor default applies when omitted).
additional_infoNoFree-text instructions shown with the task.
form_external_idYesExternal id of the form the worker has to fill out.
user_external_idNoExternal id of the worker the task is assigned to.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 sourceA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
idNoData source id (GUID).
page_noNoPage number, starting at 0 (default 0). Pass the previous reply's next_page_no.
page_sizeNoRows per page, 1-1250 (default 50).
external_idNoData source external id.
return_rowsNoAlso return the rows (default false: headers and total only).

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 definitionA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
idNoForm id (GUID).
statusNoForm status (default: Published).
versionNoForm version (default: the latest published).
external_idNoForm external id.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 taskB
Read-only
Inspect

One task by its id (GUID), with activities and history. GET /task.

NameRequiredDescriptionDefault
idYesTask id (GUID).
answer_formatNoHow 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_entriesNoAlso return the form entries completed by the task's activities.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 userA
Read-only
Inspect

One user by id (GUID): name, status, groups, folders, role and registered devices. GET /user.

NameRequiredDescriptionDefault
idYesUser id (GUID).

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 sourcesA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
nameNoData source name.
page_noNoPage number, starting at 0 (default 0). Pass the previous reply's next_page_no.
page_sizeNoResults per page, 1-250 (default 50).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 formsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
page_noNoPage number, starting at 0 (default 0). Pass the previous reply's next_page_no.
page_sizeNoResults per page, 1-250 (default 50).

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 groupsA
Read-only
Inspect

List user groups with their id, name and member user ids. Filter by name or external id. Returns UserGroups with TotalRows. GET /usergroup/search.

NameRequiredDescriptionDefault
nameNoGroup name.
page_noNoPage number, starting at 0 (default 0). Pass the previous reply's next_page_no.
page_sizeNoResults per page, 1-250 (default 50).
external_idNoGroup external id.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 usersA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
page_noNoPage number, starting at 0 (default 0). Pass the previous reply's next_page_no.
page_sizeNoResults per page, 1-250 (default 50).

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 entriesA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
fieldsNoComma-separated field names to return (works with answer_format Flat).
form_idNoOnly entries of this form (id, GUID).
page_noNoPage number, starting at 0 (default 0). Pass the previous reply's next_page_no.
to_dateNoISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z).
order_byNoSort and date-filter by ReceivedTime (default) or CompleteTime (when the form was completed on the device).
from_dateNoISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z).
page_sizeNoResults per page, 1-250 (default 50).
date_orderNoSort direction (default Ascending, oldest first).
form_versionNoForm version; 0 or omitted = the latest published version, -1 = all versions.
media_as_urlNoReturn photos/signatures as URLs instead of embedded data.
answer_formatNoHow 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_idNoOnly entries of the form with this external id.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 tasksB
Read-only
Inspect

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.

NameRequiredDescriptionDefault
nameNoTask name.
statusNoOnly tasks in this status.
page_noNoPage number, starting at 0 (default 0). Pass the previous reply's next_page_no.
to_dateNoISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z).
from_dateNoISO 8601 UTC date (2026-10-01) or date-time (2026-10-01T08:00:00Z).
page_sizeNoResults per page, 1-250 (default 50).
user_emailNoOnly tasks of the user with this email.
template_idNoOnly tasks created from this task template id.
answer_formatNoHow 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_entriesNoAlso return the form entries completed by the task's activities.
user_external_idNoOnly tasks of the user with this external id.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 11 tool updates
    • First observedformsonfire_create_task
    • First observedformsonfire_get_data_source
    • First observedformsonfire_get_form
    • First observedformsonfire_get_task
    • First observedformsonfire_get_user
    • First observedformsonfire_list_data_sources
    • First observedformsonfire_list_forms
    • First observedformsonfire_list_groups
    • First observedformsonfire_list_users
    • First observedformsonfire_search_entries
    • First observedformsonfire_search_tasks

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    B
    maintenance
    Enables 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.
    14
    45 npm
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Field operations agent API for task management, geo-tracking, and team coordination. Built for African logistics, delivery, and field service teams.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables reading and writing to KoBoToolbox via MCP, including creating forms, deploying them, attaching media, and submitting data, all from chat.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.