Developer Docs
MCP Tool Catalog
Generated catalogue of willaOS MCP tools.
Generated from app/api/mcp/route.ts by scripts/generate-public-api-docs.mjs.
| Tool | Description |
|---|---|
accept_dump_item | Accept one pending dump item as company memory. Only the dump owner can do this. Does not write wiki or SOPs. |
apply_figma_asana_sync | Apply a Figma-to-Asana sync plan through server-side Asana credentials. Requires write permission and explicit apply mode. |
approve_agent_action | Approve one pending durable action using optimistic concurrency. This records authorization; provider execution remains a separate durable step. |
approve_email_approval_request | Approve a pending email approval request. Resend-backed requests are sent immediately after approval. |
calendar.list_events | List aggregated admin calendar events using the same filters as GET /api/calendar. |
calendar.list_resourcing_week | List weekly resourcing calendar lanes and per-day allocations with the same date, client, project, team member, and timezone filters as GET /api/calendar. |
calendar.update_event_time | Move or resize an editable admin calendar event. Supports project milestones, shoot days, and selected meeting proposal slots. Uses expected_version like X-Version. |
comment_on_client_email_draft | Add an attributed internal comment to a shared client email draft. |
commit_scheduling_change | Commit a Google Calendar event reschedule and refresh willaOS scheduling projection metadata. |
create_client_email_draft | Create a shared client email draft on a project so designers and developers can review it. |
create_meeting_proposal | Create a Willa meeting availability proposal and suggest slots from connected internal Google Calendars |
create_skill | Create a Willa Skill Library draft. Drafts are never installable: publish_skill puts a release in front of install clients |
delete_project_qa_item | Delete one project QA item using its current optimistic version |
discover_skills | Discover Willa automation workflow skills by intent without exposing local paths, secrets, private prompts, or install content |
extract_receipt_dump | File a saved dump into pending typed items. Human accept/reject is still required before the items become company memory. |
get_agent_action | Get one durable staged action with its append-only decisions and execution attempts. Invisible actions return not found. |
get_agent_gardening_finding | Get one gardening proposal and its source session links. Human review is still required before any environment change lands. |
get_agent_gardening_metrics | Read scoped gardening quality metrics, including decisions, repeated friction, improved sessions, and unresolved gap age. |
get_agent_session | Get one durable agent session with its append-only events and linked artifacts. Discovery: obtain session_id from list_agent_sessions or a willaOS session link. Do: use this to resume or audit work. Don't: treat an artifact as approved unless the timeline contains approval_granted. |
get_asana_status | Get Asana task summary for a project |
get_client | Get a full client record by ID plus its list of projects |
get_client_email_draft | Get one shared client email draft with comments, reviewers, presence, and permissions. |
get_connector_resource | Get one canonical connector resource by its willaOS resource ID. Invisible resources return not found. |
get_email_approval_request | Get one email approval request, including recipients, body, classification, status, and SLA timestamps. |
get_figma_asana_sync_status | Get Figma-to-Asana sync readiness for a project, including linked Figma files and cached Asana graph status |
get_figma_comment_mirror | Get the latest paired client/internal Figma comment mirror state for a project, including newest comments and mirror operation keys |
get_figma_section_ledger | Get one Figma section-ledger bundle, including check-in/check-out events and per-user seen state |
get_meeting_proposal | Get one meeting availability proposal with proposed slots and internal attendees |
get_milestones | Get upcoming milestones across all projects, sorted by date |
get_project | Get a full project record by ID |
get_project_content_schema | Get a Light CMS content schema detail with pages, sections, slots, current entry values, and validation state |
get_project_economics | Get the Harvest-backed project economics roll-up, including budget lines, actuals, profitability, and time-entry cache status |
get_project_field | Get a specific field from a project record |
get_project_overview | Start here for any question about how a project is doing. One database-only call returning the project header and signals permitted by this key's fields_read grants, plus a drill_down list naming the tool to call for each domain and whether this key can reach it. Omitted signals are not authorized; a null signal means its database source was unavailable. Prefer this over calling the per-domain get_project_* tools speculatively. |
get_project_pull_ticket | The next live ticket on a project record. Contractors and clients pull this card instead of asking someone to assign. Dead or approved work is omitted. |
get_project_readiness_rollup | Get the cross-system project readiness rollup and pre-launch audit checklist for a project |
get_project_readiness_sop | Read the Mila readiness SOP runtime state for a project, including checklist summary, missing inputs, adapter capabilities, and pending staged writes |
get_project_shot | Get one studio shot-list item for a project, including references, props, and version metadata |
get_project_sitemap | Get the current or SOW baseline sitemap for a project, including pages and external page mappings |
get_project_sitemap_reconciliation | Show matched, unmatched, conflicting, and orphaned external mappings for the current project sitemap |
get_project_taste_profile | Get the compact client taste profile for a project, including quiz answers and competitor/reference signals |
get_project_timeline | Get normalized project timeline batches and sprints for a project |
get_project_workstreams | Get first-class per-workstream status, blocked reason, and rollup summary for a project |
get_qa_extension_config | Get the versioned QA extension page contract by project ID or storefront/domain URL |
get_receipt_dump | Get the caller's own end-of-day tacit dump for a local date. Raw dump text is owner-private. Accepted items are company memory and belong on list_accepted_dump_items. |
get_resource_calendar | Get the internal scheduling resource calendar for a date range. Returns Willa resources, Google-backed calendar events, shoots, conflicts, and the FullCalendar Premium fallback status. |
get_shoot_floor_plan | Get a shoot-day 2D floor plan, sidebar inventory, and clone source metadata |
get_skill_bundle | Get one published installable Willa Skill Library bundle, including content files/fragments and deterministic checksum metadata |
get_skill_discovery | Get safe discovery metadata for one Willa automation workflow skill |
get_skill_usage | Read bounded Willa skill usage: selection and invocation totals per version plus the most recent reported events with their source |
list_accepted_dump_items | List accepted end-of-day dump items. These are company memory after a person accepted them. Pending and rejected items are omitted. Do not treat this as permission to write wiki or SOPs. |
list_agent_actions | List durable staged actions visible to this caller. An action must be explicitly approved before external execution unless its recorded policy already approved it. |
list_agent_gardening_findings | List repeated agent-work friction visible to this caller. Findings are review proposals, not permission to change code, SOPs, records, or integrations. |
list_agent_sessions | List durable agent sessions visible to this caller. Discovery: use filters to find a session ID, then call get_agent_session for its event and artifact timeline. Do: use this instead of scraping Slack. Don't: infer hidden sessions from empty results. |
list_blocked_on_you | One list of record work that cannot move without this team member. Not an Asana dump and not a morning essay. |
list_client_email_drafts | List project-scoped shared client email drafts. Use this for collaborative client mail, not the personal Gmail inbox. |
list_clients | List all non-archived Willa Creative clients. Returns summaries with these fields only: id, name, brand_name, phase, team_pm, archived_at, project_count. team_pm is a best-effort runtime lookup and may be null; it is not a persisted field on the client record. For the full client record (contacts, platform_links, brand_tokens, portal config, etc.) call get_client. |
list_connector_grants | List connector grants visible to this caller. Grants are authority records; never infer access from a resource existing without an active grant. |
list_connector_resources | List canonical connector resources visible to this caller. Use the returned resource_uri when asking a connector-backed agent to read a specific channel, thread, or mailbox. |
list_email_approval_requests | List client-facing email approval requests, optionally filtered by client, project, status, source, and limit. |
list_figma_section_ledgers | List Figma section-ledger records for a project, optionally filtered by file key or section node ID |
list_meeting_proposals | List Willa meeting availability proposals, optionally filtered by client, project, status, and limit |
list_project_content_schemas | List Light CMS content schemas for a project, newest first, with schema metadata and missing source messages |
list_project_document_vendor_lifecycle | List project documents with Google Signatures and QuickBooks lifecycle refs, status snapshots, external links, last sync time, and sync errors |
list_project_media_assets | List the project media asset library, including lifecycle counts, source links, current versions, replacement history, and readiness blockers |
list_project_pages | List canonical sitemap pages for a project with page status, scope status, mapping coverage, and owner references |
list_project_qa_items | List canonical QA items captured for a project from manual entry, video QA, QA extension, Asana, Figma, or GitHub |
list_project_shots | List studio shot-list scenes for a project, including references, prop readiness, and linked shoot-day schedule usage |
list_projects | List non-archived projects, optionally filtered by client_id. Returns summaries with these fields only: id, client_id, name, engagement_type, phase, team_pm, next_milestone, archived_at. team_pm and next_milestone are best-effort runtime values and may be null. For the full project record (deal, team, dates, platform_links, readiness_gate, content_production, etc.) call get_project. For how one project is currently doing, call get_project_overview. |
list_shoot_day_plan | Get a shoot-day schedule plan with blocks and linked studio shot-list details |
list_skill_versions | List immutable Willa skill versions newest first, five per page. Pass the oldest returned version as before_version to read earlier history. |
list_skills | List published installable Willa Skill Library releases with stable slug, kind, released version, checksum, scope, and update metadata |
meeting_transcript.ingest | Ingest a plaintext meeting transcript into willaOS documents and structured meeting transcript records. |
open_deliverable_review_round | Open the next numbered round for a deliverable review |
plan_figma_asana_sync | Build a dry-run Figma-to-Asana sync plan for page mappings, section subtasks, dependencies, and board placement |
preview_scheduling_change | Preview conflicts for a proposed Google Calendar event move before committing it. |
publish_skill | Publish the current Willa skill draft, or restore a historical version, as a new immutable active release. History is never rewritten |
queue_client_email_draft | Queue a shared client email draft for the existing send-approval path. |
reject_agent_action | Reject one pending durable action with a required reason and optimistic concurrency. |
reject_dump_item | Reject one pending dump item. Only the dump owner can do this. |
reject_email_approval_request | Reject a pending email approval request with a required reason. |
report_skill_invocations | Report bounded skill selection/invocation telemetry idempotently. The source actor is this API key; member_id is an unverified attribution claim and never grants access |
request_client_email_draft_review | Ask named team members to review a shared client email draft. |
save_receipt_dump | Save the caller's end-of-day tacit dump for a local date. Empty text or skip=true marks a valid empty day. This does not write wiki, SOPs, or SuperMemory. |
save_shoot_floor_plan | Save a shoot-day 2D floor plan. Uses expected_version like X-Version. |
search_project_scope | Search project scope includes/excludes, legacy scope notes, first-class scope decisions, and current sitemap pages |
search_project_sitemap | Search the canonical current project sitemap, scope decisions, and QA items for a page or feature |
search_scope | Check if something is in scope for a project |
search_sops | Search Standard Operating Procedures by content |
send_meeting_proposal | Send a meeting availability proposal with a constrained set of proposed slot IDs and return the client link |
shopify_app_bootstrap | Get the Willa Shopify app's per-store bootstrap payload: linked client/project, branded contacts, platform links, readiness/QA counts, and installation status. Used by the Willa Shopify app's App Home and by external agents asking 'what does Willa know about this store?'. |
shopify_installation_sync | Upsert a Shopify app installation record in willaOS. Called by the Willa Shopify app backend after OAuth, periodic refresh, or theme/scope changes. Shop must be allowlisted (matches a client/project platform link or an existing installation). |
shopify_staged_action_create | Draft a Shopify write action that will execute on a willa-managed store once approved. Action is created in 'submitted' state; an authorized Willa operator must approve before execution. Use idempotency_key to safely retry. Action types: shopify_page_create, shopify_page_update, shopify_menu_update, shopify_metaobject_upsert, shopify_metafield_set, shopify_file_upload, shopify_file_link, shopify_readiness_finalize. |
shopify_staged_action_list | List Shopify staged actions for a shop, filtered by status. Useful for agents to see what's pending approval, executing, or recently completed. |
shopify_store_snapshot_get | Get the most recent cached Shopify store snapshot for a willa-managed store: shop info, product/collection/page/blog/file counts, recent order rollup, theme inventory, installed-app inventory, and online-store performance metrics. Sourced from the Redis snapshot pushed by the Willa Shopify app on every embedded load. Returns null if no snapshot is cached. |
stage_image_swap_manifest | Accept a Chrome image-swap placement manifest and optionally draft a Shopify media placement staged action for operator review. This never writes directly to a live theme. |
update_client_ai_policy | Set a client's AI data policy with optimistic concurrency. private_only and local_only prohibit hosted AI processing. |
update_client_email_draft | Update a shared client email draft using optimistic concurrency. |
update_deliverable_review_asset_status | Update a deliverable review asset status using its current updated timestamp |
update_project_content_entry | Update one Light CMS content entry value using optimistic concurrency via expected_version |
update_project_qa_item | Update the title, description, status, severity, or assignee of one project QA item |
update_project_workstream_state | Update one project workstream status. Blocked workstreams require blocked_reason. |
update_skill | Save a new Willa skill draft with optimistic concurrency. The previous published release keeps serving install clients until publish_skill runs |