snowbikemike avatar

TaScan

snowbikemike/tascan-mcp

Connects Claude to TaScan's universal task protocol platform for managing physical-world work without app downloads. Exposes 22 tools across projects, events, tasks, workers, QR code generation, and completion reports. You can create construction safety checklists, set up hotel room turnovers, deploy warehouse receiving templates, or analyze worker performance across events. Tasks support multiple types including photo verification, checkpoints, and safety flags. Useful when you need AI-assisted coordination of real-world operations like live events, construction sites, or FEMA disaster response where workers scan QR codes to complete verified tasks. Requires a TaScan API key from the admin portal.

GitHub stars
1
tools
80
auth
Secret needed
transport
STDIO, HTTP
env vars
2
last updated
Aug 18, 2026

Install

From registry metadata
$ npx add-mcp https://app.tascan.io/mcp --name tascan-mcp

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http tascan-mcp https://app.tascan.io/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 80 tools

Verified live against the running server on Nov 6, 2026.

tascan_list_projectsList TaScan projects in the organization (each with its number, e.g. P-00001, external_refs, report_options and its calendar_url, webcal_url, map_url and wallet_pass_url). Optional filters: status (exact, comma list), number (exact), ref (matches any external_refs[].ref exactl...7 params

List TaScan projects in the organization (each with its number, e.g. P-00001, external_refs, report_options and its calendar_url, webcal_url, map_url and wallet_pass_url). Optional filters: status (exact, comma list), number (exact), ref (matches any external_refs[].ref exactl...

Parameters* required
ends_beforestring
YYYY-MM-DD: only projects whose dates end before this day
numberstring
Only the project with this project number (exact, e.g. P-00012)
refstring
Only projects whose external_refs carry this ref (exact, e.g. P14-4680)
starts_afterstring
YYYY-MM-DD: only projects whose dates start after this day
statusstring
Only projects with this status (exact; comma-separated list allowed, e.g. "active,archived")
windowstring
Only projects overlapping this week (Sunday-Saturday) or this calendar monthone of week · month
zonestring
IANA time zone for the date filters, e.g. America/Los_Angeles (default: the org time zone)
tascan_create_projectCreate a new TaScan project (top-level container for events). number is optional (the next P-number is assigned when omitted; a number already used in the org is refused 409). external_refs links customer job numbers.4 params

Create a new TaScan project (top-level container for events). number is optional (the next P-number is assigned when omitted; a number already used in the org is refused 409). external_refs links customer job numbers.

Parameters* required
external_refsarray
Up to 10 external references, each { source (1-40 chars, e.g. "EEQ"), ref (1-80 chars, e.g. "P14-4680") }
locationstring
Project location / venue
name*string
Project name
numberstring
Project number, 1-40 letters, digits, dot, underscore or hyphen, unique in the org (default: next P-00001 style number). P-<digits> numbers are assigned automatically and refused 400 here; use your...
tascan_get_projectGet details of a specific project1 params

Get details of a specific project

Parameters* required
project_id*string
Project ID
tascan_update_projectUpdate a project (name, location, status, dates, number, external_refs, labor_rules, report_options). A number already used in the org is refused 409; external_refs replaces the whole list. report_options is merged into the stored object (other keys kept, a key set to null rem...10 params

Update a project (name, location, status, dates, number, external_refs, labor_rules, report_options). A number already used in the org is refused 409; external_refs replaces the whole list. report_options is merged into the stored object (other keys kept, a key set to null rem...

Parameters* required
end_datestring
End date (ISO)
external_refsarray
The full list of external references (replaces the current one): up to 10 { source (1-40 chars), ref (1-80 chars) }
labor_rulesobject
An object (or null to clear): { ot_after_hours (> 0, <= 24, or null), dt_after_hours (> ot_after_hours, or > 10 when that is null, <= 24, or null) }
locationstring
New location
namestring
New name
numberstring
New project number, 1-40 letters, digits, dot, underscore or hyphen, unique in the org. A P-<digits> number is refused 400 unless it is the project's current number
project_id*string
Project ID
report_optionsobject
Merged into the stored options: show_location, show_time, auto_publish_receipts (booleans), client_photos (off | on | ask); a key set to null is removed; null clears them all
start_datestring
Start date (ISO)
statusstring
Statusone of active · archived
tascan_delete_projectDelete a project that has NO history, after typing its name. Refused 409 project_has_history (with the counts) when it has any task or subtask completion, action receipt, issue, invoice or coordination task: archive it instead (tascan_update_project status archived). confirm_n...3 params

Delete a project that has NO history, after typing its name. Refused 409 project_has_history (with the counts) when it has any task or subtask completion, action receipt, issue, invoice or coordination task: archive it instead (tascan_update_project status archived). confirm_n...

Parameters* required
auditobject
Optional audit note stored verbatim in the audit event (e.g. { reason })
confirm_name*string
The project name, typed exactly
project_id*string
Project ID to delete
tascan_create_eventCreate a new event (task list) within a project. Supports team_mode (shared completions) and multi_instance (each worker gets isolated copy — great for surveys, onboarding, info collection). team_mode and multi_instance cannot both be true.8 params

Create a new event (task list) within a project. Supports team_mode (shared completions) and multi_instance (each worker gets isolated copy — great for surveys, onboarding, info collection). team_mode and multi_instance cannot both be true.

Parameters* required
access_levelstring
SR-S2: open, assigned or secured (null = automatic)one of open · assigned · secured
agent_assigneestring
SR-S2: the agent_id whose key alone may reach this list and its tasks
assigned_worker_idsarray
Worker UUIDs to assign to this event. Each gets a personal tap-to-open link. Note: a worker holds one event assignment per project — assigning moves them.
descriptionstring
Event description
multi_instanceboolean
Multi-instance — each worker gets isolated copy
name*string
Event name
project_id*string
Project ID
team_modeboolean
Team mode — shared completions
tascan_list_eventsList all events (task lists) within a project1 params

List all events (task lists) within a project

Parameters* required
project_id*string
Project ID
tascan_get_eventGet details of a specific event (task list) including its tasks1 params

Get details of a specific event (task list) including its tasks

Parameters* required
list_id*string
Task list (event) ID
tascan_update_eventUpdate an event / task list (name, description, team_mode, multi_instance, timer_mode). team_mode and multi_instance cannot both be true.9 params

Update an event / task list (name, description, team_mode, multi_instance, timer_mode). team_mode and multi_instance cannot both be true.

Parameters* required
access_levelstring
SR-S2: raise freely; lowering needs an owner/admin-tier key (tascan_set_access rules)one of open · assigned · secured
agent_assigneestring
SR-S2: the agent_id whose key alone may reach this list, or null (removing one needs an owner/admin-tier key)
assigned_worker_idsarray
Worker UUIDs to assign to this event (additive — workers not named are left alone). Each gets a personal tap-to-open link. Note: a worker holds one event assignment per project — assigning moves them.
descriptionstring
New description
list_id*string
Task list (event) ID
multi_instanceboolean
Multi-instance — each worker gets isolated copy
namestring
New name
team_modeboolean
Team mode — shared completions
timer_modestring
Timer mode (auto or manual)
tascan_delete_eventDelete an event (task list) and all its tasks and completions. This action is irreversible.1 params

Delete an event (task list) and all its tasks and completions. This action is irreversible.

Parameters* required
list_id*string
Task list (event) ID to delete
tascan_add_tasksAdd one or more tasks to an event (task list). Supports bulk creation. IMPORTANT: Set response_type correctly — use "text" for info collection (names, phones, emails, notes), "photo" for visual verification (inspections, serial numbers, damage checks), "checkbox" only for simp...3 params

Add one or more tasks to an event (task list). Supports bulk creation. IMPORTANT: Set response_type correctly — use "text" for info collection (names, phones, emails, notes), "photo" for visual verification (inspections, serial numbers, damage checks), "checkbox" only for simp...

Parameters* required
idempotency_keystring
B1: optional replay key (up to 1024 chars, no braces) sent verbatim as the Idempotency-Key header instead of a fresh one per call — a retried call with the SAME key replays the original response in...
list_id*string
Task list (event) ID
tasks*array
Array of tasks to create
tascan_get_signature_bundleFetch the signature bundle for one signed document by signature assertion id (the signature_assertion_id inside the response value of a completed signature task). Returns the self-contained JSON an auditor can verify offline without trusting TaScan: the signed challenge preima...1 params

Fetch the signature bundle for one signed document by signature assertion id (the signature_assertion_id inside the response value of a completed signature task). Returns the self-contained JSON an auditor can verify offline without trusting TaScan: the signed challenge preima...

Parameters* required
signature_assertion_id*string
signature_assertion_id (UUID) from the completion response value of a signature task
tascan_dispatch_to_agentPREFERRED tool for sending work to an AI agent. Dispatches a task to the agent's inbox — picked up and executed automatically. No list ID needed. REQUIRES the agent:dispatch permission on this connection (CODE:/SHELL: tasks also require agent:dispatch:code) — reconnect and tic...3 params

PREFERRED tool for sending work to an AI agent. Dispatches a task to the agent's inbox — picked up and executed automatically. No list ID needed. REQUIRES the agent:dispatch permission on this connection (CODE:/SHELL: tasks also require agent:dispatch:code) — reconnect and tic...

Parameters* required
agentstring
Agent ID or name to dispatch to (default: claude-code-local). Use tascan_list_agents to see options. An unknown agent is an error, never a silent fallback.
prioritystring
Priority level (default: normal). The urgent marker is placed AFTER the routing prefix so it never breaks routing.one of normal · urgent
task*string
The full task text. START it with CODE: SHELL: PLAN: MCP: RESEARCH: WRITE: or REVIEW: for routing (prefix-only — nothing may precede it), or leave it unprefixed (DEFAULT). The whole text is stored...
tascan_list_agentsList all registered AI agents with their capabilities, inbox IDs, and status. Like reading input labels on a video matrix — discover which agents are available and what they can do before dispatching work.

List all registered AI agents with their capabilities, inbox IDs, and status. Like reading input labels on a video matrix — discover which agents are available and what they can do before dispatching work.

No parameters. Call it with no arguments.

tascan_register_agentRegister a new AI agent in the agent registry. The agent will appear in tascan_list_agents and can receive dispatched tasks. Self-registration for AI agents joining the TaScan network. REQUIRES the agent:dispatch permission (defining a dispatch target is a dispatch permission)...9 params

Register a new AI agent in the agent registry. The agent will appear in tascan_list_agents and can receive dispatched tasks. Self-registration for AI agents joining the TaScan network. REQUIRES the agent:dispatch permission (defining a dispatch target is a dispatch permission)...

Parameters* required
capabilities*array
Task type prefixes this agent handles (e.g. ["RESEARCH", "WRITE"])
descriptionstring
What this agent does
id*string
Unique agent ID (e.g. "my-agent-1")
inbox_id*string
Task list ID this agent monitors for new tasks
locationstring
Where the agent runs (e.g. "AWS us-east-1")
modelstring
Model powering this agent (e.g. "claude-sonnet-4-6")
name*string
Display name (e.g. "Research Bot")
type*string
Agent typeone of local · cloud · hybrid
worker_idstring
TaScan worker ID for this agent
tascan_list_tasksList the tasks in an event (task list). status "open" returns only tasks with no completion yet: use it when checking for work to do, so a long list is not re-read in full. "done" returns only completed tasks; "all" (default) returns every task.2 params

List the tasks in an event (task list). status "open" returns only tasks with no completion yet: use it when checking for work to do, so a long list is not re-read in full. "done" returns only completed tasks; "all" (default) returns every task.

Parameters* required
list_id*string
Task list (event) ID
statusstring
open = not completed yet (use this to find work), done = completed, all = everything (default).one of open · done · all
tascan_get_taskGet details of a specific task including completions and subtasks. Each completion carries photo_url (raw storage path, stable) and photo_signed_url (short-lived fetchable URL, ~1h; null when no photo) so you can actually view the photo evidence. Tasks dispatched to an AI agen...1 params

Get details of a specific task including completions and subtasks. Each completion carries photo_url (raw storage path, stable) and photo_signed_url (short-lived fetchable URL, ~1h; null when no photo) so you can actually view the photo evidence. Tasks dispatched to an AI agen...

Parameters* required
task_id*string
Task ID
tascan_get_receiptFetch the signed Action Receipt (Ed25519 JWS) for one completed task by completion_id (tascan_get_task -> completions[].id). Returns a readable summary (what, who, verification, evidence hashes, outcome, ledger chain) plus receipt_id/serial/kid, the compact JWS and the public...2 params

Fetch the signed Action Receipt (Ed25519 JWS) for one completed task by completion_id (tascan_get_task -> completions[].id). Returns a readable summary (what, who, verification, evidence hashes, outcome, ledger chain) plus receipt_id/serial/kid, the compact JWS and the public...

Parameters* required
completion_id*string
task_completions.id (UUID) - from tascan_get_task -> completions[].id
profilestring
full (default) = the org view with the unsigned private block; public = the separately signed public export profile: no raw org, list, project, worker, run or trace id (each is a 16-hex id_hash), n...one of full · public
tascan_update_taskUpdate a task (title, description, response_type, flags, sort_order). A task that sits in an AI agent inbox is agent input (the runner executes title + description), so ANY edit to it needs the agent:dispatch permission — agent:dispatch:code when the task is or becomes CODE:/S...11 params

Update a task (title, description, response_type, flags, sort_order). A task that sits in an AI agent inbox is agent input (the runner executes title + description), so ANY edit to it needs the agent:dispatch permission — agent:dispatch:code when the task is or becomes CODE:/S...

Parameters* required
access_levelstring
SR-S2: the task's own level (null = inherit the list); lowering needs an owner/admin-tier keyone of open · assigned · secured
assigned_tostring
Worker to assign this task to — pass the worker UUID (validated against your org and stored as the worker's name, which is how the worker portal matches "my tasks"). A plain name string is also acc...
descriptionstring
New description
is_safety_checkpointboolean
Safety-critical flag
required_equipmentstring
Equipment this task depends on (free text)
requires_photoboolean
Require photo
response_configobject
Response configuration. For "choice": {options: [...]}. See tascan_add_tasks.
response_typestring
See tascan_add_tasks for guidance. "text" for info collection, "photo" for visual proof, "checkbox" for yes/no only, "link" for the worker submitting a URL, "url" for the worker visiting a preset U...one of checkbox · photo · text · number · date · choice
sort_ordernumber
Sort position
task_id*string
Task ID
titlestring
New title
tascan_reply_with_listReply to a task list WITH a task list — the two-way tasking primitive. Creates a new list linked into the parent's thread, aimed back at whoever sent the original (e.g. "Grant access — pick a window" with response_type date, or an info request with response_type text). The org...4 params

Reply to a task list WITH a task list — the two-way tasking primitive. Creates a new list linked into the parent's thread, aimed back at whoever sent the original (e.g. "Grant access — pick a window" with response_type date, or an info request with response_type text). The org...

Parameters* required
author_namestring
Who is replying (shown in the thread)
parent_list_id*string
The list being replied to
tasks*array
Items the recipient answers — each becomes a typed task
title*string
Reply list title (e.g. "Before I can start...")
tascan_add_subtasksAdd one or more subtasks to a task (bulk). Subtasks support typed responses: "number" for per-set data (reps, weight, distance), "text" for notes, "choice" for options, "checkbox" for simple steps. Set-logging example: task "Bench Press" with subtasks Set 1/Set 2/Set 3 each re...2 params

Add one or more subtasks to a task (bulk). Subtasks support typed responses: "number" for per-set data (reps, weight, distance), "text" for notes, "choice" for options, "checkbox" for simple steps. Set-logging example: task "Bench Press" with subtasks Set 1/Set 2/Set 3 each re...

Parameters* required
subtasks*array
Array of subtasks to create
task_id*string
Parent task ID
tascan_list_subtasksList the subtasks of a task, including completion state, stored response values, and completion timestamps (per-set timing).1 params

List the subtasks of a task, including completion state, stored response values, and completion timestamps (per-set timing).

Parameters* required
task_id*string
Parent task ID
tascan_update_subtaskUpdate a subtask (title, description, response_type, response_config, requires_photo, sort_order).7 params

Update a subtask (title, description, response_type, response_config, requires_photo, sort_order).

Parameters* required
descriptionstring
requires_photoboolean
response_configobject
response_typestring
"link" = the worker submits a URL. "url" = the worker visits a preset URL and confirms. "file" = the worker uploads a file.one of checkbox · number · text · choice · link · url
sort_ordernumber
subtask_id*string
Subtask ID
titlestring
tascan_complete_subtaskComplete a subtask, optionally recording a typed response_value (e.g. the weight or reps for that set). Each completion is timestamped, so consecutive set completions yield per-set durations. Returns progress including all_subtasks_complete — when true, complete the parent tas...4 params

Complete a subtask, optionally recording a typed response_value (e.g. the weight or reps for that set). Each completion is timestamped, so consecutive set completions yield per-set durations. Returns progress including all_subtasks_complete — when true, complete the parent tas...

Parameters* required
notesstring
Optional notes
response_valuestring
Typed response value (for number/text/choice subtasks), e.g. "165"
subtask_id*string
Subtask ID to complete
worker_idstring
Worker performing the completion (optional)
tascan_delete_subtaskDelete a subtask and its completions. This action is irreversible.1 params

Delete a subtask and its completions. This action is irreversible.

Parameters* required
subtask_id*string
Subtask ID to delete
tascan_delete_taskDelete a specific task and its completions. This action is irreversible.1 params

Delete a specific task and its completions. This action is irreversible.

Parameters* required
task_id*string
Task ID to delete
tascan_complete_taskComplete an ORDINARY task on behalf of a worker. Inserts a completion record and timer event. Coordination-cycle tasks (a CODE:/REVIEW: build or review, a Decision / Question / Integrate / Parked card on a project Decisions list — tasks that carry `coord`) are refused with 403...5 params

Complete an ORDINARY task on behalf of a worker. Inserts a completion record and timer event. Coordination-cycle tasks (a CODE:/REVIEW: build or review, a Decision / Question / Integrate / Parked card on a project Decisions list — tasks that carry `coord`) are refused with 403...

Parameters* required
notesstring
Optional completion notes
on_behalf_ofstring
Worker ID the completion is done on behalf of (for an owner/admin-tier key the same as worker_id; recorded)
response_valuestring
Response value (for text/number/choice tasks)
task_id*string
Task ID to complete
worker_idstring
Worker ID the completion is recorded for (an agent key: omit it, or pass its own worker)
tascan_list_workersList workers (taskees) in the organization. Supports filtering by name/email/phone substring, contact-info presence, and last-activity date. Each row includes completion_count (total task completions).6 params

List workers (taskees) in the organization. Supports filtering by name/email/phone substring, contact-info presence, and last-activity date. Each row includes completion_count (total task completions).

Parameters* required
active_sincestring
ISO date/datetime — only workers with last_active_at on/after this
actor_kindstring
Only these kinds of worker row: person, agent, admin or device, or a comma list (e.g. "person,agent")
has_emailboolean
true/false — same for email
has_phoneboolean
true = only workers with a phone on file; false = only without
include_inactiveboolean
true = also include inactive workers (e.g. tombstones left by a merge or delete) — useful for auditing right after tascan_merge_workers / tascan_delete_worker
querystring
Substring match on name, email, or phone
tascan_create_workerCreate a new worker (taskee) in the organization3 params

Create a new worker (taskee) in the organization

Parameters* required
emailstring
Email
name*string
Worker name
phonestring
Phone number
tascan_update_workerUpdate a worker profile (name, phone, email, actor_kind), or deactivate / reactivate the worker (active false / true with an optional reason: receipted as a ledger event first, never a delete; a merged record is never reactivated). Changing actor_kind to or from agent or admin...7 params

Update a worker profile (name, phone, email, actor_kind), or deactivate / reactivate the worker (active false / true with an optional reason: receipted as a ledger event first, never a delete; a merged record is never reactivated). Changing actor_kind to or from agent or admin...

Parameters* required
activeboolean
SR-API3: false deactivates the worker, true reactivates it (receipted)
actor_kindstring
What this worker row stands for (to or from agent / admin: owner or admin session only)one of person · agent · admin · device
emailstring
New email
namestring
New name
phonestring
New phone
reasonstring
Why (recorded with an active change; at most 500 characters)
worker_id*string
Worker ID
tascan_generate_qrGenerate a QR code for a task list (event) that workers can scan to access tasks. TaScan draws the QR itself (an SVG, also returned as a data: URI in qr_image_url); no third-party QR service ever sees the link.2 params

Generate a QR code for a task list (event) that workers can scan to access tasks. TaScan draws the QR itself (an SVG, also returned as a data: URI in qr_image_url); no third-party QR service ever sees the link.

Parameters* required
list_id*string
Task list (event) ID
stylestring
Reserved for saved QR styles (SR-P4c): accepted and ignored today
tascan_share_listGet a task list's share link and its QR code (an SVG drawn by TaScan; no third-party QR service), and optionally send the link to one person: send.phone or send.worker_id texts it through TaScan's guarded SMS lane (recipient must be known to your org, STOP opt-outs and limits...3 params

Get a task list's share link and its QR code (an SVG drawn by TaScan; no third-party QR service), and optionally send the link to one person: send.phone or send.worker_id texts it through TaScan's guarded SMS lane (recipient must be known to your org, STOP opt-outs and limits...

Parameters* required
list_id*string
Task list (event) ID
sendobject
Optional: send the link to ONE recipient — { phone } or { worker_id } (text) or { email }, plus an optional message (at most 300 characters)
stylestring
Reserved for saved QR styles (SR-P4c): accepted and ignored today
tascan_apply_templateApply a pre-built template to a task list, adding all template tasks2 params

Apply a pre-built template to a task list, adding all template tasks

Parameters* required
list_id*string
Task list (event) ID
template_slug*string
Template slug (e.g. "conference-load-in", "warehouse-receiving")
tascan_list_templatesList available task templates (built-in and saved)1 params

List available task templates (built-in and saved)

Parameters* required
categorystring
Filter by category (e.g. "live-events", "hospitality", "logistics")
tascan_get_reportGet completion report for a task list (event) including task status, completions, workers, and photos. Set include_responses to also return the actual submitted response data (numbers, text, choices) for each completed task plus a per-task photos list with fetchable signed URL...2 params

Get completion report for a task list (event) including task status, completions, workers, and photos. Set include_responses to also return the actual submitted response data (numbers, text, choices) for each completed task plus a per-task photos list with fetchable signed URL...

Parameters* required
include_responsesboolean
Include the actual submitted response values for each completed task (default false — keeps the payload light)
list_id*string
Task list (event) ID
tascan_query_responsesQuery one task's submitted responses across every list in a project — e.g. the same exercise repeated across many workout lists returns one chronological progression series instead of N report lookups. Match by task title pattern or exact task ID. Subtask completions interleav...3 params

Query one task's submitted responses across every list in a project — e.g. the same exercise repeated across many workout lists returns one chronological progression series instead of N report lookups. Match by task title pattern or exact task ID. Subtask completions interleav...

Parameters* required
limitnumber
Max responses to return (default 200, max 500)
project_id*string
Project ID
task*string
Task title pattern (case-insensitive substring) or exact task ID
tascan_list_issuesList all issues for a task list (event). Returns open, acknowledged, and resolved issues with severity, type, and category. Use this to discover issues that need AI analysis via tascan_analyze_issue.1 params

List all issues for a task list (event). Returns open, acknowledged, and resolved issues with severity, type, and category. Use this to discover issues that need AI analysis via tascan_analyze_issue.

Parameters* required
list_id*string
Task list (event) ID
tascan_analyze_issueStep 1 of the Closed-Loop Autonomous Operations Protocol. Retrieves full issue context including worker info, message thread, project history, and recent similar issues. Use this data to reason about the root cause and generate a remediation plan. Also supports server-side AI...2 params

Step 1 of the Closed-Loop Autonomous Operations Protocol. Retrieves full issue context including worker info, message thread, project history, and recent similar issues. Use this data to reason about the root cause and generate a remediation plan. Also supports server-side AI...

Parameters* required
issue_id*string
Issue ID to analyze
server_side_aiboolean
If true, the server calls Anthropic API directly for AI analysis (default: false — returns raw data for MCP client to analyze)
tascan_recommend_fixStep 2 of the Closed-Loop Autonomous Operations Protocol. Post an AI-generated recommendation to an issue thread. Accepts both a text recommendation and an optional structured_recommendation object with task definitions for auto-dispatch. The recommendation is persisted in the...4 params

Step 2 of the Closed-Loop Autonomous Operations Protocol. Post an AI-generated recommendation to an issue thread. Accepts both a text recommendation and an optional structured_recommendation object with task definitions for auto-dispatch. The recommendation is persisted in the...

Parameters* required
ai_agentstring
Name of the AI agent posting (default: TaScan AI)
issue_id*string
Issue ID to recommend a fix for
recommendation*string
The AI-generated recommendation text (clear, actionable instructions)
structured_recommendationobject
Optional structured recommendation with tasks for auto-dispatch. Format: { recommendation_summary, confidence_score, tasks: [{ title, description, response_type, requires_photo, is_safety_checkpoin...
tascan_dispatch_instructionStep 3 of the Closed-Loop Autonomous Operations Protocol. Dispatches remediation to the worker via MULTI-CHANNEL delivery: (1) issue thread message, (2) in-app notification, (3) progress feed update, (4) SMS if phone on file, (5) optional remediation task list creation. Closes...7 params

Step 3 of the Closed-Loop Autonomous Operations Protocol. Dispatches remediation to the worker via MULTI-CHANNEL delivery: (1) issue thread message, (2) in-app notification, (3) progress feed update, (4) SMS if phone on file, (5) optional remediation task list creation. Closes...

Parameters* required
ai_agentstring
Name of the AI agent dispatching (default: TaScan AI)
instruction*string
Clear, actionable instruction for the worker to execute
issue_id*string
Issue ID this instruction relates to
recommendation_summarystring
One-line summary for the task list description
remediation_tasksarray
Optional array of tasks to create as a remediation task list. Each: { title, description, response_type, requires_photo, is_safety_checkpoint, sort_order }
send_smsboolean
Send SMS to worker (default: true if phone on file)
worker_idstring
Target worker ID (defaults to the worker who reported the issue)
tascan_auto_resolveFULL Closed-Loop Autonomous Operations Protocol in one call. Server-side AI analyzes the issue, generates remediation tasks, creates a task list, and dispatches to the worker — all without human intervention. This executes Patent Claim 7: autonomous operations from issue detec...1 params

FULL Closed-Loop Autonomous Operations Protocol in one call. Server-side AI analyzes the issue, generates remediation tasks, creates a task list, and dispatches to the worker — all without human intervention. This executes Patent Claim 7: autonomous operations from issue detec...

Parameters* required
issue_id*string
Issue ID to auto-resolve
tascan_send_smsSend a transactional TaScan SMS text to a worker (by worker_id, using their phone on file) or to a raw phone number. Optionally attach a task list — the recipient gets a tap-to-open checklist link. Attach images (MMS) with media_url (public https image URL) or media_base64 + m...9 params

Send a transactional TaScan SMS text to a worker (by worker_id, using their phone on file) or to a raw phone number. Optionally attach a task list — the recipient gets a tap-to-open checklist link. Attach images (MMS) with media_url (public https image URL) or media_base64 + m...

Parameters* required
idempotency_keystring
B1: optional replay key (up to 1024 chars, no braces) sent verbatim as the Idempotency-Key header instead of a fresh one per call — a retried call with the SAME key replays the original response in...
include_linkboolean
When a list_id is given, append the tap-to-open link to the SMS body (default true). Set false to send the message text alone — the link is still returned for you to share another way.
list_idstring
Optional task list ID — appends a tap-to-open worker checklist link
media_base64string
Optional image to attach (MMS) as base64 bytes (a data: URI prefix is accepted). JPEG, PNG or GIF, max 3.5 MB. Stored privately by TaScan and sent through a short-lived link.
media_typestring
MIME type of media_base64 (not needed when media_base64 is a data: URI).one of image/jpeg · image/png · image/gif
media_urlstring
Optional image to attach (MMS): a public https URL of a JPEG, PNG or GIF. The carrier fetches it at send time.
messagestring
Message text. Transactional and work-related only.
phonestring
Raw phone number (e.g. "+17025551234") — used when no worker_id given
worker_idstring
Worker ID — sends to their phone on file (preferred over raw phone)
tascan_schedule_smsSchedule a transactional TaScan SMS for a future time (up to 90 days out): the text is sent by TaScan's own scheduler (every 5 minutes) through the same guarded lane as tascan_send_sms — recipient must be a worker of your org or a phone the org already knows, STOP opt-outs hon...7 params

Schedule a transactional TaScan SMS for a future time (up to 90 days out): the text is sent by TaScan's own scheduler (every 5 minutes) through the same guarded lane as tascan_send_sms — recipient must be a worker of your org or a phone the org already knows, STOP opt-outs hon...

Parameters* required
idempotency_keystring
Optional caller key (≤ 200 chars) — replays return the existing scheduled row
include_linkboolean
Append the list link (default true when list_id is given)
list_idstring
Optional task list ID — appends the tap-to-open checklist link
message*string
Message text (1-400 chars, links stripped). Transactional and work-related only.
phonestring
Raw phone (E.164) — must already belong to a worker or roster entry of your org
send_at*string
When to send — ISO 8601 with a timezone offset, e.g. "2026-09-25T18:30:00-07:00" (Las Vegas is -07:00 in September). Delivery happens on the next 5-minute tick at or after this time.
worker_idstring
Worker ID — texts their phone on file (preferred over raw phone)
tascan_list_scheduled_smsList your org's scheduled texts (default: pending + sending, soonest first; status=sent|failed|cancelled to see history). Each row shows send_at, status, attempts, the Twilio sid once sent, and the last error for a failed row.1 params

List your org's scheduled texts (default: pending + sending, soonest first; status=sent|failed|cancelled to see history). Each row shows send_at, status, attempts, the Twilio sid once sent, and the last error for a failed row.

Parameters* required
statusstring
Filter by status (default pending + sending)one of pending · sending · sent · failed · cancelled
tascan_cancel_scheduled_smsCancel a scheduled text that has not been sent yet (status pending). A row already sending, sent, failed or cancelled is refused (409) — a sent text cannot be recalled.1 params

Cancel a scheduled text that has not been sent yet (status pending). A row already sending, sent, failed or cancelled is refused (409) — a sent text cannot be recalled.

Parameters* required
id*string
The scheduled_sms row id from tascan_schedule_sms / tascan_list_scheduled_sms
tascan_get_sms_statusCheck delivery status of a previously sent TaScan SMS by its Twilio SID (returned by tascan_send_sms). Shows queued/sent/delivered/undelivered/failed plus carrier error codes.1 params

Check delivery status of a previously sent TaScan SMS by its Twilio SID (returned by tascan_send_sms). Shows queued/sent/delivered/undelivered/failed plus carrier error codes.

Parameters* required
twilio_sid*string
Twilio message SID (SM...) from tascan_send_sms
tascan_send_task_emailSend a branded TaScan task notification email via SendGrid. Can notify anyone about a specific task list or task. Includes QR code, task summary, and "Open in TaScan" button.7 params

Send a branded TaScan task notification email via SendGrid. Can notify anyone about a specific task list or task. Includes QR code, task summary, and "Open in TaScan" button.

Parameters* required
include_qrboolean
Include QR code for the task list in the email (default: true)
list_id*string
Task list (event) ID
messagestring
Optional custom message to include in the email body
subjectstring
Custom email subject (defaults to auto-generated)
task_idstring
Optional specific task ID to highlight
to_email*string
Recipient email address
to_namestring
Recipient display name
tascan_register_tagRegister a physical NFC tag to a project, task list, or specific task. When someone taps the tag, TaScan routes them to the linked resource. Tags use NTAG215 chips and are programmed with NFC Tools Pro.7 params

Register a physical NFC tag to a project, task list, or specific task. When someone taps the tag, TaScan routes them to the linked resource. Tags use NTAG215 chips and are programmed with NFC Tools Pro.

Parameters* required
location_descriptionstring
Physical location of the tag
project_idstring
Project ID
tag_hardware_id*string
NFC tag hardware serial number (e.g., "04:CB:6C:51:CE:2A:81")
tag_name*string
Friendly name (e.g., "Ballroom A Door", "Breaker Panel 3")
target_type*string
What this tag points toone of project · task_list · task
task_idstring
Task ID (required for task targets)
task_list_idstring
Task list ID (required for task_list/task targets)
tascan_list_tagsList all registered NFC tags in the organization with their linked projects/task lists and scan counts

List all registered NFC tags in the organization with their linked projects/task lists and scan counts

No parameters. Call it with no arguments.

tascan_get_scan_historyScan accountability data. Two modes: (1) tag_id — scans of a registered NFC tag; (2) task_list_id or project_id — every QR/link page-open stamp: when the code was scanned, GPS + IP + channel (qr/nfc/sms/email/link), who the scanner turned out to be, and the scan→start delta (h...6 params

Scan accountability data. Two modes: (1) tag_id — scans of a registered NFC tag; (2) task_list_id or project_id — every QR/link page-open stamp: when the code was scanned, GPS + IP + channel (qr/nfc/sms/email/link), who the scanner turned out to be, and the scan→start delta (h...

Parameters* required
limitnumber
Max results (default 50, max 200)
project_idstring
Project ID — page-scan mode, all lists in the project
sincestring
ISO timestamp — only scans after this
sourcestring
Filter page scans by channel: qr | nfc | sms | email | link | unknown
tag_idstring
NFC tag registry ID (from tascan_list_tags) — tag mode
task_list_idstring
Task list ID — page-scan mode
tascan_search_marketplaceSearch the cross-org Worker Marketplace: workers who opted in (discoverable=true on their passport), ranked by passkey trust tier + verified completion volume. Skills are AI-inferred from REAL completed work, not resumes — each carries a verified_task_count and a civilian_equi...5 params

Search the cross-org Worker Marketplace: workers who opted in (discoverable=true on their passport), ranked by passkey trust tier + verified completion volume. Skills are AI-inferred from REAL completed work, not resumes — each carries a verified_task_count and a civilian_equi...

Parameters* required
availableboolean
Only workers who marked themselves available on their passport
citystring
Filter by the worker's opt-in home city, e.g. "Las Vegas"
limitnumber
Max cards (default 25, max 50)
min_completionsnumber
Only workers with at least this many verified completions
qstring
Skill, category, name, or civilian job title — e.g. "forklift", "LED wall", "AV technician"
tascan_invite_workerInvite a marketplace worker to a task list — the consented intro. TaScan texts the worker from its own number ("<Your org> wants you for <list>. Reply YES to share your contact and get the list, or NO to pass."). On YES the worker appears in your org with their name + phone, r...3 params

Invite a marketplace worker to a task list — the consented intro. TaScan texts the worker from its own number ("<Your org> wants you for <list>. Reply YES to share your contact and get the list, or NO to pass."). On YES the worker appears in your org with their name + phone, r...

Parameters* required
list_id*string
Task list you want them on
messagestring
Optional short intro prepended to the text (max 240 chars)
worker_id*string
worker_id from a marketplace card
tascan_list_invitesList marketplace invites you have sent and their status (pending / accepted / declined / expired / failed). Accepted invites include the worker's name and phone — that is the consent boundary; pending and declined never do.1 params

List marketplace invites you have sent and their status (pending / accepted / declined / expired / failed). Accepted invites include the worker's name and phone — that is the consent boundary; pending and declined never do.

Parameters* required
statusstring
one of pending · accepted · declined · expired · failed
tascan_create_zoneCreate a geofenced work zone. Delivery zones route workers who open the project Site Gate (geo.html?project=...) to this zone's task list when GPS places them inside the radius. Set enforce_on_list=true to zone-lock the task list — workers cannot start it from outside the zone.22 params

Create a geofenced work zone. Delivery zones route workers who open the project Site Gate (geo.html?project=...) to this zone's task list when GPS places them inside the radius. Set enforce_on_list=true to zone-lock the task list — workers cannot start it from outside the zone.

Parameters* required
alert_on_breachboolean
Email + SMS the admin on containment-exit / restricted-enter (default true)
auto_clock_inboolean
Writes a shift_start when the WORKER PAGE, while open, sees the phone enter the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NF...
auto_clock_outboolean
Writes a shift_end when the WORKER PAGE, while open, sees the phone leave the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NFC/...
descriptionstring
Shown to workers on the Site Gate page
enforce_on_listboolean
Zone-lock the task list — it cannot be started from outside the radius
enter_messagestring
What the worker sees / is texted on entry (default is generated from the rule)
kindstring
What the fence MEANS. work_site: expected here (auto clock-in, list on enter). hazard: enter allowed under conditions — required_ppe + photo checkpoint verified by AI vision, the OSHA row. containm...one of work_site · hazard · containment · restricted
lat*number
Zone center latitude
lng*number
Zone center longitude
name*string
Zone name (e.g. "Stage Left", "Loading Dock")
notify_emailstring
Alert recipient override — defaults to all org admins
notify_on_enterboolean
Email the manager when a worker enters this zone (danger areas)
notify_on_exitboolean
Email the manager when a worker leaves this zone (accountability — sign in then disappear)
polygonarray
Polygon/rectangle zone instead of a circle: vertices as [[lat,lng], ...], at least 3. lat/lng/radius_m are then computed (centroid + bounding radius) — still pass lat/lng but they are overridden.
ppe_photo_requiredboolean
Hazard zones: pop a photo checkpoint on entry (default true when required_ppe is set)
project_idstring
Project this zone belongs to
radius_mnumber
Radius in meters (default 150, min 10, max 100000)
required_ppearray
Hazard zones: PPE the worker must show at entry (pick-list so the audit reads the same words)
sms_worker_on_enterboolean
Text the worker the rule/list on entry, even if the app is closed
sms_worker_on_exitboolean
Text the worker on exit

+2 more parameters. See the server's own documentation for the full schema.

tascan_list_zonesList geofenced work zones, optionally filtered by project. Shows center, radius, routing target, and zone-lock status.1 params

List geofenced work zones, optionally filtered by project. Shows center, radius, routing target, and zone-lock status.

Parameters* required
project_idstring
Filter by project
tascan_update_zoneUpdate a geofenced zone — move the center, resize the radius, change the routing target, toggle zone-lock, or deactivate it (is_active=false).22 params

Update a geofenced zone — move the center, resize the radius, change the routing target, toggle zone-lock, or deactivate it (is_active=false).

Parameters* required
alert_on_breachboolean
auto_clock_inboolean
Writes a shift_start when the WORKER PAGE, while open, sees the phone enter the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NF...
auto_clock_outboolean
Writes a shift_end when the WORKER PAGE, while open, sees the phone leave the zone; detection is pull-based, there is no background geofencing. For a background-free presence event use a gate NFC/...
enforce_on_listboolean
enter_messagestring
is_activeboolean
kindstring
one of work_site · hazard · containment · restricted
latnumber
lngnumber
namestring
notify_emailstring
notify_on_enterboolean
notify_on_exitboolean
polygonarray
Replace geometry with a polygon ([[lat,lng],...], ≥3 vertices); pass null to revert to a circle
ppe_photo_requiredboolean
radius_mnumber
required_ppearray
sms_worker_on_enterboolean
sms_worker_on_exitboolean
task_list_idstring

+2 more parameters. See the server's own documentation for the full schema.

tascan_zone_complianceHazard-zone compliance audit (OSHA / insurance): every zone crossing, PPE checkpoint verdict (complied / failed with what was missing / skipped), and breach, plus injury reports cross-referenced with the worker's last PPE checkpoint before the injury. Scope by project or zone,...5 params

Hazard-zone compliance audit (OSHA / insurance): every zone crossing, PPE checkpoint verdict (complied / failed with what was missing / skipped), and breach, plus injury reports cross-referenced with the worker's last PPE checkpoint before the injury. Scope by project or zone,...

Parameters* required
project_idstring
sincestring
ISO date/time lower bound
untilstring
ISO date/time upper bound
worker_idstring
zone_idstring
tascan_register_assetRegister a physical asset (equipment, structure, vehicle, machine) in the condition ledger so it can be assessed over time. Each asset gets a longitudinal condition history with AI scoring and degradation trajectory.6 params

Register a physical asset (equipment, structure, vehicle, machine) in the condition ledger so it can be assessed over time. Each asset gets a longitudinal condition history with AI scoring and degradation trajectory.

Parameters* required
asset_typestring
Type (e.g. "LED processor", "forklift", "scaffold")
descriptionstring
Context the AI assessor should know
location_descriptionstring
name*string
Asset name (e.g. "LED Wall Processor #3")
project_idstring
serial_numberstring
Serial number or asset tag (unique per org)
tascan_assess_conditionRun an AI condition assessment of an asset from a photo. The model scores 0-100 with the asset's full assessment history in context, so it reads degradation over time — returning the Condition Delta Score vs the previous assessment, defects, wear indicators, maintenance recomm...3 params

Run an AI condition assessment of an asset from a photo. The model scores 0-100 with the asset's full assessment history in context, so it reads degradation over time — returning the Condition Delta Score vs the previous assessment, defects, wear indicators, maintenance recomm...

Parameters* required
asset_id*string
Asset ID (from tascan_register_asset or tascan_list_assets)
photo_url*string
Public URL of the assessment photo
worker_namestring
Who took the photo (optional)
tascan_condition_historyGet an asset's longitudinal condition history — score trend over time, every assessment with grade, delta, findings, and who assessed it. The per-serial-number condition ledger.1 params

Get an asset's longitudinal condition history — score trend over time, every assessment with grade, delta, findings, and who assessed it. The per-serial-number condition ledger.

Parameters* required
asset_id*string
Asset ID
tascan_list_assetsList registered condition-ledger assets with their latest condition scores. Use to recover an asset_id for tascan_assess_condition or tascan_condition_history.1 params

List registered condition-ledger assets with their latest condition scores. Use to recover an asset_id for tascan_assess_condition or tascan_condition_history.

Parameters* required
project_idstring
Filter by project
tascan_generate_reportMint a shareable report and get its link. Types: completion (full proof-of-work for one list: tasks, responses, subtasks, photos, GPS + place names, timing, QR pair), service (client-facing version of a list with YOUR company branding and a Client Acknowledgment button — the a...9 params

Mint a shareable report and get its link. Types: completion (full proof-of-work for one list: tasks, responses, subtasks, photos, GPS + place names, timing, QR pair), service (client-facing version of a list with YOUR company branding and a Client Acknowledgment button — the a...

Parameters* required
company_namestring
Service report branding (defaults to the org name)
list_idstring
Required for completion / service
messagestring
Service report: a note to the client shown under the header
project_idstring
Required for project / evidence
send_notestring
Short intro for the text, e.g. "Here is your report from Love Productions:"
send_to_phonestring
Text the link to this number (E.164 or 10-digit US)
show_issuesboolean
Service report: include reported issues (default false)
show_workersboolean
Service report: show worker names (default true)
type*string
one of completion · service · project · evidence
tascan_list_reportsList existing report links for a list or project (completion / service / project / evidence), newest first, with client acknowledgment status for service reports.2 params

List existing report links for a list or project (completion / service / project / evidence), newest first, with client acknowledgment status for service reports.

Parameters* required
list_idstring
project_idstring
tascan_create_invoiceCreate a client invoice and get its shareable link. Two ways to bill: (a) pass explicit line_items, or (b) pass project_id or task_list_ids plus hourly_rate (quarter-hour billing from first→last verified completion per list) or flat_rate_per_list, and TaScan builds one line pe...17 params

Create a client invoice and get its shareable link. Two ways to bill: (a) pass explicit line_items, or (b) pass project_id or task_list_ids plus hourly_rate (quarter-hour billing from first→last verified completion per list) or flat_rate_per_list, and TaScan builds one line pe...

Parameters* required
attach_service_reportboolean
Mint + link a Service Report for single-list invoices (default true)
billingobject
Billing rules for auto line items. mode: hourly (default when hourly_rate given) | day_rate | flat. Overtime/double time are computed PER WORK DAY from verified completions: hours over overtime_aft...
client_emailstring
client_name*string
Bill-to name (person or company)
client_phonestring
company_namestring
Your company name on the attached Service Report (defaults to the org name)
due_datestring
YYYY-MM-DD (default: 30 days out)
flat_rate_per_listnumber
Dollars per list for auto line items (used when no hourly_rate)
hourly_ratenumber
Dollars per hour for auto line items
line_itemsarray
Explicit lines instead of auto-billing
min_hoursnumber
Minimum billable hours per list (e.g. 1)
notesstring
Payment terms / thank-you shown on the invoice
payment_optionsobject
Pay-how-you-like buttons on the invoice (defaults to the org's saved handles). Keys: venmo (@handle), cashapp ($cashtag), paypal (paypal.me name), zelle (phone/email), applecash (phone), other (fre...
project_idstring
Bill every list in this project (auto line items)
statusstring
Default sentone of draft · sent
task_list_idsarray
Bill just these lists (auto line items)
tax_ratenumber
Fraction, e.g. 0.0825 for 8.25%
tascan_list_invoicesList invoices for the org (newest first) with status, client, total, due date and share link. Filter by status (draft/sent/paid/overdue/cancelled) or project.2 params

List invoices for the org (newest first) with status, client, total, due date and share link. Filter by status (draft/sent/paid/overdue/cancelled) or project.

Parameters* required
project_idstring
statusstring
one of draft · sent · paid · overdue · cancelled
tascan_update_invoiceUpdate an invoice: mark it paid (records paid_at; a receipted ledger event with the actor, invoice id, number, amount and the before/after status is written first, and nothing changes if it cannot be), overdue, cancelled, or edit client details / notes / due date. A paid invoi...8 params

Update an invoice: mark it paid (records paid_at; a receipted ledger event with the actor, invoice id, number, amount and the before/after status is written first, and nothing changes if it cannot be), overdue, cancelled, or edit client details / notes / due date. A paid invoi...

Parameters* required
client_emailstring
client_namestring
client_phonestring
due_datestring
invoice_id*string
notesstring
paid_atstring
ISO timestamp (default now) when status = paid
statusstring
one of draft · sent · paid · overdue · cancelled
tascan_request_paymentPledge a payment on a task list: when the list is verified complete (every task done + photo evidence on photo-required tasks), the payer automatically receives a Stripe pay link that routes the money DIRECTLY to the worker (0% TaScan fee). No money moves and no card is stored...7 params

Pledge a payment on a task list: when the list is verified complete (every task done + photo evidence on photo-required tasks), the payer automatically receives a Stripe pay link that routes the money DIRECTLY to the worker (0% TaScan fee). No money moves and no card is stored...

Parameters* required
amount_cents*number
Amount in cents ($1 min, $10,000 max)
idempotency_keystring
B1: optional replay key (up to 1024 chars, no braces) sent verbatim as the Idempotency-Key header instead of a fresh one per call — a retried call with the SAME key replays the original pledge inst...
memostring
What the payment is for (shown to the payer)
payer_email*string
Who pays — receives the pay link on verification
payer_namestring
task_list_id*string
Task list the payment is tied to
worker_id*string
Worker who gets paid
tascan_list_paymentsList gig payments and their lifecycle status: awaiting_completion (pledged, work not verified yet), ready_to_pay (verified — pay link sent to payer), paid, canceled. Filter by task list or status.2 params

List gig payments and their lifecycle status: awaiting_completion (pledged, work not verified yet), ready_to_pay (verified — pay link sent to payer), paid, canceled. Filter by task list or status.

Parameters* required
statusstring
Filter by statusone of awaiting_completion · ready_to_pay · paid · canceled
task_list_idstring
Filter by task list
tascan_get_worker_passportGet a worker's verified work passport — task counts, lists worked, photos submitted, GPS-verified hours, points, streaks, and earned merit badges, all computed from real completion data (not self-reported). Includes the shareable profile URL.1 params

Get a worker's verified work passport — task counts, lists worked, photos submitted, GPS-verified hours, points, streaks, and earned merit badges, all computed from real completion data (not self-reported). Includes the shareable profile URL.

Parameters* required
worker_id*string
Worker ID
tascan_server_infoIdentify exactly which TaScan server and schema this MCP session is talking to. Call this FIRST when diagnosing anything — it makes "dev server masquerading as production" and "is my fix deployed yet" one tool call instead of an inference.

Identify exactly which TaScan server and schema this MCP session is talking to. Call this FIRST when diagnosing anything — it makes "dev server masquerading as production" and "is my fix deployed yet" one tool call instead of an inference.

No parameters. Call it with no arguments.

tascan_findCross-entity search: find projects (by name, project number or customer job number in external_refs; each with its status), task lists, tasks, workers, condition assets, sites (by name, address or client company) or work orders (by number or description) in one call — with ids...2 params

Cross-entity search: find projects (by name, project number or customer job number in external_refs; each with its status), task lists, tasks, workers, condition assets, sites (by name, address or client company) or work orders (by number or description) in one call — with ids...

Parameters* required
query*string
Search text (min 2 chars, case-insensitive substring; a customer job number matches external_refs exactly)
typestring
Optional: restrict to one entity typeone of project · list · task · worker · asset · site
tascan_get_workerUngated, plain read of one worker row: name, contact, org, points, streaks, timestamps. (tascan_get_worker_passport is the rich stats view; this is the boring lookup.)1 params

Ungated, plain read of one worker row: name, contact, org, points, streaks, timestamps. (tascan_get_worker_passport is the rich stats view; this is the boring lookup.)

Parameters* required
worker_id*string
Worker ID
tascan_find_duplicate_workersFind candidate same-person worker records with per-signal match detail (Patent 4 §6.25(b) signals: phone reuse, name similarity, GPS pattern correlation). Turns identity fragmentation from an accidental discovery into a monitorable metric, and feeds the merge workflow its cand...4 params

Find candidate same-person worker records with per-signal match detail (Patent 4 §6.25(b) signals: phone reuse, name similarity, GPS pattern correlation). Turns identity fragmentation from an accidental discovery into a monitorable metric, and feeds the merge workflow its cand...

Parameters* required
include_orphansboolean
Also consider org-less (orphan) worker records — off by default
namestring
Or: search duplicates by display name
thresholdnumber
Min confidence 0-1 (default 0.15)
worker_idstring
Anchor worker to find duplicates OF (preferred — enables phone + GPS signals)
tascan_merge_workersMerge duplicate worker records into one canonical identity (Patent 4 identity consolidation). Reassigns every reference (completions, timer events, points, payments, rosters — 31 columns across 31 tables), backfills missing phone/email on the primary, sums points, and tombston...3 params

Merge duplicate worker records into one canonical identity (Patent 4 identity consolidation). Reassigns every reference (completions, timer events, points, payments, rosters — 31 columns across 31 tables), backfills missing phone/email on the primary, sums points, and tombston...

Parameters* required
dry_runboolean
true (default) = report reassignment counts only, change nothing. false = execute atomically.
duplicate_worker_ids*array
Worker IDs to fold into the primary (max 20)
primary_worker_id*string
The canonical worker that survives (usually the one with a phone)
tascan_delete_workerTombstone a worker record (is_active=false). REFUSES if the worker has any task/subtask completions or payments — merge those into the real worker with tascan_merge_workers instead. Never hard-deletes.1 params

Tombstone a worker record (is_active=false). REFUSES if the worker has any task/subtask completions or payments — merge those into the real worker with tascan_merge_workers instead. Never hard-deletes.

Parameters* required
worker_id*string
Worker ID to delete
tascan_create_cycleStart an unattended build-review-decide cycle (protocol v0.2). Queues T1 CODE: (or SHELL:) with your build_brief on the AI Inbox and T2 REVIEW: with your review_brief, born blocked on T1. T1 (2026-09-24 throughput): kind=review_only mints T1 as CAPTURE: instead — the executor...21 params

Start an unattended build-review-decide cycle (protocol v0.2). Queues T1 CODE: (or SHELL:) with your build_brief on the AI Inbox and T2 REVIEW: with your review_brief, born blocked on T1. T1 (2026-09-24 throughput): kind=review_only mints T1 as CAPTURE: instead — the executor...

Parameters* required
artifact_bytesobject
Optional {path: bytes} for artifact_paths — the byte length of each file in your checkout. The API cannot read the repo, so artifact_over_cap (262144-byte reviewable cap per file) is only checked f...
artifact_paths*array
Repo-relative paths the build binds (1-64). Exactly these files are stored as the bundle and hashed into build_ref; files the executor touches OUTSIDE them fail the scope check and park the cycle....
build_brief*string
The executor prompt (1-40000 chars). Executed verbatim by the local Claude Code runner as a CODE:/SHELL: task — write it as a complete instruction, name the files, forbid nothing the runner already...
checkpoint_descriptionstring
Optional description template for the Decision task; the build_ref, preview and findings summary are appended.
checkpoint_titlestring
Optional title template for the Decision task (default "Decision: <title>").
dry_runboolean
true = PREFLIGHT only: the API validates the whole dispatch and returns every problem at once (code, path, detail) plus the unchecked[] list (what only the executor / the RPC can decide) and warnin...
idempotency_keystring
Optional caller key (≤ 200 chars). The same key within 24 h is refused as idempotency_replay (nothing queued) and printed as DUPLICATE with the existing root_id — safe to retry after a lost answer.
integrate_descriptionstring
Optional description template for the Integrate task.
integrate_titlestring
Optional title template for the Integrate task (default "Integrate: <title>").
kindstring
Cycle kind (default build). review_only = no model builds anything: T1 is "CAPTURE: <title>", a local-executor task that stores artifact_paths from the repo at HEAD as the bundle (same build_ref, s...one of build · review_only
max_cost_micro_usdinteger
Per-cycle spend cap summed over every attempt, in micro-USD (default 5000000 = USD 5). A claim that could overrun it is refused (budget_exhausted).
max_questionsinteger
Questions a runner may ask per task before the attempt fails (default 3).
max_revisionsinteger
Revision cap (default 3): at most max_revisions + 1 builds and reviews.
preview_urlstring
Optional https preview link shown on the Decision task.
project_id*string
Working project (UUID). Its Decisions and Agent Questions lists are created on the first cycle (coord_ensure_lists). Requires the org human authority to be configured (coord_set_authority) — otherw...
repostring
Which codebase on the executor the build runs in — an alias from the executor's allowlist (tascan-agent/repos.json), e.g. "tascan" (default), "merchskipper", "inkskipper", "rangerlizzy", "cardvault...
review_brief*string
The reviewer prompt (1-40000 chars). The reviewer reads the stored bundle (tascan_get_build / tascan_get_build_file), the task text and the filtered trail; it returns approve, revise, reject or nee...
reviewsarray
Optional multi-lens review panel (design item 14a) instead of today's single OpenAI review_brief lens — 1-8 entries, each: {lens: slug matching ^[a-z][a-z0-9-]{0,39}$ unique per array (e.g. "code-c...
revisable_bystring
review_only cycles only — who fixes a revise verdict. dispatcher (default): the cycle parks on revise as today and you re-dispatch. executor: a revise spawns a revision CAPTURE task (up to max_revi...one of dispatcher · executor
task_typestring
T1 prefix (default CODE). CAPTURE is never caller-settable: kind=review_only makes T1 "CAPTURE:" itself. With kind=review_only the value is sent as given — CODE is accepted (T1 is still CAPTURE), S...one of CODE · SHELL · RESEARCH

+1 more parameters. See the server's own documentation for the full schema.

tascan_post_messagePost a message on a task trail (protocol v0.2 trail_messages): kind question, answer, handoff or discussion. A message never completes a task, never satisfies a gate and never pages anyone. The actor is stamped from your credential (key:<id>, actor_type "key" — a credential, n...7 params

Post a message on a task trail (protocol v0.2 trail_messages): kind question, answer, handoff or discussion. A message never completes a task, never satisfies a gate and never pages anyone. The actor is stamped from your credential (key:<id>, actor_type "key" — a credential, n...

Parameters* required
addresseestring
Optional, kind=question only: who the question is for (recorded; nobody is paged).one of human · dispatcher
body*string
The message text (1-8000 chars). Treated as DATA by every reader; on a cycle task it may be prepended to the executor prompt as TRAIL INPUT.
build_refstring
Optional sha256:<64 hex> the message is about (defaults to the cycle task's bound build).
idempotency_keystring
Optional replay key (≤ 200 chars): the same key on the same task returns the same message id.
kind*string
question = a question for the record (does not block anything); answer = answers a dispatcher question task and releases the asker; handoff = hand work or context to the next agent; discussion = a...one of question · answer · handoff · discussion
reply_tostring
Optional message id this replies to.
task_id*string
Task ID (UUID). For an answer: the QUESTION task id (tascan_get_task on the asker shows coord.blocked_by).
tascan_record_integrationD4: the dispatcher records the Netlify deploy id for an authorized cycle — Integrate cards stop landing on Mike for something a key can prove instead (protocol v0.2, migration 181, coord_record_integration). Requires agent:dispatch. The root must be `authorized` (its checkpoin...3 params

D4: the dispatcher records the Netlify deploy id for an authorized cycle — Integrate cards stop landing on Mike for something a key can prove instead (protocol v0.2, migration 181, coord_record_integration). Requires agent:dispatch. The root must be `authorized` (its checkpoin...

Parameters* required
deploy_id*string
The Netlify deploy id: 24 lowercase hex, optionally prefixed "deployed:" and/or followed by a space and a ≥12-hex prefix of the build_ref.
notestring
Optional note (≤ 2000 chars) recorded alongside the completion — e.g. what changed in this deploy.
root_id*string
The cycle root = the T1 build task id (tascan_get_cycle_report / tascan_create_cycle). Must currently be authorized (checkpoint Approved, Integrate task open).
tascan_get_buildManifest of a stored build bundle by build_ref (protocol v0.2 build_artifacts): the exact files the executor produced for the cycle's artifact_paths, each with sha256, byte length and whether text content is stored (binary or over-cap files keep the sha only). build_ref = sha2...1 params

Manifest of a stored build bundle by build_ref (protocol v0.2 build_artifacts): the exact files the executor produced for the cycle's artifact_paths, each with sha256, byte length and whether text content is stored (binary or over-cap files keep the sha only). build_ref = sha2...

Parameters* required
build_ref*string
sha256:<64 hex> (or the bare 64 hex) — from tascan_get_task (coord.build_ref / agent.runs[].build_ref) or tascan_get_cycle_report.
tascan_get_build_fileRead one file from a stored build bundle by build_ref and path (protocol v0.2 build_artifacts) — the exact bytes the executor produced, not a working-tree read. Returns up to 12000 chars per call with offset/limit paging (next_offset when truncated), plus the file's sha256 and...4 params

Read one file from a stored build bundle by build_ref and path (protocol v0.2 build_artifacts) — the exact bytes the executor produced, not a working-tree read. Returns up to 12000 chars per call with offset/limit paging (next_offset when truncated), plus the file's sha256 and...

Parameters* required
build_ref*string
sha256:<64 hex> (or the bare 64 hex).
limitinteger
Characters to return (1-12000, default 12000).
offsetinteger
Character offset to start from (default 0).
path*string
Repo-relative path exactly as listed by tascan_get_build.

Sponsors

Configuration

TASCAN_API_KEY*secret

Your TaScan API key (generate in Admin Portal > Team > API Keys)

TASCAN_API_URL

TaScan API base URL (default: https://app.tascan.io/api/v1)

Readme

TaScan MCP Server

AI agent integration for TaScan — the closed-loop autonomous operations protocol. Manage projects, events, tasks, workers, QR codes, templates, completion reports, and AI-powered issue resolution through Claude, GitHub Copilot, or any MCP-compatible AI client.

Task. Scan. Done.

What is TaScan?

TaScan is a zero-download task assignment and verification platform for physical-world work. Workers scan a QR code, complete tasks with photo verification, and managers get real-time completion reports — no app download, no login, no training required.

When something breaks, AI analyzes the issue, generates fix instructions, and dispatches them to the right worker — closing the loop autonomously in under 10 seconds.

Industries: live events, construction, hospitality, warehousing, property management, healthcare, aviation, FEMA disaster response, and more.

10 Provisional Patents Filed — 265 claims, ~1000+ pages of specification. USPTO Applications #63/995,189 through #64/001,286.

Quickest Start: Claude.ai / Claude Mobile

No install required. Add TaScan as a custom connector in Claude:


View the full README on GitHub

Details

Repository
github.com/snowbikemike/tascan-mcp
Website
tascan.io
Category
Productivity & Office
Package
tascan-mcp
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related Productivity & Office MCP servers

View all
1starecz avatarKarea Mcpstarecz/karea-mcpKarea task manager - 9 tools covering 70 actions, for Claude Code, Cursor, and other MCP clients.1stars
2theyahia avatarPochta Russia Mcptheyahia/pochta-russia-mcpMCP server for Russian Post (Почта России) API — tracking, tariff calculation, post office search.1stars
3toptop-oy avatarmdfitoptop-oy/mdfi-connectRead PDFs, scans and Office files page by page, with quality flags and CSV table export.1stars
4full-vibe avatarCalendarMCPfull-vibe/calendarmcp-publicHosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.0stars
5magenie33 avatarMagenie33 Quality Dimension Generatormagenie33/quality-dimension-generatorGenerate tailored quality criteria and scoring guides from your task descriptions. Refine objectiv…0stars
6arceedev avatarDataCleanarceedev/dataclean-mcpProfile, clean and validate CSV/Excel data: schemas, dates, numbers, duplicates. Never guesses.0stars