Carly MCP reference
148 tools: 64 read, 44 write, 40 sensitive write. Setup steps for each client are on the MCP server page.
Connection
- Server URL
https://carlyassistant.com/mcp/- Transport
- Streamable HTTP, stateless
- Resource metadata
https://carlyassistant.com/.well-known/oauth-protected-resource/mcp- Authorization server
https://carlyassistant.com/.well-known/oauth-authorization-server
Authentication
OAuth 2.1 is the default. Clients use the authorization code flow with PKCE
(S256) and can register themselves with dynamic client registration. An unauthenticated
request gets 401 with a WWW-Authenticate header that points to the
resource metadata. Access tokens are short-lived; clients renew them with the refresh token.
An OAuth connection acts for the one Carly account that authorized it and can use every tool
on this page.
API keys are the alternative for clients without OAuth. Create one in the Carly
dashboard under Integrations, then API Keys, choosing only the scopes it needs. Send it as
Authorization: Bearer <key>. Each tool requires the scope listed beside it
below, and a call without that scope is refused. Keys expire after at most 365 days and can be
revoked at any time.
Scopes
booking_pages:read- read booking pages and event types
booking_pages:write- create / update booking pages
bookings:read- list and view bookings
calendar:read- read connected calendars and events
calendar:write- create / update / delete calendar data
mail:read- search and read connected mailboxes
mail:write- draft, send, and organize mailbox messages
workflows:read- list workflows and run history
workflows:write- create / edit / run / pause / resume workflows
skills:read- list and view skills
skills:write- create / edit / delete skills
memory:read- read agent memory
memory:write- save / delete agent memory
tasks:read- list scheduled tasks, reminders, and connected provider tasks
tasks:write- create / update / delete scheduled tasks, reminders, and connected provider tasks
workspace:read- read to-dos, data tables, and files
workspace:write- add / edit / delete to-dos, data tables, and Drive / OneDrive files
contacts:read- list and view contacts
contacts:write- add / edit / delete contacts
settings:read- read preferences, signature, and aliases
settings:write- change preferences, signature, and aliases
account:read- read credit usage and connected integrations
Read, write, and sensitive tools
Every tool carries MCP annotations: title, readOnlyHint,
destructiveHint, and openWorldHint.
- Read
- Looks things up and changes nothing.
readOnlyHint: true. - Write
-
Creates or changes data inside the user's own account or connected apps, such as drafts,
labels, to-dos, and CRM fields. Nobody else is contacted.
destructiveHint: false. - Sensitive write
-
Sends something to other people, deletes or overwrites data, runs code, or starts an
automation that keeps running.
destructiveHint: true. Clients should ask the user to approve each call.
Side effects to know
- Send tools deliver email at once. A sent email cannot be recalled.
- Creating, moving, or deleting a calendar event can notify its attendees through the calendar provider.
- Workflows and scheduled tasks keep running on their schedule until they are paused or archived.
run_pythonruns code in a sandbox and can call apps the user has connected to Carly.- Sharing tools and booking pages make content visible to the people or public link they name.
Plans and limits
- Free accounts can use every read tool, organize mail and data, and create drafts.
- Sending email requires a paid plan. Some workflow features do too. The error says so and links to the plan page.
- Each account can make 60 tool calls a minute and 1,800 an hour.
- Sending has a daily recipient cap. The error gives the count and when it resets.
- Mail, calendar, and file tools need the matching account connected in Carly. If it isn't, the result says so and how to connect it.
- No region restrictions.
Errors and status
A failed call returns an MCP result with isError: true. Its structured content
looks like this:
{
"success": false,
"error": "Human-readable reason",
"code": "tool_failed",
"retryable": false,
"effects_may_have_occurred": false,
"retry_after_seconds": 30
} retry_after_seconds appears only when a retry is safe. When
effects_may_have_occurred is true, do not retry automatically: an email may already
have been delivered. Invalid arguments return an error naming the argument. Going over the rate
limit returns Rate limit exceeded — retry in Ns. Booking-page tools report failure
as {"ok": false, "error": …, "code": …} in the result instead.
tool_failed- The action failed. The message says why.
uncertain_effects- The action may have partly happened. Check before retrying.
capacity_exhausted- The code sandbox is busy. Retry after the delay given.
invalid_code- Code passed to a code tool was rejected before it ran.
preparation_failed- The code sandbox could not be prepared.
execution_failed- Code ran and raised an error.
job_too_large- The code job exceeded its size limit.
job_timeout- The code job ran past its time limit.
output_too_large- The result was too large to return.
artifact_persistence_failed- The action ran but its output file could not be saved.
Tools
Updated 2026-10-05. Open a tool to see its inputs.
add_todo Write workspace:write Add one item to the user's to-do list.
-
titlerequired stringThe to-do text, e.g.-
due stringOptional due date, ISO 8601 (YYYY-MM-DD).-
priority integer1 (urgent) to 4 (none).-
project stringThe list this belongs to, e.g.-
labels string[]Short tags, e.g.-
notes stringLonger detail or context that doesn't belong in the title.-
parent_id integerMake this a sub-task of that to-do (a row_id from list_todos).-
on string[]CRM records this to-do is about: people by email, or record ids (deals, companies).-
repeat stringMake it repeat: 'every day', 'every weekday', 'every monday', 'every mon, wed', 'every 2 weeks', 'every month', 'every year'.-
due_time stringOptional time of day it is due, 24-hour 'HH:MM'.-
assignee stringIn a team workspace: the teammate it is for, by name or email.-
workspace stringThe team workspace to act in, by name (see Workspaces).
aggregate_crm Read contacts:read Calculate grouped counts or numeric aggregates over CRM records.
-
group_byrequired stringField key to group by (e.g., 'status', 'company', 'source').-
count_only booleanIf True, just return counts.-
limit integerMax number of groups to return.-
filter_field stringOptional field to filter on before grouping.-
filter_value stringValue to filter by (case-insensitive contains).
append_onedrive_workbook_row Write workspace:write Append one row to a OneDrive Excel worksheet, optionally seeding a header row.
-
file_idrequired stringOneDrive item id of the .xlsx workbook (from list_onedrive_files).-
sheet_namerequired stringWorksheet/tab name to append to.-
valuesrequired object[]One row to append — a list of cell values, left to right (e.g.-
headers string[]Column headers to write as the first row, used ONLY when the sheet is empty.-
drive_id stringDrive id for a workbook in a SharePoint/team document library (use the drive_id from resolve_onedrive_share_link); omit for the user's own OneDrive.-
onedrive_account_id integerNative account_id from list_integrations(query='OneDrive').
append_to_google_doc Write workspace:write Append text to the end of an existing Google Doc, found by id or name.
-
drive_account_id integerNative account_id from list_integrations(query='Google Drive').-
document_id stringGoogle Doc ID to append to.-
document_name stringFind the Google Doc by name instead of ID.-
folder_id stringDrive folder ID to search in when finding by document_name.-
folder_name stringFolder name to search in when finding by document_name.-
textrequired stringText to append to the end of the document.
archive_workflow Sensitive write workflows:write Archive one owned workflow and retain its run history.
-
workflow_idrequired integerID of the workflow to archive.
bulk_mail_action Sensitive write mail:write Preview and then apply one mail change across every message matching a scope and filters — the batch alternative to calling a one-message tool repeatedly.
-
operationrequired "preview" | "apply"'preview' first, then 'apply' with only the returned snapshot_id.-
mailbox stringNative Gmail/Outlook mailbox from list_mail_accounts(native_only=true), such as gmail:22 or outlook:33.-
snapshot_id stringRequired for apply; returned by a preview.-
scope stringRequired for preview: inbox | folder | all_mail.-
location stringGmail label ID/full name or Outlook folder path.-
filters objectNarrow the scope: from_address, to_address, subject_contains, query (plain keywords, not provider syntax), received_after / received_before (ISO-8601).-
action stringRequired for preview: label | file | categorize | trash.-
destination stringGmail label ID/full name, Outlook category, or Outlook folder path.
cancel_scheduled_task Sensitive write tasks:write Cancel one scheduled task by its exact identifier.
-
task_idrequired integerID of the task to cancel.-
force booleanCancel even though the task's thread is still waiting on a reply.-
reason stringWhy the task is being cancelled, in one user-facing sentence (e.g.
check_calendar Read calendar:read Check events on queryable calendars (e.g., conference rooms).
-
start_timerequired stringStart of time range.-
end_timerequired stringEnd of time range.-
calendar_ids string[]Specific queryable calendar IDs to check.
complete_todo Write workspace:write Mark a to-do done by its row_id (from list_todos).
-
row_idrequired integerThe to-do's row_id, from list_todos.-
workspace stringThe team workspace to act in, by name (see Workspaces).
connect_integration Read account:read Where the user connects an app to Carly: ``connect_url``, the Carly Integrations page.
-
toolkitrequired string-
auth_scheme stringDeprecated and ignored.
connect_mcp_server Write settings:write Connect an OAuth-enabled public MCP server such as Granola from its HTTPS server URL.
-
server_urlrequired stringThe provider's public HTTPS MCP server URL, for example https://mcp.granola.ai/mcp.
copy_google_doc Write workspace:write Copy a Google Doc template with its formatting into a new working document.
-
document_idrequired string-
drive_account_id integerNative account_id from list_integrations(query='Google Drive').-
titlerequired stringTitle for the new working copy.-
folder_id stringDestination Drive folder ID; omitted keeps the provider's default copy location.
create_availability_poll Write calendar:write Create a group-scheduling tracker for a set of participants and return mutual free slots.
-
titlerequired stringTitle for the internal scheduling tracker.-
datesrequired string[]List of date strings (YYYY-MM-DD) that are candidate days-
daily_start_hour integerEarliest hour of the day (0-23).-
daily_end_hour integerLatest hour of the day (1-24).-
timezone stringIANA timezone string-
participant_emails string[]Other participants to invite.
create_booking_page_tool Write booking_pages:write Create a public booking page others can use to book time on the owner's calendar.
-
payloadrequired objectPOST body for `/api/v1/booking-pages` + the MCP `create_booking_page_tool`.
create_calendar Write calendar:write Create a new calendar in one of the user's connected calendar accounts.
-
namerequired stringName for the new calendar (e.g.-
description stringCalendar description-
timezone stringCalendar timezone (e.g.-
color stringCalendar color.
create_column Write contacts:write Create one typed custom column in the user's CRM.
-
labelrequired stringDisplay name for the column (e.g.-
field_type stringField type: 'text', 'date', 'select', 'textarea', or 'boolean'-
options string[]Options for 'select' type fields (e.g.-
is_filterable booleanWhether this column appears as a filter option
create_data_table Write workspace:write Create a typed data table for non-contact records such as deals, cases, or ledgers.
-
labelrequired stringDisplay label for the table, e.g.-
name stringOptional snake_case table name.-
description stringShort purpose/meaning of this table.-
columns object[]Column specs: [{key, label, field_type, options?, is_filterable?, is_name_field?}].-
rows_file stringOptional fh_ CSV/TSV/JSON handle to import while creating the table.-
key_field stringOptional natural upsert key column, e.g.-
if_exists "error" | "ignore"What to do if a table with this name already exists.
create_drive_folder Write workspace:write Create a Google Drive folder, reusing an existing folder of the same name when present.
-
drive_account_id integerNative account_id from list_integrations(query='Google Drive').-
folder_namerequired stringName of the folder to create.-
parent_folder_id stringParent folder ID.-
parent_folder_name stringParent folder name.-
force_create booleanBy default, creation is blocked when similarly named folders already exist (they are returned in similar_folders so you can reuse one).
create_event Sensitive write calendar:write Create a calendar event with explicit times, attendees, location, recurrence, and conferencing options.
-
summaryrequired string-
start_timerequired stringEvent start time in YYYY-MM-DDTHH:MM format.-
end_timerequired stringEvent end time in YYYY-MM-DDTHH:MM format.-
description string-
location string-
attendees string[]-
calendar_id stringUse 'default' to create on the calendar associated with the sender's email account.-
timezone stringIANA timezone for this event (e.g., 'America/New_York', 'Europe/Paris').-
start_timezone stringIANA timezone for start_time ONLY.-
end_timezone stringIANA timezone for end_time ONLY.-
recurrence string[]Recurrence rule for recurring events in RRULE format (RFC 5545).-
is_video_call booleanSet to True for video calls.-
show_as_free booleanIf True, marks the event as free/transparent so it will not block calendar availability.-
is_all_day booleanSet to True for all-day events (e.g., vacations, holidays, multi-day trips).
create_gmail_draft Write mail:write Create one unsent draft in the user's Gmail Drafts folder for them to review and send.
-
gmail_account_id integerConnected Gmail account ID to use.-
drive_account_id integerConnected Drive account ID to use when attaching Drive files.-
torequired string[]Recipient email addresses.-
subjectrequired stringEmail subject line.-
bodyrequired stringEmail body (plain text).-
cc string[]CC recipients.-
bcc string[]BCC recipients.-
gmail_attachments object[]Legacy — use `files` with the handle_token from list_gmail_attachments instead.-
drive_file_ids string[]Legacy — use `files` with the handle_token from list_drive_files instead.-
files string[]File-handle tokens (fh_...) to attach — the one param for every file: Gmail attachments, Drive files, uploads, saved attachments, run_python outputs.
create_gmail_drafts Write mail:write Create one personalized unsent Gmail draft per recipient, filled from each recipient's fields.
-
gmail_account_id integerConnected Gmail account ID to use.-
recipients object[]List of recipient objects.-
crm_contact_ids integer[]CRM contact ids to draft for (from search_crm _record_ids or query_crm contact_id).-
subjectrequired stringEmail subject line.-
bodyrequired stringEmail body (plain text).-
files string[]File-handle tokens (fh_...) to attach — chat uploads, saved attachments, or run_python outputs.
create_google_doc Write workspace:write Create a Google Doc in Drive, optionally in a named folder and with initial content.
-
drive_account_id integerNative account_id from list_integrations(query='Google Drive').-
titlerequired stringTitle of the Google Doc to create.-
folder_id stringDrive folder ID to create the doc in.-
folder_name stringFolder name to create the doc in.-
content stringOptional initial text content for the document.
create_microsoft_planner_bucket Write tasks:write Create a bucket in an accessible basic Microsoft Planner plan.
-
microsoft_planner_account_id integerConnected Microsoft Planner account id.-
plan_idrequired string-
namerequired string-
order_hint string
create_microsoft_planner_plan Write tasks:write Create a basic Planner plan in a Microsoft 365 group the signed-in user already belongs to.
-
microsoft_planner_account_id integerConnected Microsoft Planner account id.-
titlerequired string-
group_idrequired stringMicrosoft 365 group id.
create_microsoft_planner_task Write tasks:write Create and optionally assign a task in a basic Microsoft Planner plan.
-
microsoft_planner_account_id integerConnected Microsoft Planner account id.-
plan_idrequired string-
titlerequired string-
bucket_id string-
assignee_ids string[]Microsoft Entra user ids to assign.-
start_at stringISO 8601 UTC date/time.-
due_at stringISO 8601 UTC date/time.-
priority integer-
description string
create_microsoft_todo_list Write tasks:write Create a list in the explicitly connected Microsoft To Do account.
-
microsoft_todo_account_id integerConnected Microsoft To Do account id.-
display_namerequired stringName for the new Microsoft To Do list.
create_microsoft_todo_task Write tasks:write Create a Microsoft To Do task with optional dates, reminder, recurrence, and notes.
-
microsoft_todo_account_id integerConnected Microsoft To Do account id.-
task_list_idrequired stringMicrosoft To Do task-list id from list_microsoft_todo_lists.-
titlerequired string-
body string-
importance "low" | "normal" | "high"-
start_at stringLocal ISO date/time in time_zone.-
due_at stringLocal ISO date/time in time_zone.-
reminder_at stringLocal ISO date/time in time_zone.-
time_zone string-
recurrence_pattern object-
recurrence_range object
create_onedrive_folder Sensitive write workspace:write Create a OneDrive folder, reusing an existing folder of the same name when present.
-
onedrive_account_id integerNative account_id from list_integrations(query='OneDrive').-
folder_namerequired stringName of the folder to create.-
parent_folder_name stringParent folder name.-
share_with string[]Optional email addresses to grant Edit access on the folder once it exists.-
force_create booleanBy default, creation is blocked when similarly named folders already exist (they are returned in similar_folders so you can reuse one).
create_outlook_draft Write mail:write Create one unsent draft in the user's Outlook Drafts folder for them to review and send.
-
outlook_mail_account_id integerWhich Outlook Mail account to use (id from connected accounts).-
torequired string[]Recipient email addresses.-
subjectrequired stringEmail subject line.-
bodyrequired stringEmail body (plain text).-
cc string[]CC recipients.-
bcc string[]BCC recipients.-
ses_attachment_ids integer[]Legacy — use `files` with the attachment's fh_ token instead.-
outlook_attachments object[]Legacy — use `files` with the handle_token from list_outlook_attachments instead.-
onedrive_file_ids object[]Legacy — use `files` with the handle_token from list_onedrive_files / upload_to_onedrive instead.-
attachments object[]Raw attachment refs as [{url, filename, content_type?}] for a public download URL.-
files string[]File-handle tokens (fh_...) to attach — the one param for every file: Outlook attachments, OneDrive files, uploads, saved attachments, run_python outputs.
create_outlook_drafts Write mail:write Create one personalized unsent Outlook draft per recipient, filled from each recipient's fields.
-
outlook_mail_account_id integerWhich Outlook Mail account to use (id from connected accounts).-
recipients object[]List of recipient objects.-
crm_contact_ids integer[]CRM contact ids to draft for (from search_crm _record_ids or query_crm contact_id).-
subjectrequired stringEmail subject line.-
bodyrequired stringEmail body (plain text).
create_workflow Sensitive write workflows:write Create a recurring job with fixed steps: a trigger, a step graph, and account bindings.
-
namerequired stringShort user-visible name for the workflow.-
team_id integerOptional company/team scope id.-
graph objectOMIT this when template_id is set — the server instantiates the blueprint's graph directly (preferred: the graph never passes through your context, so it can't…-
trigger_type string'manual', 'cron', 'webhook', 'booking', 'phone', 'composio', 'pipedream', 'calendar_event', 'calendar_reminder', 'email_received', 'http_poll', 'tabular', 'for…-
trigger_spec objectFor cron workflows, pass {'cron': '0 9 * * 1'}.-
timezone stringIANA timezone for cron schedules and ${now.*}.-
run_now booleanWhen true, create a manual run immediately after saving.-
status stringInitial status: active or paused.-
template_id stringPREFERRED creation path: set this to a template/recipe id and OMIT graph — the server instantiates the blueprint itself and adopts its suggested trigger unless…-
template_params objectTemplate parameters.
create_workflow_from_template Sensitive write workflows:write Create a workflow from a vetted server-side Carly template.
-
namerequired stringUser-visible name for the workflow.-
template_idrequired stringExact template id returned by list_workflow_templates.-
template_params objectValues for the template's blanks, as '<node_id>.<field>': value and 'inputs.<key>': value entries — get_workflow_blueprint lists every accepted key under bluep…-
trigger_type stringTrigger type.-
trigger_spec objectAccount bindings or schedule fields required by the selected template trigger.-
timezone stringOptional IANA timezone override.
delete_booking_page_tool Sensitive write booking_pages:write Deactivate a booking page so its link stops accepting new bookings.
-
event_type_idrequired integer
delete_data_rows Sensitive write workspace:write Delete selected rows from one owned data table.
-
tablerequired stringCRM table name.-
filtersrequired objectExact-match filters.
delete_event Sensitive write calendar:write Delete one calendar event by its exact identifier, optionally notifying attendees.
-
event_idrequired string-
calendar_id string-
notify_attendees boolean-
allow_invitation_removal booleanSet true only when the user authorized removing their copy of an event organized by someone else.
delete_memory Sensitive write memory:write Delete one saved memory document by its exact key.
-
keyrequired stringDoc name to delete
delete_microsoft_planner_task Sensitive write tasks:write Permanently delete a Microsoft Planner task using its last known ETag.
-
microsoft_planner_account_id integerConnected Microsoft Planner account id.-
task_idrequired string-
etag stringLast known task ETag; Carly fetches it if omitted.
delete_microsoft_todo_list Sensitive write tasks:write Permanently delete a Microsoft To Do list by provider list id.
-
microsoft_todo_account_id integerConnected Microsoft To Do account id.-
task_list_idrequired stringMicrosoft To Do task-list id from list_microsoft_todo_lists.
delete_microsoft_todo_task Sensitive write tasks:write Permanently delete one Microsoft To Do task by provider ids.
-
microsoft_todo_account_id integerConnected Microsoft To Do account id.-
task_list_idrequired stringMicrosoft To Do task-list id from list_microsoft_todo_lists.-
task_idrequired stringMicrosoft To Do task id from list_microsoft_todo_tasks.
delete_todo Sensitive write workspace:write Remove a to-do entirely by row_id (from list_todos), along with any sub-tasks under it.
-
row_idrequired integerThe to-do's row_id, from list_todos.-
workspace stringThe team workspace to act in, by name (see Workspaces).
describe_workflow_trigger Read workflows:read Inspect the payload a Composio, http_poll, or email_received trigger delivers, so graph steps can reference real ${trigger.*} field paths instead of guessed ones.
-
trigger_type stringTrigger type to inspect: composio, http_poll, or email_received.-
composio_slug stringComposio trigger slug to inspect when trigger_type='composio' (e.g.-
trigger_spec objectTrigger config to inspect when trigger_type='http_poll', e.g.-
include_real_samples booleanIf true, fetch up to sample_limit recent items from the upstream source and shape them as the trigger would deliver.-
sample_limit integerMax real samples to fetch when include_real_samples is true (1-5).-
account_alias stringSelector (alias or ca_* ID) for the connected account the workflow will use.
download_onedrive_file Read workspace:read Download a non-Excel OneDrive file: text inline, binaries as a readable stored attachment.
-
file_idrequired stringOneDrive item id (from list_onedrive_files).-
drive_id stringDrive id the file lives in.-
onedrive_account_id integerNative account_id from list_integrations(query='OneDrive').-
max_inline_bytes integerMax bytes to return inline as text.
draft_mail_reply Write mail:write Create a draft reply on an existing Gmail or Outlook thread without sending it.
-
mailbox stringExact mailbox key from list_mail_accounts, or a connected native email address; never a bare account number.-
message_id stringLegacy message ID; keep its owning mailbox selector.-
message_ref stringPreferred account-bound reference returned by search.-
bodyrequired stringReply body.-
reply_all boolean-
cc string[]Additional Cc recipients.-
bcc string[]Bcc recipients.
edit_google_doc Sensitive write workspace:write Replace exact text in an existing document using its observed revision.
-
document_idrequired string-
drive_account_id integerNative account_id from list_integrations(query='Google Drive').-
revision_idrequired stringRevision returned by the latest read_google_doc.-
tab_idrequired stringExact tab ID returned by read_google_doc.-
replacementsrequired object[]
edit_todo Write workspace:write Change an existing to-do by row_id (from list_todos): retitle it, set/clear its due date, change priority/project/labels/description, or reopen it (status='open').
-
row_idrequired integerThe to-do's row_id, from list_todos.-
title stringNew title.-
due stringNew due date (YYYY-MM-DD), or '' to clear it.-
status stringOne of the list's column keys (from list_todos `statuses`): 'open' reopens, 'done' finishes; a team may have more.-
priority integer1 (urgent) to 4 (none).-
project stringMove to this project, or '' to remove it from one.-
labels string[]Replaces the label set.-
notes stringNew description, or '' to clear it.-
parent_id integerMove under this to-do (a row_id), or 0 to make it top-level again.-
repeat stringRepeat rule ('every monday', 'every 2 weeks', 'every month'), or '' to stop repeating.-
due_time stringTime of day it is due, 24-hour 'HH:MM', or '' for any time.-
assignee stringIn a team workspace: the teammate it is for, by name or email, or '' to unassign.-
workspace stringThe team workspace to act in, by name (see Workspaces).
find_event Read calendar:read Search the user's selected calendars for events matching text and time filters.
-
queryrequired string-
start_time string-
end_time string-
max_results integer-
calendar_id stringIf omitted, searches ALL selected calendars across the user's connected accounts (returns a deduplicated union).-
timezone string
find_files Read workspace:read Find the user's stored files by name, label, or tag and return ownership-scoped handles.
-
query stringCase-insensitive substring matched against a file's name, label, or tags — e.g.-
tag stringOptional exact tag to filter by (e.g.-
limit integerMax files to return (capped at 25).
find_free Read calendar:read Find available time slots across the user's selected calendars in a requested window.
-
start_time stringStart of time window.-
end_time stringEnd of time window.-
timezone string-
max_results integer-
min_slot_minutes integer
flag_mail_message Write mail:write Flag or unflag one message — a star in Gmail, a follow-up flag in Outlook.
-
mailbox stringExact mailbox key from list_mail_accounts, or a connected native email address; never a bare account number.-
message_id stringLegacy message ID; keep its owning mailbox selector.-
message_ref stringPreferred account-bound reference returned by search.-
flagged booleanTrue to flag/star the message, false to clear it.
get_booking Read bookings:read Get one booking by uid: who booked, when, on which booking page, and its current status.
-
uidrequired string
get_booking_page Read booking_pages:read Get one booking page's full configuration by id: duration, availability windows, questions asked of attendees, and its public link.
-
event_type_idrequired integer
get_contact_emails Read contacts:read Return email addresses for an explicit set of owned CRM record ids.
-
contact_email stringEmail address of the contact to look up (single-contact form).-
contact_emails string[]Batch form — look up MANY contacts in ONE call, e.g.-
limit integerMax threads to return per contact (default 5)
get_crm_schema Read contacts:read List the user's CRM columns and their field types.
-
include_distributions booleanWhether to include value distributions for each field (counts of each distinct value).
get_microsoft_planner_plan Read tasks:read Read a basic Planner plan and its buckets/tasks.
-
microsoft_planner_account_id integerConnected Microsoft Planner account id.-
plan_idrequired string-
include_tasks boolean-
include_buckets boolean-
limit integer
get_user_preferences Read settings:read Read the user's current Carly preferences document.
No inputs.
get_workflow Read workflows:read Get one owned workflow's current configuration and recent run summaries.
-
workflow_idrequired integerID of the workflow to inspect.-
compact booleanWhen true (default), tool.run_python / tool.run_calendar_code source bodies in `graph` are replaced by a {lines, sha256} stub — the wiring, ids, and every othe…
get_workflow_blueprint Read workflows:read Get one vetted workflow template and its required account bindings or parameters.
-
template_id stringTemplate id returned by list_workflow_templates.-
config objectONLY for parameterized recipe templates (rows with parameterized=true).
get_workflow_runs Read workflows:read List recent runs for one owned workflow, with optional step details.
-
workflow_idrequired integerID of the workflow whose recent runs should be returned.-
limit integerMaximum number of recent runs to return.-
include_steps booleanDefault false: returns run-level status, nodes_visited, terminal_node_id, and on failure failed_node_id + failed_step_error_message — enough to triage health w…-
include_raw booleanOnly used with include_steps=true.
grep_memory Read memory:read Search or list the user's saved Carly memory documents by text pattern or date range.
-
pattern stringText to search for (case-insensitive; matches doc content and key).-
start_date stringList/search docs on/after this date (YYYY-MM-DD).-
end_date stringList/search docs on/before this date (YYYY-MM-DD).-
limit integerMax docs to return.
label_mail_message Write mail:write Apply one Gmail label or Outlook category to a message, optionally creating it.
-
mailbox stringExact mailbox key from list_mail_accounts, or a connected native email address; never a bare account number.-
message_id stringLegacy message ID; keep its owning mailbox selector.-
message_ref stringPreferred account-bound reference returned by search.-
labelrequired stringGmail label name or Outlook category to apply.-
create_missing booleanCreate the label/category if it does not exist.
list_booking_pages Read booking_pages:read List personal and authorized team booking pages with their titles, durations, links, and whether each is currently accepting bookings.
No inputs.
list_bookings Read bookings:read List meetings people have booked on the account's booking pages, filterable by status, booking page, and time window.
-
status string-
event_type_id integer-
start_time string-
end_time string-
limit integer
list_calendar_names Read calendar:read List the user's connected calendar accounts and calendars with their exact identifiers.
-
include_unselected booleanIf True, also include calendars the user has connected but not enabled for Carly (selected=False).
list_calendars Read booking_pages:read List connected calendars as `provider::account_id::calendar_id` keys.
No inputs.
list_data_tables Read workspace:read List the user's data tables with compact schemas and row counts, without loading rows.
-
include_contacts booleanInclude the physical contacts table in the schema listing.
list_drive_files Read workspace:read List or search files and folders in a connected Google Drive account.
-
drive_account_id integerNative account_id from list_integrations(query='Google Drive').-
query stringOptional filename search term (uses Drive name contains).-
folder_id stringDrive folder ID to search in.-
folder_name stringFolder name to search in.-
limit integerMax files to return (1-100).
list_event_types Read booking_pages:read List the API key owner's own event types.
-
username string
list_events Read calendar:read List events from the user's selected calendars in a requested time range.
-
start_time stringStart of date range.-
end_time stringEnd of date range.-
max_results integer-
query stringText search query to filter events.-
output_format "compact" | "full"Default 'compact' (id, title, start/end, time_label, location).-
include_free_events booleanInclude Free events for duplicate checks or event management.-
event_id stringExact provider event id from a prior compact list_events result.-
calendar_id stringOptional calendar filter.
list_integrations Read account:read List apps Carly can connect and whether the current user connected them.
-
query string-
connected_only boolean
list_mail_accounts Read mail:read List the user's connected Gmail and Outlook mailboxes and their exact mailbox keys.
-
native_only booleanTrue to list only native Gmail/Outlook mailboxes supported by bulk_mail_action.
list_mail_attachments Read mail:read List the attachments on one selected Gmail or Outlook message, each with an fh_ handle_token.
-
mailbox stringExact mailbox key from list_mail_accounts, or a connected native email address; never a bare account number.-
message_id stringLegacy message ID; keep its owning mailbox selector.-
message_ref stringPreferred account-bound reference returned by search.
list_mail_folders Read mail:read List the folders in one selected mailbox, with the exact names move_mail_message accepts.
-
mailboxrequired stringExact mailbox value returned by list_mail_accounts, such as 'gmail:22', 'outlook:33', 'gmail:ca_connection', or 'zoho:ca_connection:provider_account_id'.
list_mail_labels Read mail:read List the Gmail labels or Outlook categories available in one selected mailbox.
-
mailboxrequired stringExact mailbox value returned by list_mail_accounts, such as 'gmail:22', 'outlook:33', 'gmail:ca_connection', or 'zoho:ca_connection:provider_account_id'.
list_mcp_connections Read account:read List the user's connected MCP servers, their status, and the number of available tools.
-
include_inactive booleanInclude connections that are still authorizing, need reconnection, or failed.
list_microsoft_planner_plans Read tasks:read List basic Microsoft Planner plans shared with the connected work/school account.
-
microsoft_planner_account_id integerConnected Microsoft Planner account id.-
limit integer
list_microsoft_todo_lists Read tasks:read List Microsoft To Do lists.
-
microsoft_todo_account_id integerConnected Microsoft To Do account id.-
limit integer
list_microsoft_todo_tasks Read tasks:read List tasks in one Microsoft To Do list, returning Microsoft provider ids.
-
microsoft_todo_account_id integerConnected Microsoft To Do account id.-
task_list_idrequired stringMicrosoft To Do task-list id from list_microsoft_todo_lists.-
status "all" | "open" | "completed"-
limit integer
list_onedrive_files Read workspace:read List or search files and folders in a connected OneDrive account.
-
onedrive_account_id integerNative account_id from list_integrations(query='OneDrive').-
query stringSearch term to filter files by name.-
folder_id stringOneDrive item id of the folder to search in.-
folder_name stringFolder path under root, e.g.-
limit integerMax files to return (1-100).
list_scheduled_tasks Read tasks:read List active scheduled agent tasks, optionally including completed and cancelled history.
-
include_history booleanSet to true when the user asks about past tasks — completed one-offs, tasks the user cancelled, or failed tasks — e.g.
list_schedules Read booking_pages:read List personal and editable team working-hours schedules: each one's weekly hours, date overrides, timezone, whether it is the default, and which booking pages use it.
No inputs.
list_skills Read skills:read List the user's saved skills, whether each is prose or code, and the arguments it takes.
-
include_disabled booleanAlso list skills the user has switched off.
list_slots Read booking_pages:read List available slots for an owned event type.
-
start_timerequired string-
end_timerequired string-
username string-
event_type_slug string-
event_type_id integer-
duration integer
list_todos Read workspace:read List the user's to-dos (open by default; pass status='all' for everything, or project= to scope to one list).
-
status string'open' (default: every column that is not done), 'all', or one of the list's column keys (returned as `statuses`).-
project stringOnly this project's items.-
assignee stringIn a team workspace: only this teammate's, by name or email.-
workspace stringThe team workspace to act in, by name (see Workspaces).
list_workflow_templates Read workflows:read Browse Carly's vetted workflow template library by category, tag, or text query.
-
query stringWhat the workflow should DO, in your own words — e.g.
list_workflow_trigger_calendars Read workflows:read List exact connected-calendar keys accepted by calendar-triggered workflow templates.
No inputs.
list_workflow_trigger_forms Read workflows:read List the user's Carly forms with the numeric form_id a form_submitted workflow trigger needs, plus each form's field keys.
No inputs.
list_workflow_trigger_mailboxes Read workflows:read List exact connected-mailbox keys accepted by email-triggered workflow templates.
No inputs.
list_workflows Read workflows:read List the user's workflows and compact recent health information.
-
include_archived booleanSet true to include archived workflows.
load_skill Read skills:read Read one saved skill's full instructions, argument schema, and last run error.
-
skill_namerequired stringThe name of the skill to load instructions for
lookup_person Read contacts:read Resolve a person or relationship from the user's contacts to an email address.
-
queryrequired stringName, relationship, or alias to look up (e.g., 'dad', 'John', 'my dentist')
manage_crm_records Sensitive write contacts:write Query, create, update, upsert, link, unlink, annotate, aggregate, or delete records across People, Companies, Deals, Notes, and custom CRM objects.
-
actionrequired stringOne of: list, get, create, update, upsert, delete, link, unlink, add_note, kanban, aggregate-
object string'people', 'companies', 'deals', 'meetings', 'notes', a custom object name, or id.-
record_id integerget/update/delete/link: the record id (a person's contact id is their record id)-
email stringPeople shortcut: find/create the person by email instead of record_id-
values objectcreate/update: {attribute key: value}.-
links objectcreate/update/link: {relation attribute key: [record ids or emails]} e.g.-
match stringupsert: the ONE attribute key that identifies an existing record, e.g.-
search stringlist: word-based search; 3+ words allow one missing word-
filters objectlist: {attribute key: value} exact filters (stage by label)-
conditions object[]list/kanban/aggregate: [{key, op, value}] AND-ed together — the operator filters 'over $10k' or 'contacted this week' need.-
sort stringlist: attribute key or last_interaction_at / updated_at / created_at / name-
order stringlist: asc | desc-
limit integerlist: max records (≤200)-
offset integerlist: pagination offset-
group_by stringaggregate: attribute key to group by (e.g.-
sum_key stringaggregate: numeric/currency attribute to sum (e.g.-
title stringadd_note: title-
body stringadd_note: the note text-
on object[]add_note: record ids or people emails the note is about-
workspace stringThe team workspace to act in, by name (see Workspaces).
manage_crm_schema Sensitive write contacts:write Configure People, Companies, Deals, Notes, and custom CRM objects: list or create objects; add, edit, hide, reorder, or delete typed fields; configure deal stages and select options; and create, update, list, or delete saved table and boar…
-
actionrequired stringOne of: list_objects, create_object, add_attribute, update_attribute, delete_attribute, hide_attributes, show_attributes, reorder_attributes, set_options, set_…-
object stringObject to act on: 'people', 'companies', 'deals', 'meetings', 'notes', a custom object's name, or its id.-
label stringcreate_object: plural label (e.g.-
singular_label stringcreate_object: singular label (e.g.-
attribute stringAttribute key, label or id for update/delete/set_options/set_stages-
attributes object[]create_object: list of attribute specs [{label, field_type, options?, is_name_field?}]; hide/show/reorder_attributes: list of attribute keys (reorder = the ful…-
field_type stringadd_attribute: text, textarea, number, currency, date, datetime, select, multiselect, boolean, status, email, phone, url, relation-
options string[]select/multiselect options (add_attribute or set_options)-
stages object[]status stages for set_stages / add_attribute(status): [{label, kind: open|won|lost, color?}] — the full ordered list; existing stages are matched by label (or…-
target_object stringrelation attributes: which object the relation points to ('people', 'companies', 'deals', custom name)-
multiple booleanrelation attributes: can a record link to many targets-
is_filterable booleanShow this attribute as a filter in the table-
is_hidden booleanupdate_attribute: hide (true) / show (false) in the table-
delete_data booleandelete_attribute: also remove the stored values from every record-
view stringupdate_view/delete_view: the view's name or id-
name stringcreate_view/update_view: the view name (e.g.-
filters object[]create_view/update_view: [{key, op, value}] AND-ed.-
sort objectcreate_view/update_view: {key, order: asc|desc}-
kind stringcreate_view/update_view: 'table' or 'board' (board needs a status attribute)
move_event Sensitive write calendar:write Move one event from its current calendar to a selected destination calendar.
-
event_idrequired stringID of the event to move-
source_calendar_idrequired stringID or name of the calendar the event is currently on-
destination_calendar_idrequired stringID or name of the calendar to move the event to
move_mail_message Write mail:write Move one Gmail or Outlook message to an explicit label or folder.
-
mailbox stringExact mailbox key from list_mail_accounts, or a connected native email address; never a bare account number.-
message_id stringLegacy message ID; keep its owning mailbox selector.-
message_ref stringPreferred account-bound reference returned by search.-
destinationrequired stringExisting Gmail label or Outlook folder name/path (list_mail_folders has the exact names).-
create_missing booleanCreate the destination when supported if it does not exist.-
archive booleanGmail only: also remove the message from the inbox after applying the destination label.
pause_workflow Write workflows:write Pause one owned workflow so future triggers stop firing.
-
workflow_idrequired integerExact workflow id returned by list_workflows.
preview_workflow Read workflows:read Preview a saved workflow or template graph without saving or performing external writes.
-
workflow_id integerOptional ID of a saved workflow to preview.-
graph objectWorkflow graph to preview.-
trigger_type stringTrigger type for the preview: manual, cron, webhook, booking, phone, composio, pipedream, calendar_event, calendar_reminder, email_received, http_poll, tabular…-
trigger_spec objectTrigger config used to build the preview payload, e.g.-
timezone stringIANA timezone used to render ${now.*} for unsaved graph previews.-
sample_event objectOptional trigger payload; used for manual/cron (ignored for data triggers).-
sample_index integerFor composio previews, which fetched sample event to use when sample_event is not provided.
query_availability_poll Read calendar:read Read one tracker's status, mutually available slots, and per-participant responses.
-
session_tokenrequired stringThe public token of the scheduling session to query
query_crm Read contacts:read Query CRM rows with explicit structured filters, sorting, and pagination.
-
sqlrequired stringA single read-only SQL query (SQLite dialect) over the user's CRM.-
export_filename stringOptional CSV filename (e.g.
query_data Read workspace:read Run one read-only SQL SELECT over the user's own named data tables in a sandbox.
-
sqlrequired stringA single read-only SQLite SELECT/WITH query over the selected tables.-
tables string[]Agent-created data table names to load into the query sandbox.-
include_contacts booleanAlso load the physical contacts table when needed.-
export_filename stringOptional CSV filename (e.g.
read_attachment Read workspace:read Read text from an ownership-checked stored file or Gmail/Outlook message attachment.
-
attachment_id integer | stringInteger SesAttachment.id.-
file_handle stringDurable fh_ file token returned by tools such as run_python.-
message_id stringOutlook or Gmail message ID containing the attachment.-
email_attachment_id stringOptional — target a specific attachment by ID (from list_outlook_attachments / list_gmail_attachments).-
provider stringOptional mail provider hint ('gmail' or 'outlook') for workflow-triggered messages.-
account_id integer | stringOptional provider-neutral mail account id for workflow-triggered messages.-
mailbox_key stringMailbox identifier as returned by list_mail_accounts / list_mail_attachments, e.g.-
outlook_mail_account_id integerWhich Outlook Mail account to use.-
gmail_account_id integerWhich Gmail account to use.-
page_range stringFor PDFs: a page range like '1-10', '3', or '5-end'.-
max_chars integerOptional cap on returned characters.-
search stringCase-insensitive term search within this one file (not a mailbox search).
read_google_doc Read workspace:read Read document text, tabs and revision before editing.
-
document_idrequired string-
drive_account_id integerNative account_id from list_integrations(query='Google Drive').
read_knowledge_file Read workspace:read Read one knowledge document sequentially by chunk range, for paging or search context.
-
filerequired stringThe document's numeric id (preferred) or title, as listed in the knowledge base catalog.-
start_chunk integerChunk index to start reading from (0-based).-
max_chunks integerHow many consecutive chunks to read (capped at 20).
read_mail_message Read mail:read Read one message from a selected Gmail or Outlook mailbox by exact message id.
-
mailbox stringExact mailbox key from list_mail_accounts, or a connected native email address; never a bare account number.-
message_id stringLegacy message ID; keep its owning mailbox selector.-
message_ref stringPreferred account-bound reference returned by search.-
folder_id stringRequired for Zoho Mail: the folder_id returned by search_mail for this message.-
offset integerBody character offset for continuing a truncated read.-
limit integerBody characters to return.
read_memory Read memory:read Read one saved Carly memory document by its exact key.
-
keyrequired stringDoc name to read
read_onedrive_workbook Read workspace:read List the worksheets in a OneDrive Excel file, or read one worksheet's rows.
-
file_idrequired stringOneDrive item id of the .xlsx workbook (from list_onedrive_files).-
sheet_name stringWorksheet/tab name to read.-
range stringOptional A1-style range, e.g.-
max_rows integerMax rows to return (1-1000).-
drive_id stringDrive id the file lives in.-
onedrive_account_id integerNative account_id from list_integrations(query='OneDrive').
resume_workflow Sensitive write workflows:write Resume one paused owned workflow so its configured triggers can fire.
-
workflow_idrequired integerExact workflow id returned by list_workflows.
run_calendar_code Sensitive write calendar:write Run a sandboxed snippet against the user's calendars for bulk or conditional edits.
-
coderequired stringPython code to execute against the user's calendar accounts.
run_pandas Read workspace:read Analyze the user's tabular data with pandas in Carly's sandbox.
-
attachment_id integerInteger SesAttachment.id for a spreadsheet.-
file_handle stringA file-handle token (`fh_...`) for the spreadsheet or JSON data to query — works for any kind: SES attachments, Drive, OneDrive, Gmail attachments, Outlook att…-
expressionrequired stringPython code to run against the loaded DataFrame.-
sheet_name stringFor Excel files with multiple sheets, the sheet name to load.
run_python Sensitive write workspace:write Run a Python snippet in Carly's sandbox with the user's connected clients bound.
-
coderequired stringPython code to execute.-
args objectOptional dict bound as `args` inside the sandbox.-
input_attachment_ids integer[]Legacy param — prefer `files` for new code.-
files string[]Optional file-handle tokens (`fh_...`) to stage into `input_dir/` inside the sandbox.-
workspace stringOptional durable working-set name, shared with run_code_interpreter.-
publish_to_composio booleanWhen True, every output file is also pushed into Composio's S3 storage.
run_skill Sensitive write skills:write Run one already-saved skill by name with explicit arguments.
-
skill_namerequired stringThe name of the skill to execute.-
args objectArguments dict for the skill.-
files object[]Optional list of file-handle tokens (`fh_...`) to stage into the skill's `input_dir/`.-
input_attachment_ids integer[]Compatibility path: inbound SES attachment IDs to stage into `input_dir/` (runtime='python' only).-
ses_attachment_ids integer[]Alias for input_attachment_ids (merged with it).
run_workflow_now Sensitive write workflows:write Run one owned workflow immediately with its real side effects, outside its schedule.
-
input_data objectManual workflows only: values for ${input.*}, separate from trigger data.-
workflow_idrequired integerID of the workflow to run immediately.-
sample_event objectOptional trigger payload override for non-manual workflows.-
confirmed_message_id stringemail_received only.-
mailbox_key stringemail_received only.-
folder_id stringemail_received only.
save_memory Sensitive write memory:write Create or replace one named memory document for future conversations.
-
keyrequired stringDoc name (e.g.-
contentrequired stringFull doc content (markdown).
save_skill Write skills:write Save a sandbox Python snippet as a named reusable skill.
-
skill_namerequired stringName of the skill.-
runtimerequired stringExecution runtime.-
coderequired stringPython code to store as the skill body.-
tool_schema objectJSON-Schema-ish dict describing the args this skill expects.-
descriptionrequired stringOne-line description used for skill matching (same field as prose skills).-
instructions stringMarkdown playbook explaining when to use the skill and what the args mean.-
verification_notesrequired stringHow you verified this code.
schedule_task Sensitive write tasks:write Schedule a one-time, cron, or interval agent task with an explicit prompt and delivery settings.
-
namerequired stringShort name for the task (e.g.-
promptrequired stringWhat the agent should do when this task runs.-
schedule_typerequired string'once', 'cron', or 'interval'.-
schedule_spec objectSchedule details.-
delay_minutes integerFor 'once' tasks: run this many minutes from now.-
timezone stringIANA timezone for the schedule.-
delivery_channel stringHow the task's output reaches the user when the fire-time run doesn't send anything itself: 'email' (default) or 'sms' (the final reply is texted to the user's…-
status stringInitial status: active or paused.
search_crm Read contacts:read Search the user's CRM records by names, emails, companies, and text fields.
-
query stringFree-text search across contact name, email, notes, and all custom CRM data fields.-
filters objectDict of field_key → value to filter by specific fields (e.g.-
sort_by stringField to sort by: 'interaction_count' (most emailed), 'last_interaction_at' (most recent), or 'updated_at' (default).-
limit integerMax records to return inline (capped at 50).
search_knowledge_base Read workspace:read Search the user's uploaded knowledge documents by meaning and keyword.
-
queryrequired stringNatural-language question or keywords to search the knowledge base for — e.g.-
file stringOptional: restrict the search to one document.-
max_results integerMax passages to return (capped at 12).
search_mail Read mail:read Search one selected Gmail or Outlook mailbox with provider-neutral structured filters.
-
mailboxrequired stringExact mailbox value returned by list_mail_accounts, such as 'gmail:22', 'outlook:33', 'gmail:ca_connection', or 'zoho:ca_connection:provider_account_id'.-
query stringPlain-text mailbox search query.-
from_address stringOnly messages from this email address.-
to_address stringOnly messages sent to this email address.-
subject stringSubject text filter.-
within_days integerOnly messages from the last N days (1-36500).-
inbox_only booleanRestrict results to the inbox.-
unread_only booleanReturn only unread messages.-
has_attachment booleanFilter by whether a message has attachments.-
max_results integerMax messages to return (1-250).-
page_token stringPagination token returned by a prior identical search.-
include_body booleanInclude each message's FULL body in the results.
send_email Sensitive write mail:write Send a new email from Carly to explicit recipients, with optional attachments and idempotency key.
-
to object[]Recipient objects.-
crm_contact_ids integer[]CRM contact ids to send to (from search_crm _record_ids or query_crm contact_id).-
subject stringEmail subject — used for brand-new threads.-
bodyrequired stringEmail body.-
cc string[]CC recipients.-
send_individually booleanWhen true, sends a separate email per recipient (each rendered with that recipient's own fields) — use for outreach, prospecting, or any case where recipients…-
start_new_thread booleanWhen false: the reply stays in the current thread and recipients see its subject.-
allow_new_recipients_in_thread booleanWhen false, sends to external recipients not already on the active thread are blocked.-
allow_merge_fallbacks booleanWhen false, multi-recipient individualized external sends fail if any referenced merge var is missing, even if the placeholder has a fallback like {{first_name…-
on_behalf_of stringEmail address of the user on whose behalf this email is being sent.-
attachments object[]File attachments.-
ses_attachment_ids integer[]Legacy — use `files` with the attachment's fh_ token instead.-
outlook_attachments object[]Legacy — use `files` with the handle_token from list_outlook_attachments instead.-
onedrive_file_ids object[]Legacy — use `files` with the handle_token from list_onedrive_files instead.-
files string[]File-handle tokens (`fh_...`) to attach — the one param for every file: inbound attachments, Gmail/Outlook attachments, OneDrive/Drive files, uploads, and run_…
send_gmail Sensitive write mail:write Send a new email from the user's own Gmail account, so it appears sent by them.
-
gmail_account_id integerConnected Gmail account ID to use.-
drive_account_id integerConnected Drive account ID to use when attaching Drive files.-
to object[]Recipient objects.-
crm_contact_ids integer[]CRM contact ids to send to (from search_crm _record_ids or query_crm contact_id).-
subjectrequired stringEmail subject line.-
bodyrequired stringEmail body (plain text).-
cc string[]CC recipients.-
bcc string[]BCC recipients.-
send_individually booleanWhen true, sends a separate email per recipient (each rendered with that recipient's own fields) — use for outreach, prospecting, or any case where recipients…-
gmail_attachments object[]Legacy — use `files` with the handle_token from list_gmail_attachments instead.-
drive_file_ids string[]Legacy — use `files` with the handle_token from list_drive_files instead.-
files string[]File-handle tokens (fh_...) to attach — the one param for every file: Gmail attachments, Drive files, uploads, saved attachments, run_python outputs.
send_mail_reply Sensitive write mail:write Send a reply on an existing Gmail or Outlook thread.
-
mailbox stringExact mailbox key from list_mail_accounts, or a connected native email address; never a bare account number.-
message_id stringLegacy message ID; keep its owning mailbox selector.-
message_ref stringPreferred account-bound reference returned by search.-
bodyrequired stringReply body.-
reply_all boolean-
cc string[]Additional Cc recipients.-
bcc string[]Bcc recipients.
send_outlook_mail Sensitive write mail:write Send a new email from the user's own Outlook account, so it appears sent by them.
-
outlook_mail_account_id integerWhich Outlook Mail account to use (id from connected accounts).-
to object[]Recipient objects.-
crm_contact_ids integer[]CRM contact ids to send to (from search_crm _record_ids or query_crm contact_id).-
subjectrequired stringEmail subject line.-
bodyrequired stringEmail body (plain text).-
cc string[]CC recipients.-
bcc string[]BCC recipients.-
send_individually booleanWhen true, sends a separate email per recipient (each rendered with that recipient's own fields) — use for outreach, prospecting, or any case where recipients…-
ses_attachment_ids integer[]Legacy — use `files` with the attachment's fh_ token instead.-
outlook_attachments object[]Legacy — use `files` with the handle_token from list_outlook_attachments instead.-
onedrive_file_ids object[]Legacy — use `files` with the handle_token from list_onedrive_files / upload_to_onedrive instead.-
attachments object[]Raw attachment refs as [{url, filename, content_type?}] for a public download URL.-
files string[]File-handle tokens (fh_...) to attach — the one param for every file: Outlook attachments, OneDrive files, uploads, saved attachments, run_python outputs.
test_workflow Read workflows:read Execute safe read steps for one workflow while replacing every external write with a preview.
-
workflow_id integerOptional saved workflow id to test.-
graph objectUnsaved workflow graph to test.-
trigger_type stringTrigger type for unsaved graph tests: manual, cron, webhook, booking, phone, composio, pipedream, calendar_event, calendar_reminder, email_received, http_poll,…-
trigger_spec objectTrigger config for unsaved graph tests.-
timezone stringIANA timezone used to render ${now.*} for unsaved graph tests.-
sample_event objectOptional trigger payload; accepted for manual/cron only (REFUSED for data triggers — use sample_message_id or sample_run_id to test those against real data).-
sample_message_id stringProvider id of a REAL message in the watched mailbox to test on (email_received triggers).-
sample_run_id integerA past run id of this workflow (see get_workflow_runs) whose stored trigger payload and run inputs are replayed in their original namespaces without repeating…-
sample_index integerFetched sample index to use when sample_event is omitted.-
up_to_node_id stringOptional node id.-
include_steps booleanDefault false: returns the dry-run verdict + node-by-node effect_chain + summary (status counts, failed steps with errors, and write previews showing exactly w…
trash_mail_message Sensitive write mail:write Move one message to Gmail Trash or Outlook Deleted Items; reversible from the provider's UI.
-
mailbox stringExact mailbox key from list_mail_accounts, or a connected native email address; never a bare account number.-
message_id stringLegacy message ID; keep its owning mailbox selector.-
message_ref stringPreferred account-bound reference returned by search.
unlabel_mail_message Write mail:write Remove one Gmail label or Outlook category from a message.
-
mailbox stringExact mailbox key from list_mail_accounts, or a connected native email address; never a bare account number.-
message_id stringLegacy message ID; keep its owning mailbox selector.-
message_ref stringPreferred account-bound reference returned by search.-
labelrequired stringGmail label name or Outlook category to remove.
unsubscribe_from_sender Sensitive write mail:write Trigger a sender's RFC 8058 one-click List-Unsubscribe link from one of their messages.
-
mailbox stringExact mailbox key from list_mail_accounts, or a connected native email address; never a bare account number.-
message_id stringLegacy message ID; keep its owning mailbox selector.-
message_ref stringPreferred account-bound reference returned by search.
update_availability_poll Write calendar:write Edit an existing tracker's dates, hours, timezone, title, or participants in place.
-
session_tokenrequired stringThe public token of the scheduling session to update-
title stringNew tracker title-
dates string[]Replacement list of candidate days (YYYY-MM-DD).-
daily_start_hour integerNew earliest hour of the day (0-23)-
daily_end_hour integerNew latest hour of the day (1-24)-
timezone stringNew IANA timezone string-
add_participant_emails string[]Participant emails to add (skipped if already present)-
remove_participant_emails string[]Participant emails to remove from the tracker
update_booking_page_tool Write booking_pages:write Change a public booking page's title, duration, questions, limits, or which schedule it books against (`schedule_id`; null = the owner's default).
-
event_type_idrequired integer-
payloadrequired objectPATCH body for `/api/v1/booking-pages/<id>` + the MCP `update_booking_page_tool`.
update_calendar Write calendar:write Update the name, description, or settings of an existing calendar.
-
calendar_idrequired stringID or exact name of the calendar to update-
name stringNew calendar name-
description stringNew calendar description-
color stringNew calendar color (see create_calendar for valid values)
update_contact Write contacts:write Add or update facts and structured fields for one or more contacts.
-
email stringEmail address of the contact (single-contact form).-
update_request stringWhat to add/update about this contact in natural language, e.g.-
updates object[]Batch form — update MANY contacts in ONE call, e.g.
update_crm Write contacts:write Update explicit fields on selected owned CRM records.
-
contact_email stringEmail of the contact.-
record_id integerID of an existing contact to update.-
fields objectKey-value pairs of CRM fields to set.-
activity objectOptional timeline entry to APPEND to the contact's activity log: {'type': 'email_sent'|'email_received'|'booking_created'|'booking_cancelled'|'booking_reschedu…
update_data_rows Write workspace:write Update explicit fields on selected rows of one owned data table.
-
tablerequired stringCRM table name.-
filtersrequired objectExact-match filters.-
set_fieldsrequired objectFields to set on matching rows.
update_event Sensitive write calendar:write Update one owned calendar event by its exact identifier; omitted fields remain unchanged.
-
event_idrequired string-
summary string-
start_time stringNew start time (YYYY-MM-DDTHH:MM).-
end_time stringNew end time (YYYY-MM-DDTHH:MM).-
description stringEvent description/body text.-
description_mode stringHow to apply the description field.-
location string-
attendees string[]-
calendar_id string-
timezone stringIANA timezone for this update (e.g., 'Asia/Tokyo').-
start_timezone stringIANA timezone for start_time ONLY.-
end_timezone stringIANA timezone for end_time ONLY.-
same_day_only boolean-
preserve_duration boolean-
reason string-
user_id string-
is_video_call booleanSet to True for video calls.-
show_as_free booleanIf provided, updates whether the event should appear as free (transparent) or busy (opaque).-
color_id stringGoogle Calendar event color, as the colorId string '1'-'11': 1=lavender, 2=sage, 3=grape, 4=tangerine, 5=banana, 6=flamingo, 7=peacock, 8=graphite, 9=blueberry…-
update_all_instances boolean
update_microsoft_planner_task Write tasks:write Update, assign, move between buckets, or complete a Planner task using safe ETag concurrency.
-
microsoft_planner_account_id integerConnected Microsoft Planner account id.-
task_idrequired string-
etag stringLast known task ETag; Carly fetches it if omitted.-
title string-
bucket_id string-
assignee_ids string[]Complete replacement assignee list.-
start_at string-
due_at string-
priority integer-
percent_complete integer-
description string
update_microsoft_todo_task Write tasks:write Update, complete, or reopen a Microsoft To Do task in place using its provider ids.
-
microsoft_todo_account_id integerConnected Microsoft To Do account id.-
task_list_idrequired stringMicrosoft To Do task-list id from list_microsoft_todo_lists.-
task_idrequired stringMicrosoft To Do task id from list_microsoft_todo_tasks.-
title string-
body string-
importance "low" | "normal" | "high"-
status "notStarted" | "inProgress" | "completed" | "waitingOnOthers" | "deferred"-
start_at string-
due_at string-
reminder_at string-
time_zone string-
recurrence_pattern object-
recurrence_range object-
clear_start boolean-
clear_due boolean-
clear_reminder boolean
update_participant_availability Write calendar:write Record one participant's available or unavailable times on an existing tracker.
-
session_tokenrequired stringThe public token of the scheduling session-
participant_emailrequired stringEmail of the participant to update-
participant_name stringDisplay name for the participant-
available_ranges object[]List of available time ranges, each with 'start' and 'end' in ISO 8601 format-
unavailable_ranges object[]Optional list of unavailable time ranges, each with 'start' and 'end' in ISO 8601 format-
timezone stringIANA timezone for the provided ranges.
update_schedule Write booking_pages:write Change a personal or authorized team schedule: its name, timezone, weekly hours (`availability`), or date overrides.
-
schedule_idrequired integer-
payloadrequired objectPATCH body for `/api/schedules/<id>`.
update_scheduled_task Sensitive write tasks:write Update the prompt, name, schedule, timezone, or status of one scheduled task.
-
task_idrequired integerID of the task to update.-
prompt stringNew prompt to replace the task's stored instructions.-
name stringNew display name for the task.-
schedule_spec objectNew schedule details (same shape as schedule_task).-
timezone stringNew IANA timezone for the schedule (e.g.-
delivery_channel stringSwitch how the task's output is delivered: 'email' or 'sms' (text the user's registered phone).
update_skill Write skills:write Replace one saved skill's instructions with a complete new version.
-
skill_namerequired stringThe name of the skill to update-
new_instructionsrequired stringThe complete new instructions (replaces the old content entirely)-
new_description stringOptional new one-line description.
update_user_preferences Write settings:write Apply one explicit natural-language change to the user's Carly preferences.
-
update_requestrequired stringNatural language description of what preference to add, update, or remove
update_workflow Sensitive write workflows:write Update one owned workflow's name, trigger, schedule, timezone, status, or whole graph.
-
workflow_idrequired integerID of the workflow to update.-
name stringNew workflow name.-
graph objectThe whole new graph, not a patch.-
trigger_type stringmanual, cron, webhook, booking, phone, composio, pipedream, calendar_event, calendar_reminder, email_received, http_poll, tabular, form_submitted or crm_record.-
trigger_spec objectOmit unless rescheduling: passing it replaces the live cron/trigger.-
timezone stringIANA timezone.-
confirm_trigger_change booleanConfirm a deliberate replacement of an external trigger type.-
status stringOptional new status: active or paused.-
settings object{key: value} for the graph's `inputs` (the user's 'Set up this workflow' fields), no graph needed.
update_workflow_step Sensitive write workflows:write Edit, insert, or remove one step of an owned workflow's graph without rewriting the rest.
-
workflow_idrequired integerID of the workflow whose step you want to patch.-
node_idrequired stringID of the node inside the active version's graph to patch.-
code stringNew source for a tool.run_python node: it reads rendered placeholders as `args` and assigns a `result` dict.-
args objectKeys merged into a tool.run_python or tool.run_skill node's input.args (replace_args=true overwrites the dict, e.g.-
instructions stringNew instructions for an llm.call node, in full.-
replace_args booleanReplace input.args instead of merging into it.
upload_to_drive Sensitive write workspace:write Upload ownership-checked email attachments or file handles to Google Drive.
-
drive_account_id integerNative account_id from list_integrations(query='Google Drive').-
attachment_ids integer[]Specific SesAttachment IDs (inbound email/chat attachments) to upload.-
file_handle_tokens string[]File-handle tokens (`fh_...`) to upload — for run_python outputs, Gmail/Outlook message attachments, and other files the agent has access to.-
all booleanWhen neither attachment_ids nor file_handle_tokens are given, upload all attachments on the current email.-
folder_name stringTarget Drive folder name.-
naming_convention stringNaming template for uploaded files.-
subfolder_by stringAutomatically organize uploads into subfolders by 'sender', 'date', or 'subject'.-
conflict_behavior "replace" | "rename" | "fail"What to do if a file with the same target name already exists in the destination folder.
upload_to_onedrive Sensitive write workspace:write Upload ownership-checked email attachments or file handles to OneDrive.
-
onedrive_account_id integerNative account_id from list_integrations(query='OneDrive').-
attachment_ids integer[]Specific SesAttachment IDs (inbound email/chat attachments) to upload.-
file_handle_tokens string[]File-handle tokens (`fh_...`) to upload — for run_python outputs and other files the agent has access to.-
all booleanWhen neither attachment_ids nor file_handle_tokens are given, upload all attachments on the current email.-
folder_name stringTarget OneDrive folder name or path (e.g.-
naming_convention stringNaming template for uploaded files.-
subfolder_by stringAutomatically organize uploads into subfolders by 'sender', 'date', or 'subject'.-
conflict_behavior "replace" | "rename" | "fail"What to do if a file with the same target name already exists at the destination.
upsert_data_rows Write workspace:write Create or update rows in one owned data table, matched on its key field.
-
tablerequired stringCRM table name, e.g.-
rows object[]Rows to create/update.-
rows_file stringfh_ CSV/TSV/JSON handle to import directly.
upsert_rows Write contacts:write Create or update CRM records using explicit matching fields.
-
rows object[]List of contact rows to create or update in ONE call.-
rows_file stringfh_ file-handle token of a CSV or JSON file whose rows to upsert (e.g.
Support and security: support@calbotservice.com