Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

TaScan

REMOTE · APP.TASCAN.IO · 2 COMPONENTS

36 MCP tools for projects, tasks, workers, QR/NFC tags, and AI remediation. Task. Scan. Done.

0 this week 89 Trust /100

Last scanned (6 hours ago)

Scores higher than 97% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Project Management

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security94
Transport & Reachability100
Schema Quality & AI Usability64
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 25772 tokens (~181/item across 142 items; 142 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management99
  • Stability check failed: schema churn in the 30 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 37 additions. See how to fix → Fail
Tool Coverage93
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 79% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 13 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 143 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 27 Oct 26 0
    • New tool “tascan_get_access” functional
    • New tool “tascan_append_chat_messages” functional
    • New tool “tascan_set_access” functional
    • “tascan_update_event” added an optional parameter “access_level” cosmetic
    • “tascan_create_event” added an optional parameter “access_level” cosmetic
    • “tascan_create_event” added an optional parameter “agent_assignee” cosmetic
    • “tascan_update_task” added an optional parameter “access_level” cosmetic
    • “tascan_update_event” added an optional parameter “agent_assignee” cosmetic
  • 26 Oct 26 0
    • New tool “tascan_delete_chat_thread”, which the server declares destructive security
    • New tool “tascan_remove_worker_from_project”, which the server declares destructive security
    • New tool “tascan_save_qr_style”, which the server declares destructive security
    • New tool “tascan_void_completion”, which the server declares destructive security
    • Tool “tascan_complete_task” rewrote its description, which is the text the model reads security
    • Tool “tascan_update_worker” rewrote its description, which is the text the model reads security
    • Tool coverage: 87% → 79% ▼ functional
    • Schema quality: excellent → good functional
    • New tool “tascan_apply_qr_style” functional
    • New tool “tascan_get_org_plan” functional
    • New tool “tascan_get_timesheet” functional
    • New tool “tascan_list_chat_threads” functional
    • New tool “tascan_list_insights” functional
    • New tool “tascan_list_qr_styles” functional
    • New tool “tascan_nudge_worker” functional
    • New tool “tascan_raise_issue” functional
    • New tool “tascan_reply_issue” functional
    • New tool “tascan_resolve_insight” functional
    • New tool “tascan_save_chat_thread” functional
    • New tool “tascan_set_template” functional
    • New tool “tascan_update_issue” functional
    • New tool “tascan_issues_inbox” functional
    • “tascan_complete_task” added an optional parameter “on_behalf_of” cosmetic
    • “tascan_update_worker” added an optional parameter “active” cosmetic
    • “tascan_update_worker” added an optional parameter “reason” cosmetic
    • “tascan_complete_task” reworded the description of “worker_id” cosmetic
    • “tascan_complete_task” made “worker_id” optional cosmetic
  • 25 Oct 26 0
    • Stability: pass → fail ▼ security
    • A breaking change shipped without a version bump: still 3.19.0 ▼ security
    • Tool “tascan_delete_project” rewrote its description, which is the text the model reads security
    • Tool “tascan_list_projects” rewrote its description, which is the text the model reads security
    • Tool “tascan_update_invoice” rewrote its description, which is the text the model reads security
    • Tool “tascan_update_project” rewrote its description, which is the text the model reads security
    • “tascan_delete_project” added a required parameter “confirm_name”, so existing callers break ▼ functional
    • New tool “tascan_project_insights” functional
    • New tool “tascan_clone_project” functional
    • New tool “tascan_mint_completion_report” functional
    • New tool “tascan_text_report” functional
    • New tool “tascan_report_engagement” functional
    • “tascan_delete_project” added an optional parameter “audit” cosmetic
    • “tascan_list_projects” added an optional parameter “ends_before” cosmetic
    • “tascan_list_projects” added an optional parameter “starts_after” cosmetic
    • “tascan_list_projects” added an optional parameter “window” cosmetic
    • “tascan_list_projects” added an optional parameter “zone” cosmetic
    • “tascan_update_project” added an optional parameter “labor_rules” cosmetic
    • “tascan_update_project” added an optional parameter “report_options” cosmetic
  • 24 Oct 26 −1
    • New tool “tascan_unlink_site”, which the server declares destructive security
    • Tool “tascan_find” rewrote its description, which is the text the model reads security
    • Tool “tascan_generate_qr” rewrote its description, which is the text the model reads security
    • Tool “tascan_update_worker” rewrote its description, which is the text the model reads security
    • New tool “tascan_create_site” functional
    • New tool “tascan_get_site” functional
    • New tool “tascan_link_site” functional
    • New tool “tascan_list_sites” functional
    • New tool “tascan_share_list” functional
    • New tool “tascan_today” functional
    • New tool “tascan_update_site” functional
    • “tascan_generate_qr” added an optional parameter “style” cosmetic
    • “tascan_list_workers” added an optional parameter “actor_kind” cosmetic
    • “tascan_update_worker” added an optional parameter “actor_kind” cosmetic
    • “tascan_find” reworded the description of “query” cosmetic
  • 21 Oct 26 0
    • Tool “tascan_update_project” rewrote its description, which is the text the model reads security
    • Tool “tascan_create_project” rewrote its description, which is the text the model reads security
    • Tool “tascan_list_projects” rewrote its description, which is the text the model reads security
    • New tool “tascan_get_org” functional
    • New tool “tascan_list_connectors” functional
    • “tascan_update_project” added an optional parameter “external_refs” cosmetic
    • “tascan_update_project” added an optional parameter “number” cosmetic
    • “tascan_create_project” added an optional parameter “external_refs” cosmetic
    • “tascan_create_project” added an optional parameter “number” cosmetic
    • “tascan_list_projects” added an optional parameter “number” cosmetic
    • “tascan_list_projects” added an optional parameter “ref” cosmetic
    • “tascan_list_projects” added an optional parameter “status” cosmetic
  • 12 Oct 26 0
    • “tascan_delegate_to_agent” added an optional parameter “model” cosmetic
    • “tascan_delegate_to_agent” added an optional parameter “display_name” cosmetic
    • “tascan_delegate_to_agent” added an optional parameter “vendor” cosmetic
    • “tascan_delegate_to_agent” added an optional parameter “role” cosmetic
    • “tascan_delegate_to_agent” added an optional parameter “agent_id” cosmetic
    • “tascan_delegate_to_agent” reworded the description of “resource_constraints” cosmetic

    6 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.

  • 29 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • New tool “tascan_control_fanout”, which the server declares destructive security
    • Schema quality: 16963 → 19576 ▼ functional
    • Server version: 3.16.1 → 3.19.0 functional
    • New tool “tascan_quickstart” functional
    • New tool “tascan_heartbeat_run” functional
    • New tool “tascan_claim_run” functional
    • New tool “tascan_create_fanout” functional
    • New tool “tascan_finish_run” functional
    • New tool “tascan_get_fanout” functional
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://app.tascan.io/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=tascan.io CN=YE2,O=Let's Encrypt,C=US 5 Nov 2026 3 Feb 2027 ECDSA 256 ECDSA-SHA384 6963312024d405e7636a83cd4c6f381807c
SANs: *.tascan.io, tascan.io
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of app.tascan.io. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 38690 8 Verified
tascan.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://app.tascan.io/.well-known/oauth-protected-resource"

Bearer resource_metadata="https://app.tascan.io/.well-known/oauth-protected-resource"
Header Value
strict-transport-security max-age=31536000

Protected resource metadata

Document https://app.tascan.io/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://app.tascan.io/mcp
Authorisation server https://app.tascan.io

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://app.tascan.io/mcp Verified 200
http (plaintext) http://app.tascan.io/mcp HTTPS enforced 301 https://app.tascan.io/mcp
MCP tools · 142 exposed · ~25,684 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
tascan_query_responses ~151

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 interleave into the same series labeled 'Task › Subtask' (e.g. per-set values Set 1/2/3 with their own timestamps), so set-level progression chains across lists automatically.

NameTypeReqDescription
limitnumber–Max responses to return (default 200, max 500)
project_idstringyesProject ID
taskstringyesTask title pattern (case-insensitive substring) or exact task ID

No output schema declared.

No examples provided.

tascan_quickstart ~201

One action to a genuinely verified receipt (POST /quickstart). Under your org it reuses-or-creates the project "TaScan Quickstart", its list "Quickstart" and the worker "Quickstart executor", adds a NEW task "Reply with the exact text: <expected>", completes it with your key, has the named policy quickstart_exact_output v1 compare the response to the expected text (verified or refuted, signed into the receipt), and publishes the receipt's public profile. expected defaults to "VERIFIED" (max 200 chars); response defaults to expected — pass a different response to see a refuted receipt. Returns the receipt URL and the public verify URL. Write tier.

NameTypeReqDescription
expectedstring–The exact text the task asks for (default "VERIFIED", max 200 chars).
responsestring–The response to submit (default: the expected text). A different value is refuted.

No output schema declared.

No examples provided.

tascan_raise_issue ~146

Raise an issue on a task (POST /tasks/:id/issues), the way an admin does it in TaScan: status OPEN, source admin, the description as the first thread message. category DELAY, MISSING_MATERIALS, SAFETY_CONCERN, EQUIPMENT_ISSUE, WEATHER, PERSONNEL, QUALITY or OTHER (default); severity LOW, MEDIUM (default), HIGH or CRITICAL. Write tier.

NameTypeReqDescription
categorystring––
descriptionstringyes–
photo_pathstring–A task-photos storage path under issues/ (upload first)
severitystring––
task_idstringyes–

No output schema declared.

No examples provided.

tascan_recommend_fix ~176

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 AI audit trail.

NameTypeReqDescription
ai_agentstring–Name of the AI agent posting (default: TaScan AI)
issue_idstringyesIssue ID to recommend a fix for
recommendationstringyesThe 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_checkpoint,…

No output schema declared.

No examples provided.

tascan_record_integration ~359

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 checkpoint already Approved) with an open Integrate task; deploy_id must be a real Netlify deploy id — 24 lowercase hex, optionally "deployed:<id>" and/or a trailing build-ref hex prefix ("Deploy" and anything else is refused, bad_deploy_id). On success the root flips to `integrated`, the existing "Integrated: deploy …" trail note is posted, and the completion is stamped with your key as the actor (source api:key:<id>) — never as a human on the page. Idempotent: replaying the SAME deploy_id after the root is already integrated returns the same completion (replayed:true); a DIFFERENT deploy_id after integration is refused (409) without changing anything. A human may still complete the Integrate card on the worker page as an ops fallback, but only with a real deploy id too.

NameTypeReqDescription
deploy_idstringyesThe 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_idstringyesThe cycle root = the T1 build task id (tascan_get_cycle_report / tascan_create_cycle). Must currently be authorized (checkpoint Approved, Integrate task open).

No output schema declared.

No examples provided.

tascan_register_agent ~234

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); inbox_id must be a task list (event) in your organization.

NameTypeReqDescription
capabilitiesarrayyesTask type prefixes this agent handles (e.g. ["RESEARCH", "WRITE"])
descriptionstring–What this agent does
idstringyesUnique agent ID (e.g. "my-agent-1")
inbox_idstringyesTask 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")
namestringyesDisplay name (e.g. "Research Bot")
typestringyesAgent type
worker_idstring–TaScan worker ID for this agent

No output schema declared.

No examples provided.

tascan_register_asset ~138

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.

NameTypeReqDescription
asset_typestring–Type (e.g. "LED processor", "forklift", "scaffold")
descriptionstring–Context the AI assessor should know
location_descriptionstring––
namestringyesAsset name (e.g. "LED Wall Processor #3")
project_idstring––
serial_numberstring–Serial number or asset tag (unique per org)

No output schema declared.

No examples provided.

tascan_register_tag ~185

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.

NameTypeReqDescription
location_descriptionstring–Physical location of the tag
project_idstring–Project ID
tag_hardware_idstringyesNFC tag hardware serial number (e.g., "04:CB:6C:51:CE:2A:81")
tag_namestringyesFriendly name (e.g., "Ballroom A Door", "Breaker Panel 3")
target_typestringyesWhat this tag points to
task_idstring–Task ID (required for task targets)
task_list_idstring–Task list ID (required for task_list/task targets)

No output schema declared.

No examples provided.

tascan_remove_worker_from_project ~105

Remove a worker from a project (DELETE /projects/:id/workers/:worker_id): deletes only that worker's assignments on the project's lists. Completions, issues and the worker record are untouched. Receipted first (actor, worker, lists, reason). To deactivate the worker everywhere use tascan_update_worker active false. Write tier.

NameTypeReqDescription
project_idstringyes–
reasonstring––
worker_idstringyes–

No output schema declared.

No examples provided.

tascan_reply_issue ~88

Reply on an issue's thread (POST /issues/:id/messages): an issue_messages row from the admin side. media_path attaches a photo already uploaded to task-photos under issues/ (a storage path, never a URL). Write tier.

NameTypeReqDescription
bodystringyes1-4000 characters
issue_idstringyes–
media_pathstring––

No output schema declared.

No examples provided.

tascan_reply_with_list ~177

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 gets pinged; the thread shows in both the worker portal and Simple Mode. Use tascan_get_thread-style follow-up via tascan_list_projects/tascan_get_report to read answers.

NameTypeReqDescription
author_namestring–Who is replying (shown in the thread)
parent_list_idstringyesThe list being replied to
tasksarrayyesItems the recipient answers — each becomes a typed task
titlestringyesReply list title (e.g. "Before I can start...")

No output schema declared.

No examples provided.

tascan_report_engagement ~66

A report's engagement (GET /reports/:token/engagement, get_report_engagement): declared, engaged and idle minutes per worker shift on the report's list. There are no view or open counts. Read tier.

NameTypeReqDescription
tokenstringyesThe report token

No output schema declared.

No examples provided.

tascan_request_payment ~242

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 at pledge time. The worker must have completed payout onboarding (Get Paid on their profile).

NameTypeReqDescription
amount_centsnumberyesAmount 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 instea…
memostring–What the payment is for (shown to the payer)
payer_emailstringyesWho pays — receives the pay link on verification
payer_namestring––
task_list_idstringyesTask list the payment is tied to
worker_idstringyesWorker who gets paid

No output schema declared.

No examples provided.

tascan_request_verification ~220

Enqueue an autonomous verification job for a task completion (Verification Layer V2 + V7 doc_check, POST /completions/:completion_id/verification-jobs): http_probe checks a URL (params url, and optionally expect_status, expect_content_type, expect_sha256), doc_check runs a named policy against params.url and params.policy_id. Read the result with tascan_list_verifications once the job runs. Write tier.

NameTypeReqDescription
check_typestringyesWhich autonomous check to run.
completion_idstringyestask_completions.id (UUID) — from tascan_get_task -> completions[].id.
idempotency_keystring–Optional replay key (up to 200 chars).
paramsobjectyesFor http_probe: url, and optionally expect_status, expect_content_type, expect_sha256. For doc_check: url and policy_id, where policy_id names an active doc_check policy.
run_atstring–Optional ISO timestamp to schedule the job for (default now).

No output schema declared.

No examples provided.

tascan_resolve_insight ~113

Apply or dismiss an AI Insight (POST /insights/:id/apply or /dismiss), with the Simple page's status writes (applied / dismissed, an optional dismiss reason). Apply marks it applied and returns the suggestion (title, body, action) for you to carry out; it runs no AI and changes nothing else. Only a pending (or explained) insight. Write tier.

NameTypeReqDescription
actionstringyes–
insight_idstringyes–
reasonstring––

No output schema declared.

No examples provided.

tascan_revoke_delegation ~118

Revoke a delegated child key immediately (DELETE /delegations/:key_id) — self-revoke, revoke by an ancestor key, or by an admin session of the org; any other caller is refused. Revoking cascades to every key IT delegated, in turn (the database trigger, not application code). Idempotent: revoking an already-revoked key reports already_revoked, no error.

NameTypeReqDescription
key_idstringyesThe delegated key id to revoke (from tascan_list_delegations)

No output schema declared.

No examples provided.

tascan_revoke_device ~129

Revoke a device credential immediately — the kill switch for a lost, stolen, or decommissioned device (RFID portal, barcode gun, PLC, camera, robot, tool, sensor). Its next evidence post is refused. Idempotent: revoking an already-revoked device reports already_revoked and mints no second receipt. Requires the device:admin permission (owner-only, needs full, never reachable through OAuth).

NameTypeReqDescription
device_idstringyesDevice ID to revoke
reasonstring–Why this device is being revoked (up to 500 characters)

No output schema declared.

No examples provided.

tascan_save_chat_thread ~96

Create a chat thread for an admin of your org (no thread_id: POST /chat/threads with admin_id and an optional title, default New Chat) or rename one (thread_id: PUT /chat/threads/:id with title and/or preview). Write tier.

NameTypeReqDescription
admin_idstring––
previewstring––
thread_idstring––
titlestring––

No output schema declared.

No examples provided.

tascan_save_qr_style ~141

Create a saved QR look (no qr_style_id: POST /qr-styles), change one (PUT /qr-styles/:id) or delete one (delete true). style is a flat JSON object of the QR options; a logo is a storage path in your org's logo folder (<org id>/qr/<file>), never a data: URL. is_default true makes it the org default (the previous default is cleared). Write tier.

NameTypeReqDescription
deleteboolean––
is_defaultboolean––
namestring––
qr_style_idstring––
styleobject––

No output schema declared.

No examples provided.

tascan_schedule_sms ~379

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 honoured, burst limits and the SMS quota apply, the "TaScan:" prefix is added, and a list_id appends a tap-to-open checklist link. Use this for reminders (e.g. "log your out time" each show night) — nothing outside TaScan needs to stay awake. Returns the scheduled row id; cancel with tascan_cancel_scheduled_sms while it is still pending. The same idempotency_key within an org returns the existing row instead of a duplicate.

NameTypeReqDescription
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
messagestringyesMessage 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_atstringyesWhen 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)

No output schema declared.

No examples provided.

tascan_search_marketplace ~207

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_equivalent job title. Returns sanitized public cards only (first name + last initial, skills, stats, passport URL) — never phone, email, or org membership.

NameTypeReqDescription
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"

No output schema declared.

No examples provided.

tascan_send_sms ~492

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 + media_type (jpeg/png/gif, max 3.5 MB) — e.g. a diagram, a tutorial photo or a site photo; the message text is optional when an image is attached. Sends from TaScan's carrier-registered A2P number (or the org's own Twilio if BYOK). Counts against the org's monthly SMS quota unless BYOK. Messages are auto-prefixed with "TaScan:" per carrier registration; transactional/work-related content only, no marketing.

NameTypeReqDescription
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 inst…
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).
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)

No output schema declared.

No examples provided.

tascan_send_task_email ~154

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.

NameTypeReqDescription
include_qrboolean–Include QR code for the task list in the email (default: true)
list_idstringyesTask 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_emailstringyesRecipient email address
to_namestring–Recipient display name

No output schema declared.

No examples provided.

tascan_server_info ~58

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tascan_set_access ~243

Set the security level of a task list (list_id) or a task (task_id): access_level (open, assigned, secured or null), human_assignees (worker ids, lists only) and agent_assignee (an agent_id of your org, or null; lists only: a task follows its list and refuses it as task_agent_assignee_unsupported). Raising it needs any write key that can see the item; lowering it or removing an assignee needs an owner/admin-tier key (an agent key is refused lower_requires_admin); a Decisions list or a passkey card never goes below assigned. The change and its access_changed ledger event are one transaction (all or nothing); access_conflict when the item changed meanwhile. Write tier.

NameTypeReqDescription
access_levelstring|null––
agent_assigneestring|null–Lists only: the agent_id whose key alone may reach the list and every task on it, or null
human_assigneesarray–Lists only: the full set of assigned worker ids (replaces the current set)
list_idstring––
task_idstring––

No output schema declared.

No examples provided.

tascan_set_template ~89

Share a task list as a template (shared true: POST /templates/:list_id) or remove it from your templates (shared false: DELETE, receipted; the list itself is untouched). Returns template_url, the share link (template.html?id=). List reads carry the same template_url. Write tier.

NameTypeReqDescription
list_idstringyes–
sharedbooleanyes–

No output schema declared.

No examples provided.

tascan_share_list ~182

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 apply), send.email e-mails it. Write tier for the link; sending needs the full access level. style is reserved for saved QR styles and ignored today.

NameTypeReqDescription
list_idstringyesTask 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

No output schema declared.

No examples provided.

tascan_text_report ~137

Text an existing report's link to a phone (POST /reports/:token/text) through the guarded SMS lane: the number must belong to a worker or roster entry of your org, burst limits, the SMS quota and STOP opt-outs apply, and the report's task list proves ownership. token is the report token (tascan_mint_completion_report / tascan_generate_report). Full tier (it sends to a person).

NameTypeReqDescription
notestring–Optional short intro, at most 160 characters
phonestringyesE.164 or 10-digit US number
tokenstringyesThe report token

No output schema declared.

No examples provided.

tascan_today ~155

The organization's Today summary (GET /today), counted exactly like the portal's Today: due_today, closed_today, awaiting_check, retake, photos_verified_7d and the needs list (each item's first reason of retake, issue, review, overdue, due_today). Archived, completed and demo projects never count (demo only with demo=true). The day is in zone (an IANA zone), else the org time zone, else UTC (timezone_fallback true). Read tier.

NameTypeReqDescription
demoboolean–Count demo / test projects too (default false)
zonestring–IANA time zone for the day boundary, e.g. America/Los_Angeles (default: the org time zone)

No output schema declared.

No examples provided.

tascan_unlink_site ~75

Remove a site's link to a project (project_id) or to a task list (list_id) — exactly one. The site, the project and the list themselves are not changed. Write tier.

NameTypeReqDescription
list_idstring––
project_idstring––
site_idstringyes–

No output schema declared.

No examples provided.

tascan_update_event ~233

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

NameTypeReqDescription
access_levelstring|null–SR-S2: raise freely; lowering needs an owner/admin-tier key (tascan_set_access rules)
agent_assigneestring|null–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_idstringyesTask 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)

No output schema declared.

No examples provided.

tascan_update_invoice ~166

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 invoice is final: any further change is refused 409 invoice_paid_locked (no refunds, edits or deletes).

NameTypeReqDescription
client_emailstring––
client_namestring––
client_phonestring––
due_datestring––
invoice_idstringyes–
notesstring––
paid_atstring–ISO timestamp (default now) when status = paid
statusstring––

No output schema declared.

No examples provided.

tascan_update_issue ~76

Change an issue's status (PUT /issues/:id): OPEN, ACKNOWLEDGED, IN_PROGRESS, RESOLVED or CLOSED. RESOLVED stamps resolved_at; a status message joins the thread. The issue is never deleted. Write tier.

NameTypeReqDescription
issue_idstringyes–
statusstringyes–

No output schema declared.

No examples provided.

tascan_update_project ~337

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 removed). labor_rules is validated like the projects CHECK.

NameTypeReqDescription
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_idstringyesProject 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–Status

No output schema declared.

No examples provided.

tascan_update_site ~117

Update a site (name, address, lat + lng, client_company, external_key, is_active). is_active false deactivates it (the soft delete: its links, work orders and visits stay). Write tier.

NameTypeReqDescription
addressstring––
client_companystring––
external_keystring––
is_activeboolean––
latnumber––
lngnumber––
namestring––
site_idstringyesSite ID

No output schema declared.

No examples provided.

tascan_update_subtask ~122

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

NameTypeReqDescription
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.
sort_ordernumber––
subtask_idstringyesSubtask ID
titlestring––

No output schema declared.

No examples provided.

tascan_update_task ~337

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:/SHELL:.

NameTypeReqDescription
access_levelstring|null–SR-S2: the task's own level (null = inherit the list); lowering needs an owner/admin-tier key
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 accep…
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 URL…
sort_ordernumber–Sort position
task_idstringyesTask ID
titlestring–New title

No output schema declared.

No examples provided.

tascan_update_worker ~207

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 is refused for every key: only an org owner or admin, signed in to the portal, can do that.

NameTypeReqDescription
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)
emailstring–New email
namestring–New name
phonestring–New phone
reasonstring–Why (recorded with an active change; at most 500 characters)
worker_idstringyesWorker ID

No output schema declared.

No examples provided.

tascan_update_zone ~349

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

NameTypeReqDescription
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 NFC/…
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/QR…
enforce_on_listboolean––
enter_messagestring––
is_activeboolean––
kindstring––
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––
task_list_on_enterstring––
zone_idstringyesZone ID

No output schema declared.

No examples provided.

tascan_verify_receipt ~207

Independently verify a TaScan Action Receipt JWS (protocol 6.8, POST /receipts/verify): size, envelope, signature, issuer origin, key lifecycle, hashing profile, value semantics, schema and chain check, with an online issued/serial check for the reference issuer. Public route: no TaScan scope is required by the API itself, though this MCP connection still needs some valid key to place any tools/call. Works for both the full and the public export profile. Keys come only from the issuer's own well-known key document (https://app.tascan.io/.well-known/tascan-receipt-keys.json for the reference issuer, or the equivalent well-known path for a foreign one) — this tool never supplies keys itself. Never verifies locally — always calls the reference verifier.

NameTypeReqDescription
jwsstringyesThe compact JWS to verify (from tascan_get_receipt's output, or any TaScan-format receipt).

No output schema declared.

No examples provided.

tascan_void_completion ~120

Void a completion that is wrong (POST /completions/:id/void): records a superseding refuted verdict (method void, with your reason) and a receipted completion_voided ledger event, and the task reads open again. The completion itself is never edited or deleted, so its receipt and hash chains stay valid. completion_id comes from tascan_get_task completions[].id. Full tier.

NameTypeReqDescription
completion_idstringyes–
reasonstringyesWhy it is wrong (1-500 characters, required)

No output schema declared.

No examples provided.

tascan_zone_compliance ~129

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, optionally by worker and date range. Same rows the printable Evidence Pack shows.

NameTypeReqDescription
project_idstring––
sincestring–ISO date/time lower bound
untilstring–ISO date/time upper bound
worker_idstring––
zone_idstring––

No output schema declared.

No examples provided.

Install

How do I install the TaScan MCP server?

TaScan is a hosted endpoint at https://app.tascan.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · app.tascan.io

# add to Claude Code
claude mcp add --transport http snowbikemike-tascan-mcp 'https://app.tascan.io/mcp'
Common questions

What is the TaScan MCP server?

TaScan is an MCP server listed in the public MCP registry as io.github.snowbikemike/tascan-mcp. 36 MCP tools for projects, tasks, workers, QR/NFC tags, and AI remediation. Task. Scan. Done. This page covers its hosted endpoint (https://app.tascan.io/mcp).

Is the TaScan MCP server safe to use?

TaScan scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the TaScan MCP server expose?

TaScan exposes 142 tools: tascan_list_projects, tascan_create_project, tascan_get_project, tascan_update_project, tascan_delete_project, and 137 more. Their descriptions and schemas cost roughly 25,684 tokens of context every time the server is loaded.

Does the TaScan MCP server require authentication?

Yes. TaScan asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the TaScan MCP server still maintained?

TaScan is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.