Read GoCanvas forms, submissions, users, dispatches and reference data; create dispatches.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: creates a dispatch, a job that appears on the assignee's mobile device (immediate_dispatch is sent at once, with a push notification when send_notification is true; scheduled_dispatch needs scheduled_at and scheduled_end). Responses pre-fill the assignee's form (entry ids from gocanvas_get_form). Without assignee_id the dispatch stays unassigned. Not idempotent: calling twice creates two dispatches. Media fields cannot be pre-filled.
The form to dispatch (from gocanvas_list_forms).
immediate_dispatch is sent now; scheduled_dispatch at scheduled_at.
Short name shown on the dispatch calendar.
Pre-filled answers.
The user who gets the dispatch (from gocanvas_list_users); omit to leave it unassigned.
Description shown on the assignee's device.
Scheduled dispatches: start, in the format MM/DD/YYYY h:mm:ss AM, e.g. 12/1/2024 8:00:00 AM.
Department; default is the user's default department.
Scheduled dispatches: end, same format.
Scheduled dispatches: minutes before the start to send a reminder.
Immediate dispatches: send a push notification to the mobile app.
Scheduled dispatches: send a calendar invite.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
WRITE: creates a dispatch, a job that appears on the assignee's mobile device (immediate_dispatch is sent at once, with a push notification when send_notification is true; scheduled_dispatch needs scheduled_at and scheduled_end). Responses pre-fill the assignee's form (entry ids from gocanvas_get_form). Without assignee_id the dispatch stays unassigned. Not idempotent: calling twice creates two dispatches. Media fields cannot be pre-filled.
| Argument | Type | Description |
|---|---|---|
| name | string | Short name shown on the dispatch calendar. |
| form_id* | integer | The form to dispatch (from gocanvas_list_forms). |
| responses | array | Pre-filled answers. |
| assignee_id | integer | The user who gets the dispatch (from gocanvas_list_users); omit to leave it unassigned. |
| description | string | Description shown on the assignee's device. |
| scheduled_at | string | Scheduled dispatches: start, in the format MM/DD/YYYY h:mm:ss AM, e.g. 12/1/2024 8:00:00 AM. |
| department_id | integer | Department; default is the user's default department. |
| dispatch_type* | string | immediate_dispatch is sent now; scheduled_dispatch at scheduled_at. |
| scheduled_end | string | Scheduled dispatches: end, same format. |
| reminder_interval | integer | Scheduled dispatches: minutes before the start to send a reminder. |
| send_notification | boolean | Immediate dispatches: send a push notification to the mobile app. |
| send_calendar_invite | boolean | Scheduled dispatches: send a calendar invite. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"form_id",
"dispatch_type"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Short name shown on the dispatch calendar."
},
"form_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The form to dispatch (from gocanvas_list_forms).",
"exclusiveMinimum": 0
},
"responses": {
"type": "array",
"items": {
"type": "object",
"required": [
"entry_id",
"value"
],
"properties": {
"value": {
"type": "string",
"maxLength": 5000,
"description": "The value to pre-fill, as text."
},
"entry_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The form entry id (from gocanvas_get_form).",
"exclusiveMinimum": 0
},
"multi_key": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Only for looped forms: reference to the looped value (one key per loop row)."
}
}
},
"maxItems": 500,
"description": "Pre-filled answers."
},
"assignee_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The user who gets the dispatch (from gocanvas_list_users); omit to leave it unassigned.",
"exclusiveMinimum": 0
},
"description": {
"type": "string",
"maxLength": 2000,
"description": "Description shown on the assignee's device."
},
"scheduled_at": {
"type": "string",
"maxLength": 40,
"minLength": 6,
"description": "Scheduled dispatches: start, in the format MM/DD/YYYY h:mm:ss AM, e.g. 12/1/2024 8:00:00 AM."
},
"department_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Department; default is the user's default department.",
"exclusiveMinimum": 0
},
"dispatch_type": {
"enum": [
"immediate_dispatch",
"scheduled_dispatch"
],
"type": "string",
"description": "immediate_dispatch is sent now; scheduled_dispatch at scheduled_at."
},
"scheduled_end": {
"type": "string",
"maxLength": 40,
"minLength": 6,
"description": "Scheduled dispatches: end, same format."
},
"reminder_interval": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Scheduled dispatches: minutes before the start to send a reminder."
},
"send_notification": {
"type": "boolean",
"description": "Immediate dispatches: send a push notification to the mobile app."
},
"send_calendar_invite": {
"type": "boolean",
"description": "Scheduled dispatches: send a calendar invite."
}
}
}One dispatch by id with its pre-filled responses, schedule and status.
| Argument | Type | Description |
|---|---|---|
| dispatch_id* | integer | The dispatch id (from gocanvas_list_dispatches). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"dispatch_id"
],
"properties": {
"dispatch_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The dispatch id (from gocanvas_list_dispatches).",
"exclusiveMinimum": 0
}
}
}One form definition, including its screens and entries (field ids and labels). Use format 'flat' for the simplest list of fields (what you need to read submissions or create a dispatch), 'nested' (default) for the full structure, 'metadata' or 'minimal' for less.
| Argument | Type | Description |
|---|---|---|
| format | string | Definition format (default nested). |
| form_id* | integer | The form id (from gocanvas_list_forms). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"form_id"
],
"properties": {
"format": {
"enum": [
"nested",
"flat",
"minimal",
"metadata"
],
"type": "string",
"description": "Definition format (default nested)."
},
"form_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The form id (from gocanvas_list_forms).",
"exclusiveMinimum": 0
}
}
}The user who owns the connected OAuth application: id, login, company id and name, default department and role. Use it to learn the default department id.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}One reference data set with its rows.
| Argument | Type | Description |
|---|---|---|
| reference_data_id* | integer | The reference data id (from gocanvas_list_reference_data). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"reference_data_id"
],
"properties": {
"reference_data_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The reference data id (from gocanvas_list_reference_data).",
"exclusiveMinimum": 0
}
}
}One submission with all its responses (entry id, label, type, value). Accepts the numeric submission id or the client GUID.
| Argument | Type | Description |
|---|---|---|
| submission_id* | string | Numeric submission id (e.g. 691911) or client GUID (e.g. 02ED5FB2-9C61-4F18-AB17-543547DF899B). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"submission_id"
],
"properties": {
"submission_id": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Numeric submission id (e.g. 691911) or client GUID (e.g. 02ED5FB2-9C61-4F18-AB17-543547DF899B)."
}
}
}One user by id: name, login, contact data, default department and role.
| Argument | Type | Description |
|---|---|---|
| user_id* | integer | The user id (from gocanvas_list_users). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The user id (from gocanvas_list_users).",
"exclusiveMinimum": 0
}
}
}Customers (contacts of the Project Management view): individuals or businesses, optionally tied to a site. Paged.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
}
}
}The users in one department with their department role.
| Argument | Type | Description |
|---|---|---|
| department_id* | integer | The department id (from gocanvas_list_departments). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"department_id"
],
"properties": {
"department_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The department id (from gocanvas_list_departments).",
"exclusiveMinimum": 0
}
}
}Departments of the company: id, name, description. The pseudo department -1 'All' is included.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Dispatches (jobs sent to field workers): id, form, assignee, status, schedule. At least one of user_id, department_id or form_id is required. Dates are ISO-8601. Paged.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
| status | string | unassigned, assigned, received or ready (ready ignores the date filters and is scoped to the connected user). |
| form_id | integer | The form. |
| user_id | integer | The user the dispatch is assigned to. |
| end_date | string | Created at or before. |
| project_id | integer | Only dispatches assigned to this project. |
| start_date | string | Created at or after. |
| department_id | integer | The department. |
| scheduled_end_date | string | Scheduled end at or before. |
The report (PDF) definitions attached to a form: id, name, format, whether emailed by default. Paged.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
| form_id* | integer | The form id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"form_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
},
"form_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The form id.",
"exclusiveMinimum": 0
}
}
}Forms (mobile form definitions) the connected user can see: id, name, status, version, department. Paged, 100 per page. Use gocanvas_get_form for a form's fields (entries).
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
| assigned | boolean | true = only the user's assigned, active forms (only has an effect for users who can manage forms). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
},
"assigned": {
"type": "boolean",
"description": "true = only the user's assigned, active forms (only has an effect for users who can manage forms)."
}
}
}User groups: id, name, and the forms and users assigned. Paged.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
}
}
}GPS location events of field users (needs the tracker feature). start_date and end_date are required and may span at most 7 days. Omit user_id for all users of the company. Paged.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
| user_id | integer | Limit to one user. |
| end_date* | string | End of the window (ISO-8601; a bare date means 23:59:59). At most 7 days after start_date. |
| start_date* | string | Start of the window (ISO-8601; a bare date means 00:00:00). |
| use_created_at | boolean | true = filter by upload time (created_at) instead of recorded_at. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"start_date",
"end_date"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
},
"user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Limit to one user.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "End of the window (ISO-8601; a bare date means 23:59:59). At most 7 days after start_date."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "Start of the window (ISO-8601; a bare date means 00:00:00)."
},
"use_created_at": {
"type": "boolean",
"description": "true = filter by upload time (created_at) instead of recorded_at."
}
}
}Projects of the Project Management view. Paged.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
}
}
}Reference data (lookup tables used by forms): id, name, columns, version. Without department_id the user's default department is used.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
| assigned | boolean | true = only reference data used by forms assigned to the user. |
| department_id | integer | Department id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
},
"assigned": {
"type": "boolean",
"description": "true = only reference data used by forms assigned to the user."
},
"department_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Department id.",
"exclusiveMinimum": 0
}
}
}Sites (job locations) of the Project Management view. Paged.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
}
}
}The revision history of a submission (who changed it and when). Paged.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
| submission_id* | string | Numeric submission id or client GUID. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"submission_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
},
"submission_id": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Numeric submission id or client GUID."
}
}
}Completed forms (submissions): id, form, number, created time, department, user, status. At least one of form_id, user_id or user_email is required (user_id and user_email cannot be combined). Default status is completed. Dates filter created_at. Paged, 100 per page. Use gocanvas_get_submission for the answers.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
| status | string | Status filter (default completed). handed-off needs hand_off; custom needs custom_status. |
| form_id | integer | Form id; matches every version of the form. |
| user_id | integer | The user who created the submission. |
| end_date | string | Created at or before (ISO-8601). |
| hand_off | string | Workflow handoff state name; required for status handed-off. |
| start_date | string | Created at or after (ISO-8601). |
| user_email | string | Email (login) of the user who created the submission; not with user_id. |
Users of the company: id, name, email, enabled. Paged, 100 per page.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
| enabled | boolean | true = only enabled users, false = only disabled (default: both). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
},
"enabled": {
"type": "boolean",
"description": "true = only enabled users, false = only disabled (default: both)."
}
}
}Workflows (handoff chains between users) the connected user takes part in, with their handoff states and the count of tasks available to claim. Paged.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
}
}
}WRITE: acknowledges a dispatch (status becomes received). Only works for a dispatch in the assigned state that is assigned to the connected user; repeating it is refused by GoCanvas.
| Argument | Type | Description |
|---|---|---|
| dispatch_id* | integer | The dispatch id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"dispatch_id"
],
"properties": {
"dispatch_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The dispatch id.",
"exclusiveMinimum": 0
}
}
}| scheduled_start_date | string | Scheduled at or after. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
},
"status": {
"enum": [
"unassigned",
"assigned",
"received",
"ready"
],
"type": "string",
"description": "unassigned, assigned, received or ready (ready ignores the date filters and is scoped to the connected user)."
},
"form_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The form.",
"exclusiveMinimum": 0
},
"user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The user the dispatch is assigned to.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "Created at or before."
},
"project_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only dispatches assigned to this project.",
"exclusiveMinimum": 0
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "Created at or after."
},
"department_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The department.",
"exclusiveMinimum": 0
},
"scheduled_end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "Scheduled end at or before."
},
"scheduled_start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "Scheduled at or after."
}
}
}| custom_status | string | Custom status label; required for status custom. |
| department_id | integer | Department id (default: the user's default department). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, 1-based (default 1). Use next_page from the previous reply. 100 results per page."
},
"status": {
"enum": [
"all",
"completed",
"deleted",
"in-progress",
"overdue",
"rejected",
"handed-off",
"assigned",
"unassigned",
"custom",
"saved-to-cloud",
"unfinished"
],
"type": "string",
"description": "Status filter (default completed). handed-off needs hand_off; custom needs custom_status."
},
"form_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Form id; matches every version of the form.",
"exclusiveMinimum": 0
},
"user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The user who created the submission.",
"exclusiveMinimum": 0
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "Created at or before (ISO-8601)."
},
"hand_off": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Workflow handoff state name; required for status handed-off."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "Created at or after (ISO-8601)."
},
"user_email": {
"type": "string",
"maxLength": 254,
"minLength": 3,
"description": "Email (login) of the user who created the submission; not with user_id."
},
"custom_status": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Custom status label; required for status custom."
},
"department_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Department id (default: the user's default department).",
"exclusiveMinimum": 0
}
}
}