API and MCP

MCP server

Connect Claude, ChatGPT, Cursor and other MCP clients to UserTasks: setup, authentication and the full tool list.

UserTasks runs a Model Context Protocol server at /api/mcp (streamable HTTP). AI assistants can list and start workflows, act on tasks, build workflows, decision tables and reports, read the event stream and administer the workspace — always within the credential's permissions.

Connect a client

Use an API key (Settings → API Keys) as a bearer token:

Claude Desktop / Cursor (mcpServers)
{
  "mcpServers": {
    "usertasks": {
      "url": "https://tasks.example.com/api/mcp",
      "headers": { "Authorization": "Bearer <your-api-key>" }
    }
  }
}

Clients that support MCP OAuth discover the authorization server from /.well-known/oauth-protected-resource, register themselves and send the user through consent; no key needed. Clients that can't send headers can use ?key= when the server sets ALLOW_QUERY_KEY_AUTH=true. Browser-based clients must be listed in MCP_ALLOWED_ORIGINS.

Settings → MCP shows your server URL, ready-made client configuration and the tool groups available to you.

Permissions

Each tool requires the permission listed below. With an OAuth token, the token's scopes must also grant it. Mutating tools are audited. A key limited to certain workflows or tables (workflow_ids, table_ids) only sees those.

Good prompts

  • "List my overdue tasks and complete the invoice approvals under 1 000 as Approved."
  • "Build a workflow that triggers when a Vendors row is created, calls the ERP 'Get vendor' reference and assigns a review task to Accounts payable." (The workflows_catalog tool gives the assistant every node type and authoring recipes.)
  • "Show failed runs in the last hour and the integration calls that caused them." (events_list with a trace id.)

Tool reference

Generated from the MCP tool registry:

The server currently registers 197 tools in 19 groups. A tool call is refused unless the credential holds the listed permission (and, for OAuth tokens, a scope that grants it).

Tasks

ToolWhat it doesPermission
tasks_listList tasks with optional filters and pagination.tasks.view_own
tasks_getGet a single task by ID with full details.tasks.view_own
tasks_createCreate a new task.tasks.create
tasks_updateUpdate task fields.tasks.manage_queue
tasks_completeComplete a task with an outcome.tasks.complete
tasks_escalateEscalate a task to another user.tasks.escalate
tasks_redirectRedirect a task to another user.tasks.redirect
tasks_respondAccept, hold, or reject a task in the queue.tasks.complete
tasks_complete_workflowComplete a workflow-assigned user_task with an outcome and resume the paused workflow.tasks.complete
tasks_priority_summarySummarize task priority and due-date pressure for the current tenant.tasks.view_own

Workflows

ToolWhat it doesPermission
workflows_catalogList workflow trigger types, node types, and MCP guidance for prompt-building workflows end to end.workflows.view
workflows_preflightValidate a proposed workflow graph before creation or update.workflows.view
workflows_resolve_dependenciesRewrite a proposed workflow payload using explicit dependency resolutions.workflows.view
workflows_listList workflow definitions.workflows.view
workflows_getGet full workflow details including nodes, edges, trigger config, and optionally recent runs.workflows.view
workflows_createCreate a workflow with trigger, nodes, edges, and user variables.workflows.create
workflows_updateSave draft changes to a workflow: trigger type/config, nodes, edges, user variables, metadata, and active status.workflows.edit
workflows_get_definitionGet the draft definition of a workflow in author-payload shape (name, description, trigger_type, trigger_config, nodes, edges, user_variables, swimlanes, sections, tags) — the same document as GET /api/v1/workflows/{id}…workflows.view
workflows_publishPublish the current draft of a workflow as a new version snapshot.workflows.activate
workflows_deleteDelete a workflow by ID.workflows.delete
workflows_toggleActivate or deactivate a workflow.workflows.activate
workflows_versions_listList version history for a workflow.workflows.view
workflows_version_getGet one published version of a workflow with its full definition (nodes, edges, trigger config, variables).workflows.view
workflows_startStart a workflow execution.workflows.activate
workflows_inputs_getGet the input parameters a workflow run accepts (same as GET /workflows/{id}/inputs): key, label, type (text, number, boolean, date, datetime, json, select, email, url), required, default, description and options, from …workflows.view
workflows_runs_listList workflow runs with status and timing information.workflows.view_runs
workflows_run_getGet details of a workflow run including execution state and optionally step-by-step logs.workflows.view_runs
workflows_run_actionPerform an action on a workflow run: pause, resume, or cancel (same rules as POST /workflows/runs/{id}/action).workflows.activate
workflows_instances_listList live instances of a workflow (runs waiting on a task/event or paused) with their current node, version, waiting-since time and open task (assignee).workflows.view_runs
workflows_instances_migrateMigrate live instances to another version of the workflow (same as POST /workflows/{id}/instances/migrate).workflows.manage_runs

AI agents

ToolWhat it doesPermission
agents_listList AI agents.agents.view
agents_getGet agent details by ID, including integration linkage, declared output variables, and optionally recent runs.agents.view
agents_createCreate a new AI agent that can be referenced in workflow run_agent nodes.agents.create
agents_updateUpdate an existing AI agent by ID, including prompt, tools, output config, governed document/file access, governed data/table scope, governed workflow scope, governed task scope, model settings, and active state.agents.edit
agents_deleteDelete an AI agent by ID.agents.delete
agents_executeExecute an agent with a message by queueing a run.agents.test
agents_runs_listList agent execution runs so MCP can audit outputs, durations, and recent agent activity.agents.view

Data tables

ToolWhat it doesPermission
data_tables_listList custom data tables.data.view
data_tables_getGet a custom table schema including columns, lookup metadata, and table settings so MCP can safely build workflows, reports, and row operations against it.data.view
data_tables_createCreate a new custom data table.data.create
data_tables_update_schemaReplace the schema for an existing custom data table.data.edit_schema
data_tables_deleteDelete a custom data table.data.delete
data_rows_queryQuery rows from a custom table.data.view
data_rows_searchSearch across table rows and return matched columns/snippets to help MCP consumers show the relevant field content.data.view
data_rows_getGet one row of a custom table by ID.data.view
data_rows_upsertInsert or update a row in a custom table.data.manage_rows
data_rows_deleteDelete a row from a custom table.data.manage_rows
data_rows_bulk_deleteDelete several rows of a custom table at once.data.manage_rows

Reports

ToolWhat it doesPermission
reports_queryQuery report data from any source with filters, grouping, and aggregation.reports.view
reports_sources_listList available report data sources with the columns MCP can query.reports.view
reports_source_getGet a single report source with full column metadata, plus report-building helpers such as supported visualizations, chart palettes, and drill target templates.reports.view
reports_previewValidate and preview a full custom report configuration before saving it.reports.view
reports_remediate_configInspect and automatically repair a custom report config before preview or save.reports.edit_own
reports_listList saved custom reports that MCP can inspect or clone.reports.view
reports_getGet a saved report with full configuration.reports.view
reports_createCreate a saved custom report.reports.create
reports_updateUpdate a saved custom report.reports.edit_own
reports_exportExport a saved report as portable JSON so MCP can clone or recreate the report in another tenant.reports.view
reports_importImport a saved report from portable JSON.reports.create
reports_deleteDelete a saved report by ID.reports.delete

Integrations

ToolWhat it doesPermission
connectors_listList available built-in connector templates that MCP can use to create integrations and auto-generate references.integrations.view
connectors_list_installedList the connectors configured in this workspace (tenant connectors: key, display name, enabled flag, masked config, generated integration).integrations.view
connectors_getGet a connector-backed integration with its saved config, generated integration, and generated references.integrations.view
integrations_listList integrations and connector-backed integrations available in the tenant.integrations.view
integrations_getGet integration details (config with credentials masked as "__SECRET__") with references so MCP can inspect the callable surface before wiring workflows, agents, or reports.integrations.view
references_listList integration references across the tenant.integrations.view
references_getGet a single integration reference with its request config, inputs, outputs, and parent integration details.integrations.view
integrations_createCreate a new integration.integrations.create
integrations_create_bundleCreate an integration and its references in one MCP call.integrations.create
connectors_createCreate a connector-backed integration from a built-in connector template.integrations.create
connectors_updateUpdate a connector-backed integration.integrations.edit
connectors_testTest a connector-backed integration using the connector-specific probe flow.integrations.test
connectors_deleteDelete a connector-backed integration including its generated references, backing integration record, and connector record.integrations.delete
integrations_import_api_specCreate an API integration and references from an OpenAPI 2.0/3.x or Postman collection document.integrations.create
integrations_updateUpdate an existing integration, including its configuration and active state.integrations.edit
integrations_deleteDelete an integration by ID.integrations.delete
integrations_testTest an integration connection and return the current connectivity result.integrations.test
references_createCreate an API reference for an integration.integrations.manage_references
references_updateUpdate an API reference, including request config, inputs, outputs, and metadata.integrations.manage_references
references_deleteDelete an API reference by ID.integrations.manage_references
references_bulk_deleteDelete several API references at once (all must belong to this workspace).integrations.manage_references
objects_listList composite objects.integrations.view
objects_getGet a composite object with all of its join sources and any auto-generated references tied to it.integrations.view
objects_createCreate a composite object that joins multiple data tables and/or existing references.integrations.edit
objects_updateUpdate a composite object: name, description, and/or a full replacement source list (same shape as objects_create, or the sources array returned by objects_get).integrations.edit
objects_deleteDelete a composite object, its join sources, and any auto-generated references tied to the object.integrations.delete
integrations_execute_referenceExecute an integration API referenceintegrations.test

Governance

ToolWhat it doesPermission
users_listList users in the tenant so MCP can discover assignees, role targets, team members, and user-context API key subjects.team.view_members
roles_listList all roles (system and custom) with their permissions so MCP can target governance, assignments, and role-based automation safely.team.view_members
team_members_listList users with their role assignments so MCP can understand team-wide governance context and assign work accurately.team.view_members
roles_manageCreate, update, or delete roles, and assign or remove roles from users.team.change_roles
roles_getGet one role with its permission keys.team.view_members
audit_log_queryQuery the permission audit log so MCP can inspect governance changes such as role creation, role assignment, and related access-control events.team.change_roles
teams_listList teams with member counts so MCP can discover assignment targets, routing groups, and team organization.team.view_members
teams_getGet one team with its members.team.view_members
teams_createCreate a new team that can be used for task routing, governance, and workflow assignment.team.invite
teams_updateUpdate a team including its name or description.team.invite
teams_deleteDelete a team and remove all member associations.team.remove
teams_add_memberAdd a user to a team so the team can be used for routing, governance, and workflow assignment.team.invite
teams_remove_memberRemove a user from a team.team.remove
invitations_listList pending invitations that have not yet been accepted.team.invite
invitations_sendInvite someone to the tenant by email.team.invite
invitations_revokeRevoke (delete) a pending invitationteam.invite
invitations_resendEmail a pending invitation again with a fresh link and a new 7-day expiry.team.invite

API keys

ToolWhat it doesPermission
api_keys_listList API keys for this tenant.settings.manage_api_keys
api_keys_createGenerate a new API key.settings.manage_api_keys
api_keys_revokeRevoke an API key by ID.settings.manage_api_keys
api_keys_deletePermanently delete an API key (revoke it first to keep an audit trail of the key row).settings.manage_api_keys

Observability

ToolWhat it doesPermission
events_listRead the unified event stream: workflow runs and step logs, integration calls, agent runs, task lifecycle, system jobs, and (with settings.view) audit and security events.observability.view
integration_calls_listList outbound integration API calls captured by the reference executor.integrations.view
integration_calls_getGet a single integration call log with the full request body, response body, and headers (sensitive values redacted).integrations.view
agent_runs_listList agent execution runs.agents.view
agent_runs_getGet a single agent run with the full conversation (input message, output response), tool_calls array, and token breakdown.agents.view
object_audit_log_queryQuery the unified object audit log — every create, update, delete, publish, toggle, and configuration change across the platform.settings.view
trace_getGet all entities that share a single trace_id — the full call graph for a workflow execution.workflows.view_runs

Decision tables

ToolWhat it doesPermission
decision_tables_listList business rules / decision tables.workflows.view
decision_tables_getGet a single decision table with inputs, outputs, rules, and metadata.workflows.view
decision_tables_exportExport a decision table as portable JSON so MCP can clone, version, or recreate the rule asset in another tenant.workflows.view
decision_tables_createCreate a business rule / decision table with custom inputs, outputs, and ordered rules.workflows.create
decision_tables_updateUpdate a decision table.workflows.edit
decision_tables_deleteDelete a decision table by ID (queued; workflows that call it will fail).workflows.delete
decision_tables_testTest a decision table with sample input values and return the matched rule plus output payload.workflows.view
decision_tables_importImport a decision table from portable JSON.workflows.create

Custom workflow steps

ToolWhat it doesPermission
workflow_activities_listList custom workflow activities available in Extensibility.extensibility.view
workflow_activities_getGet a single custom workflow activity including source code, manifest, demo inputs, and metadata.extensibility.view
workflow_activities_exportExport a custom workflow activity as portable JSON so MCP can recreate the activity in another tenant or environment.extensibility.view
workflow_activities_createCreate a custom workflow activity asset.extensibility.create
workflow_activities_updateUpdate an existing custom workflow activity.extensibility.edit
workflow_activities_deleteDelete a custom workflow activity asset from Extensibility.extensibility.delete
workflow_activities_importImport a portable custom workflow activity JSON export.extensibility.create

Email templates

ToolWhat it doesPermission
email_templates_listList email templates (name, subject, default flag).workflows.view
email_templates_getGet an email template with its subject, HTML body and plain-text body.workflows.view
email_templates_createCreate an email template.workflows.create
email_templates_updateUpdate an email template.workflows.edit
email_templates_deleteDelete an email template.workflows.edit
email_templates_previewRender an email template with sample variables using the same resolver as the send_email node.workflows.view

Retention

ToolWhat it doesPermission
retention_policies_listList and search centrally governed retention policies, optionally filtering by scope or policy mode so MCP can discover reusable governance rules for tables/lists, rows, and roles.settings.view
retention_policies_list_assetsList which tables, rows, and roles currently use a retention policy so MCP can assess governance coverage and cleanly plan updates or deletions.settings.view
retention_policies_getGet a single retention policy by ID so MCP can inspect exact retention behavior before assignment or reuse.settings.view
retention_policies_createCreate a centrally governed retention policy that can later be assigned to tables/lists, individual rows, and roles.settings.edit
retention_policies_updateUpdate a centrally governed retention policy, including its mode, timing, description, and allowed scopes.settings.edit
retention_policies_deleteDelete a retention policy after confirming it is no longer assigned to any tables, rows, or roles.settings.edit
retention_policies_assignAssign or clear a centrally governed retention policy on a table/list, individual row, or role.settings.edit

Webhooks

ToolWhat it doesPermission
webhooks_listList the inbound webhooks of a workflow (slug, inbound url, active flag, payload mapping, receive count).settings.manage_webhooks
webhooks_getGet one inbound webhook (the secret is never returned).settings.manage_webhooks
webhooks_createCreate an inbound webhook that starts the workflow.settings.manage_webhooks
webhooks_updateChange a webhook slug, payload mapping or active flag.settings.manage_webhooks
webhooks_deleteDelete an inbound webhook; its url stops working.settings.manage_webhooks
webhooks_rotateReplace a webhook secret (the old one stops working).settings.manage_webhooks

Log destinations

ToolWhat it doesPermission
log_destinations_listList log export destinations (Splunk HEC, Datadog, OTLP/HTTP, webhook, syslog, Azure Monitor, Event Hubs, Cloud Logging, Pub/Sub) with status and cursor.observability.view
log_destinations_getGet one log export destination (credentials masked as __SECRET__).observability.view
log_destinations_statusDelivery status of a log export destination: cursor, lag (events and seconds), events sent, last success and last error.observability.view
log_destinations_createCreate a log export destination that ships the event stream to Splunk HEC, Datadog Logs, an OpenTelemetry collector (OTLP/HTTP), an HTTPS webhook, a syslog receiver (RFC 5424 over TLS), Azure Monitor (Logs Ingestion API…settings.edit
log_destinations_updateUpdate a log export destination.settings.edit
log_destinations_deleteDelete a log export destination (shipping stops; already delivered events are unaffected).settings.edit
log_destinations_reset_cursorMove a destination's cursor: "now" skips the unsent backlog, "retention_start" re-sends every event still retained.settings.edit
log_destinations_testSend one synthetic system.test event to a log export destination through the real formatter and connection; returns ok, HTTP status code, latency and the (redacted) error.settings.edit

directory_sync

ToolWhat it doesPermission
directory_sync_listList directory connections (Entra ID, Okta, LDAP / Active Directory, Google Workspace, SCIM) with sync state, linked user/group counts and the SCIM base URL.settings.view
directory_sync_getGet one directory connection (settings, masked credentials, sync state).settings.view
directory_sync_connectConnect a directory.settings.edit
directory_sync_updateUpdate a directory connection: settings and credentials merge over the stored ones (null removes a key, __SECRET__ keeps a secret); re-verified when they change.settings.edit
directory_sync_disconnectDisconnect a directory: syncing stops and credentials are removed (SCIM: every token is revoked).settings.edit
directory_sync_testTest a directory connection, optionally with unsaved settings/credentials merged over the stored ones.settings.edit
directory_sync_startStart a directory sync run now (background).settings.edit
directory_sync_runs_listList directory sync runs, newest first, with status, mode (full/delta), stats and errors.settings.view
scim_tokens_listList SCIM tokens (name, prefix, scopes, last use, expiry) — never the tokens themselves.settings.view
scim_tokens_createCreate a SCIM bearer token for an identity provider (returned once) and enable SCIM provisioning.settings.edit
scim_tokens_rotateReplace a SCIM token with a new one (same name and scopes, returned once); the old one stops working now or after grace_minutes.settings.edit
scim_tokens_deleteRevoke and delete a SCIM token.settings.edit

Workspace theme

ToolWhat it doesPermission
workspace_theme_getGet the workspace theme every member sees (colours for light and dark, fonts, shape, density, sidebar/topbar style, logos), its version and any WCAG contrast warnings.tasks.view_own
workspace_theme_presets_listList the built-in theme templates (id, name, description, category and a few colours per mode).tasks.view_own
workspace_theme_updateReplace the workspace theme.settings.edit
workspace_theme_apply_presetReplace the workspace theme with a built-in template (see workspace_theme_presets_list).settings.edit
workspace_theme_font_uploadUpload a woff2 font (base64, at most 1 MB) to the workspace brand-fonts folder.settings.edit

config

ToolWhat it doesPermission
config_exportExport workspace configuration as one portable manifest (config as code).tasks.view_own
config_applyApply a config manifest (from config_export or a config-as-code folder) to this workspace: creates or updates, never deletes.tasks.view_own

packages

ToolWhat it doesPermission
packages_listList packages authored in this workspace (bundles of a process: workflows and everything they use, built into signed .utpkg files).packages.view
packages_getGet a package (by id or slug) and its recent versions.packages.view
packages_previewPreview what a package of these root artifacts would contain: dependencies (and why each is included), data tables, and the requirements an install will ask for (credentials, environment URLs, assignees).packages.view
packages_createCreate a package from root artifacts; dependencies are included automatically.packages.manage
packages_updateUpdate a package: metadata, add / remove artifacts, data modes.packages.manage
packages_deleteDelete a package and its built versions (installs in other workspaces are unaffected).packages.manage
packages_contentsWhat a package contains now: artifacts with the reason each is included, data modes and requirements.packages.view
packages_versions_listList built versions of a package.packages.view
packages_buildBuild, sign and publish a new version of a package (version, or bump the latest: patch by default).packages.manage
packages_version_getGet one built version (manifest: requirements, files, checksum, signature).packages.view
packages_downloadDownload a built version as base64 .utpkg.packages.view
packages_inspectVerify a .utpkg (checksum, file hashes, signature and signer trust) and list its assets, data, requirements and dependencies.packages.view
packages_installs_listThe package library: installed packages with version, source, signer and status (complete / incomplete).packages.view
packages_installs_getAn installed package: requirement checklist (what still needs configuration) and installed assets.packages.view
packages_install_planDry run of installing or upgrading a package: per-asset create / update / unchanged with diffs, requirements (met / missing), data rows, dependencies and blockers.packages.view
packages_installInstall a package, or upgrade it in place when installed already (local credentials are kept).packages.install
packages_upgradeUpgrade an installed package to the version in the file (dry_run shows the diff first).packages.install
packages_complete_setupComplete setup of an incomplete install: supply the missing requirement values; the assets they unblock are enabled and its workflows activated.packages.install
packages_uninstallUninstall a package: removes its assets.packages.install
packages_historyPackage history, newest first: every install, upgrade, reinstall, downgrade, reconfigure (complete setup) and uninstall, failed attempts included — who, when, channel, version from → to, signature status, counts, requir…packages.view
packages_history_getOne package history event with the full plan / diff that was applied (secrets masked).packages.view