Forms On Fire / Appenate MCP by usefulapi

Read mobile forms, entries, users and tasks; create confirmed draft or sent tasks for field workers.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
93%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,289토큰 (도구 정의)
~2.4 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 2.57%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "forms-on-fire": {
      "url": "https://forms-on-fire.usefulapi.io/mcp"
    }
  }
}

원격 엔드포인트

https://forms-on-fire.usefulapi.io/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 11개