# MCP tools reference

> Every tool the Workspace369 MCP server exposes to connected AI apps, grouped by module, with what it does, the scope and permission it needs, and its Token cost class.

- Product: Workspace369
- Documentation version: 2026.3
- Section: AI connections
- Last updated: 2026-09-07
- Canonical source: https://docs.workspace369.com/v/2026.3/ai-connections/mcp-tools-reference/

---

This is the complete list of tools a connected AI app can call, as published by the Workspace369 MCP server in this release. AI apps read the same list when they connect, so you do not need to configure anything from here. Use it to understand what a prompt can reach, which permissions a member needs, and what a call costs.

## How to read this reference

Each row names the tool as the AI app sees it, what it does, and what it needs:

- **Scope** is the access you grant the app at sign-in, shown on the sign-in page under the module name. `read` is the view option; `write` is view, create, and edit; `send` is send messages on your behalf.
- **Permission** is the Workspace369 permission your role must include, named as the module and the permission within it. "Any member" means membership of the workspace is enough.
- **Cost** is the Token class: Read, Write, or Send. Default costs are 1, 5, and 10 Tokens. See [How MCP access is controlled and billed](/v/2026.3/ai-connections/mcp-permissions-tokens-and-audit/).

Tools marked **always confirmed in Ask AI** show a confirmation card in Ask AI in every mode. A connected app applies its own approval step instead.

Two rules apply everywhere:

- Members limited to specific clients see only records in their book. A record outside it reads as not found.
- Amounts on invoices, proposals, and payments are hidden unless the member can view prices.

## Workspace

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `workspace_get_context` | Returns the workspace name and plan, your permissions, and the Token balance. Apps usually call it first. | `workspace:read` | Any member | Read |
| `workspace_business_summary` | Counts only: clients, invoices with the unpaid count and outstanding total, today's scheduled events, and catalog services. | `workspace:read` | Any member | Read |
| `batch_apply` | Runs up to 30 tool calls in one request. Each item is checked and charged on its own, and a failure in one item does not stop the rest. Tools that are always confirmed cannot be placed in a batch. | `workspace:read` | Any member | Read, plus each item |

## Clients and lead sources

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `clients_search` | Searches active clients by name, email, or company, with filters for lead source, business or individual, and tags. Archived clients are excluded. | `clients:read` | Clients: view | Read |
| `clients_get` | Returns one client by id, including archived clients, which are flagged. | `clients:read` | Clients: view | Read |
| `clients_create` | Creates a client with name, email, phone, company, type, lead source, and one or more addresses. Addresses are verified and stored geocoded when they match. | `clients:write` | Clients: add | Write |
| `clients_update` | Changes only the fields passed. Updating an email, phone, or address replaces the primary entry; a full address list can be replaced explicitly. | `clients:write` | Clients: edit | Write |
| `lead_sources_list` | Lists the workspace's lead sources and which one is the default for new clients. | `clients:read` | Lead sources: view | Read |
| `lead_sources_set_default` | Sets the default lead source for clients created afterwards. It cannot create a lead source. | `clients:write` | Lead sources: edit | Write |

## Requests

Requests are inbound submissions from intake forms, pages, funnels, and the lead API.

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `requests_search` | Lists requests newest first, filtered by status, form, or free text over name, email, phone, and message. | `requests:read` | Requests: view | Read |
| `requests_get` | Returns one request with its full message and the consent the prospect recorded. Internal comments and technical details are never returned. | `requests:read` | Requests: view | Read |
| `requests_forms_list` | Lists intake forms so a form id can be shown by name. Forms cannot be created or edited through MCP. | `requests:read` | Requests: manage settings | Read |
| `requests_update_status` | Marks a request reviewed or archives it. Archiving is final. | `requests:write` | Requests: edit | Write |
| `requests_convert_to_client` | Creates the client from a request, or links an existing one, and marks the request converted. Needs the Clients scope as well. Can start new-client workflows. Always confirmed in Ask AI. | `requests:write` and `clients:write` | Requests: convert | Write |
| `requests_respond` | Emails or texts the prospect. The recipient comes from the request and cannot be changed. Texting a lead without SMS consent must be acknowledged explicitly. Always confirmed in Ask AI. | `inbox:send` | Requests: edit | Send |

## Notes

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `notes_search` | Lists workspace notes or your personal notes, filtered by text, folder, tag, or client. | `notes:read` | Notes: view | Read |
| `notes_get` | Returns one note. Trashed notes and other people's personal notes are not returned. | `notes:read` | Notes: view | Read |
| `notes_create` | Creates a workspace note or a personal note, optionally in a folder and linked to clients. | `notes:write` | Notes: create | Write |
| `notes_update` | Changes a note's title, body, or tags. A new body replaces the whole text. | `notes:write` | Notes: edit | Write |

## Invoices and payments

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `invoices_search` | Lists invoices by number, title, client, or PO number, with status and client filters. Each row says whether it is overdue. | `invoices:read` | Invoices: view | Read |
| `invoices_get` | Returns one invoice by id or invoice number, with its line items. | `invoices:read` | Invoices: view | Read |
| `invoices_get_defaults` | Returns the workspace's invoice defaults: due terms, tax, discount, deposit, and notes applied to every new invoice. | `invoices:read` | Invoices: view | Read |
| `invoices_create_draft` | Creates a draft invoice for a client from catalog items or one-off lines. Totals and tax are calculated by Workspace369. The draft is never sent by this tool. | `invoices:write` | Invoices: create | Write |
| `invoices_update_draft` | Edits a draft's lines, discount, dates, tax, deposit, project, and notes. Editing a sent invoice requires explicit confirmation because the client's link changes. | `invoices:write` | Invoices: edit | Write |
| `invoices_create_from_schedule` | Creates a Pending invoice with a pay link for one scheduled job, using the job's client and connected proposal. | `invoices:write` | Invoices: create | Write |
| `invoices_batch_from_schedules` | Invoices every uninvoiced job in a date range, up to 30 per call, optionally marking them paid and emailing or texting each client. Always confirmed in Ask AI. | `invoices:write` | Invoices: create | Send |
| `invoices_send` | Emails or texts the invoice with its view-and-pay link, attaching the PDF on email. Refused for opted-out clients. Always confirmed in Ask AI. | `invoices:write` | Invoices: share | Send |
| `invoice_payments_list` | Lists every payment on one invoice with the total, paid, and remaining amounts. | `invoices:read` | Invoices: view | Read |
| `invoice_payments_summary` | Summarizes received, refunded, net, and remaining amounts and the split by payment method. | `invoices:read` | Invoices: view | Read |
| `payments_record` | Records a full or partial payment with a method. This is the only way to mark an invoice paid. Nothing is sent to the client. | `invoices:write` | Invoices: mark paid | Write |

## Proposals

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `proposals_search` | Lists proposals and estimates with their sent, viewed, accepted, and declined history. | `proposals:read` | Proposals: view | Read |
| `proposals_get` | Returns one proposal with its line items and which are client-selectable add-ons. | `proposals:read` | Proposals: view | Read |
| `proposals_get_defaults` | Returns the acceptance terms: signature required, deposit required and how much, and expiry. Pass a proposal id for that proposal's own terms. | `proposals:read` | Proposals: view | Read |
| `proposals_create_draft` | Creates a draft proposal for a client with optional line items. Never sent by this tool. | `proposals:write` | Proposals: create | Write |
| `proposals_update_draft` | Edits a draft's title, notes, lines, discount, signature and deposit requirements, and expiry. Sent proposals are refused. | `proposals:write` | Proposals: edit | Write |
| `proposals_update_status` | Records that a sent proposal was accepted or declined outside the system, or recalls it to draft. Does not send anything or create an invoice. | `proposals:write` | Proposals: edit | Write |
| `proposals_send` | Emails the proposal to its client with the acceptance link. Refused for opted-out clients. Always confirmed in Ask AI. | `proposals:write` | Proposals: send | Send |

## Projects

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `projects_search` | Lists projects by name or client, with status filters. | `projects:read` | Projects: view | Read |
| `projects_get` | Returns one project. | `projects:read` | Projects: view | Read |
| `projects_create` | Creates a project with status, client, dates, budget, priority, and tags. | `projects:write` | Projects: create | Write |
| `projects_update` | Changes name, description, status, budget, priority, or notes. Progress is always derived from task completion. | `projects:write` | Projects: edit | Write |

## Tasks and boards

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `task_boards_list` | Lists boards with their ordered statuses. Every task lives on a board. | `tasks:read` | Tasks: view | Read |
| `task_board_schema` | Returns a board's statuses, built-in fields, and custom fields with allowed values. | `tasks:read` | Tasks: view | Read |
| `task_board_tags_list` | Searches or pages a board's tag catalog. | `tasks:read` | Tasks: view | Read |
| `tasks_search` | Lists tasks across boards by title, board, status, priority, assignee, due dates, tags, or starred. | `tasks:read` | Tasks: view | Read |
| `tasks_get` | Returns one task in full, including custom fields and subtasks. | `tasks:read` | Tasks: view | Read |
| `tasks_comments_list` | Reads a task's comments, newest first. | `tasks:read` | Tasks: view | Read |
| `tasks_create` | Creates one task on a board with status, priority, tags, assignees, estimate, dates, dependencies, custom fields, and a checklist. | `tasks:write` | Tasks: create | Write |
| `tasks_update` | Changes only the fields passed. Tags and assignees are replaced as a list. | `tasks:write` | Tasks: edit | Write |
| `tasks_subtasks_update` | Adds checklist items or marks existing ones complete or open. | `tasks:write` | Tasks: edit | Write |
| `tasks_comment_add` | Adds a plain-text comment attributed to you. Mentions are not resolved. Nothing is sent to a client. | `tasks:write` | Tasks: edit | Write |
| `task_boards_create` | Creates a board with To-do, In Progress, and Done. Cannot rename or reconfigure a board. | `tasks:write` | Tasks: manage boards | Write |

## Calendar, booking, and reminders

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `calendar_list_events` | Lists events in a date range, optionally for one team member or client. Cancelled events are excluded unless requested. | `calendar:read` | Calendar: view | Read |
| `calendar_categories_list` | Lists the calendar categories configured in the workspace. | `calendar:read` | Calendar: view | Read |
| `calendar_check_availability` | Reports which team members are free on a date from their working hours and that day's events. | `calendar:read` | Calendar: view | Read |
| `booking_pages_list` | Lists booking pages with their shareable links. Inactive pages have no link. | `calendar:read` | Calendar: view | Read |
| `calendar_create_event` | Creates a timed or all-day event with client, category, assignees, services, reminders, and recurrence. | `calendar:write` | Calendar: create | Write |
| `calendar_update_event` | Moves or edits an event, adds or clears reminders, or cancels it. Cancelling keeps the record. For a recurring event it can move the series but cannot change the repeat rule. | `calendar:write` | Calendar: edit | Write |
| `calendar_events_reschedule_batch` | Moves a day's client events, or one client's upcoming events, to another date, up to 30 per call. Recurring series and events open in the app are skipped and counted. | `calendar:write` | Calendar: edit | Write |
| `reminders_list` | Lists your reminders: upcoming, overdue, completed, or all, personal or workspace. | `reminders:read` | Any member | Read |
| `reminders_create` | Creates a reminder at a time, or a set number of minutes before a calendar event, with recipients, channels, and recurrence. | `reminders:write` | Any member | Write |
| `reminders_update` | Changes a reminder's title, description, time, priority, or channels. Moving the time is how a reminder is snoozed. | `reminders:write` | Any member | Write |
| `reminders_close` | Completes or cancels a reminder. Completing a recurring reminder closes the whole series. | `reminders:write` | Any member | Write |

## Time tracking

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `time_entries_list` | Lists time entries in a time range. Members limited to specific clients see their own entries and their clients' entries. | `time_entries:read` | Time tracking: view | Read |
| `time_entries_search` | Lists time entries filtered by client, project, task, and billable. | `time_entries:read` | Time tracking: view | Read |
| `timesheets_list` | Lists weekly timesheet submissions with status and totals. You see your own unless you can approve timesheets. | `time_entries:read` | Any member | Read |
| `time_entries_create` | Logs a completed entry for yourself with duration, client, project, task, and billable status. Billable entries use the workspace's rate unless one is given. | `time_entries:write` | Time tracking: create | Write |
| `time_entries_update` | Edits one of your own entries. Submitted, approved, and period-locked entries are refused. | `time_entries:write` | Time tracking: edit | Write |

## Team

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `team_members_list` | Lists members with role, invitation status, and working days. | `team:read` | Any member | Read |
| `team_members_search` | Finds a member by name or email, returning candidates when the match is ambiguous. | `team:read` | Any member | Read |
| `team_member_availability_get` | Returns a member's weekly working hours, or the whole roster's, with the timezone they are in. | `team:read` | Any member | Read |
| `team_member_activity_list` | Lists what a member has done recently: the action, the record, and which fields changed, never the values. | `team:read` | Team: view activity | Read |
| `team_member_availability_set` | Changes a member's working hours for the days passed, and their timezone. The member is not notified. Always confirmed in Ask AI. | `team:write` | Team: edit permissions | Write |

## Inbox

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `search_workspace_messages` | Full-text search across email, SMS, and call notes, returning the conversation each match belongs to. Only channels and clients you can access are searched. | `inbox:read` | Any member with channel access | Read |
| `inbox_send_message` | Sends one SMS or email from the workspace inbox, optionally into an existing conversation. Always confirmed in Ask AI. | `inbox:send` | The channel's send permission | Send |
| `inbox_send_bulk` | Sends one SMS to up to 30 recipients. Recipients who opted out or are blocked are reported as suppressed and not messaged. Always confirmed in Ask AI. | `inbox:send` | Any member with SMS send access | Send |

## Catalog

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `products_list` | Lists catalog services and products with pricing. Active items by default; drafts and archived on request. | `products:read` | Product catalog: view | Read |
| `products_create` | Adds a service or product with a price and price type: flat rate, per hour, per unit, or per area. Duplicate names are refused. | `products:write` | Product catalog: add | Write |
| `products_update` | Changes name, price, price type, description, or active state. Setting inactive moves the item to draft. | `products:write` | Product catalog: edit | Write |

## Workflows

Workflows appear to AI apps under their stable name, automations.

| Tool | What it does | Scope | Permission | Cost |
| --- | --- | --- | --- | --- |
| `automations_list` | Lists workflows with trigger, action, on/off state, last run, and whether each one can actually fire and why not. | `automations:read` | Workflows: view | Read |
| `automations_get` | Returns one workflow's full definition and any definition warnings. Recipient addresses are never returned. | `automations:read` | Workflows: view | Read |
| `automations_runs_list` | Lists runs and their outcomes, including skipped runs and the step that stopped them. Message bodies and addresses are never returned. | `automations:read` | Workflows: view | Read |
| `automations_disable` | Turns a workflow off. It does not recall follow-ups already queued. There is no tool to turn a workflow on, create one, or edit one. Always confirmed in Ask AI. | `automations:write` | Workflows: turn on or off | Write |

## Available to Ask AI only

These tools exist on the server but their scopes are not offered on the sign-in page, so a connected AI app cannot call them in this release. Ask AI can.

| Tool | What it does |
| --- | --- |
| `knowledge_search` | Searches the workspace's AI knowledge base. |
| `media_list` | Lists photos and documents attached to a schedule, invoice, or expense. |
| `media_attach` | Attaches an already-uploaded workspace file to a schedule, invoice, or expense. |
| `expense_types_list` | Lists expense categories. |
| `expenses_list` | Lists recorded expenses with category, job, project, and period filters. |
| `expenses_create` | Records an expense, optionally on a project or job. |
| `expenses_update` | Corrects an expense outside a closed accounting period. |

## Limits

- List and search tools return 25 results by default and 100 at most per page, with a cursor for the next page. Message search returns at most 50.
- A batch holds at most 30 items, a bulk text at most 30 recipients, a batch reschedule moves at most 30 events, and batch invoicing creates at most 30 invoices per call. When more work remains, the result says so; nothing is dropped silently.
- One connection may make 120 calls per minute and a workspace 600.
