AI and integrations
MCP tools
Every tool the MCP server offers, with the scope it needs and its arguments. Generated from the server's source.
A key sees only the tools its scopes allow. Tools return text: JSON for structured results, Markdown for pages. Failures come back as tool results with isError set.
whoami
Identity and scopes of the current key, and the language of the person behind it (locale: en-AU writes Australian spelling and day/month/year dates, en-US US spelling and month/day/year). Write to them in that language.
Scope: none, every key gets it · read-only
No arguments.
weather_forecast
Weather for a place: current conditions, today's high and low, sunrise and sunset, hourly (from now) and daily forecasts, and air quality where there is some. Give place (a name, e.g. "Ballarat" or "Paris, France"; the user's saved places by name first) or lat and lon. Units are the user's choice unless units says otherwise. Credit the source ("Weather data by Open-Meteo.com") when showing it.
Scope: weather:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
place | string | No | 2–100 characters |
lat | number | No | -90–90 |
lon | number | No | -180–180 |
units | "metric" | "imperial" | No | |
days | integer | No | 1–16 |
hours | integer | No | 1–48 |
weather_places_search
Places by name or postcode, best first, with coordinates and time zone (to ask weather_forecast for). "Name, region or country" narrows.
Scope: weather:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
query | string | Yes | 2–100 characters |
count | integer | No | 1–10 |
food_recipes_search
The person's recipes (and ones their household shares) as short summaries: title, minutes, servings, rating, calories per serving, cuisines, courses, diets met, allergens. All filters are optional; query matches titles, tags and ingredients.
Scope: food:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
query | string | No | up to 200 characters |
cuisine | `` | No | |
course | `` | No | |
diet | `` | No | |
maxMinutes | integer | No | 1–10000 |
ingredient | string | No | up to 60 characters |
favourites | boolean | No | |
limit | integer | No | 1–100 |
food_recipe_get
One recipe in full: ingredients (scaled to servings when given), numbered steps, notes and its source.
Scope: food:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
recipeId | string | Yes | up to 40 characters |
servings | integer | No | 1–100 |
food_suggestions
Recipe ideas from the person's own recipes, best first, each with why: what they cook and rate, what's in season in Australia, what's in their pantry (and about to go off), how long since they made it. Keeps to their diets and allergens.
Scope: food:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
maxMinutes | integer | No | 5–600 |
course | `` | No | |
limit | integer | No | 1–30 |
food_what_can_i_cook
Recipes the person can make with what's in their pantry, fridge and freezer, best covered first, with what's missing and what's about to go off.
Scope: food:read · read-only
No arguments.
food_plan_get
The household's meal plan between two days (at most 92): each meal's day, meal (breakfast, lunch, dinner, snack), title and recipe.
Scope: food:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
from | string | Yes | matches ^\d{4}-\d{2}-\d{2}$ |
to | string | Yes | matches ^\d{4}-\d{2}-\d{2}$ |
food_substitute
Substitutes for an ingredient (e.g. buttermilk, eggs, self-raising flour) from Food's kitchen notes, with amounts. When Food has none on file, say so and suggest from general cooking knowledge.
Scope: food:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
ingredient | string | Yes | 1–100 characters |
food_use_soon
What in the household's pantry needs using soon (within days, 3 by default; leftovers included) and the person's recipes that use the most of it ("what should I cook with what's expiring?").
Scope: food:read
| Argument | Type | Required | Notes |
|---|---|---|---|
days | integer | No | 1–14 |
food_spending
The household's grocery spending by month, from the receipts it added to Food (Coles and Woolworths e-receipts), and what it last paid for things when asked about one (item).
Scope: food:read
| Argument | Type | Required | Notes |
|---|---|---|---|
months | integer | No | 1–24 |
item | string | No | up to 100 characters |
food_plan_meals
Plans meals for the days ahead from the person's recipes (e.g. "dinners this week under 30 minutes, vegetarian", "under $120 this week"): fills the days without that meal yet, varying cuisines and main ingredients, preferring what's in the pantry and about to expire; with budget (dollars for the meals planned) it prefers recipes whose estimated cost fits and says roughly what they'll cost. Without apply it only proposes: show the plan and ask before calling again with apply: true.
Scope: food:read
| Argument | Type | Required | Notes |
|---|---|---|---|
from | string | No | matches ^\d{4}-\d{2}-\d{2}$ |
days | integer | No | 1–14 |
meal | "breakfast" | "lunch" | "dinner" | "snack" | No | |
maxMinutes | integer | No | 5–600 |
diets | [] | No | up to 5 items |
budget | number | No | 1–100000 |
apply | boolean | No |
food_plan_add
Puts a meal on the household's plan: a recipe (by id) or a note such as "Leftovers" or "Eating out".
Scope: food:read
| Argument | Type | Required | Notes |
|---|---|---|---|
day | string | Yes | matches ^\d{4}-\d{2}-\d{2}$ |
meal | "breakfast" | "lunch" | "dinner" | "snack" | Yes | |
recipeId | string | No | up to 40 characters |
title | string | No | up to 200 characters |
servings | integer | No | 1–100 |
food_shopping_list
Makes a shopping list ("turn this into a shopping list"): from the plan between two days, or from recipes at given servings. Lines are merged by ingredient, sorted by aisle, without what the pantry has. Adds to an existing list when listId is given.
Scope: food:read
| Argument | Type | Required | Notes |
|---|---|---|---|
fromPlan | object | No | |
fromPlan.from | string | Yes | matches ^\d{4}-\d{2}-\d{2}$ |
fromPlan.to | string | Yes | matches ^\d{4}-\d{2}-\d{2}$ |
recipes | object[] | No | up to 30 items |
recipes[].recipeId | string | Yes | up to 40 characters |
recipes[].servings | integer | No | 1–100 |
listId | string | No | up to 40 characters |
name | string | No | up to 100 characters |
food_list_add
Adds things to a shopping list (the most recent one unless listId says), one item per string ("2 L milk", "dishwashing liquid").
Scope: food:read
| Argument | Type | Required | Notes |
|---|---|---|---|
items | string[] | Yes | 1–50 items; each 1–200 characters |
listId | string | No | up to 40 characters |
food_pantry_add
Records what the household has in: one item per string ("2 L milk", "spinach"), placed where it keeps and given an estimated use-by unless useBy (YYYY-MM-DD) says, added to the same thing when it's there already.
Scope: food:read
| Argument | Type | Required | Notes |
|---|---|---|---|
items | string[] | Yes | 1–50 items; each 1–200 characters |
useBy | string | No | matches ^\d{4}-\d{2}-\d{2}$ |
food_recipe_save
Saves a recipe to the person's Food: from a web page (url, read from its recipe data), or written out (title, ingredients one per line, steps one per line or paragraph). Confirm with the person before saving one you wrote yourself.
Scope: food:read
| Argument | Type | Required | Notes |
|---|---|---|---|
url | string | No | up to 2,000 characters; URL |
title | string | No | up to 200 characters |
servings | integer | No | 1–100 |
ingredients | string | No | up to 20,000 characters |
steps | string | No | up to 40,000 characters |
minutes | integer | No | 1–2000 |
drive_search
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
query | string | Yes | 1–200 characters |
type | "folder" | "document" | "spreadsheet" | "presentation" | "pdf" | "image" | "video" | "audio" | "archive" | "code" | "text" | "other" | No | |
limit | integer | No | 1–100 |
drive_list
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
folderId | string | No | up to 64 characters |
limit | integer | No | 1–500 |
drive_get
Details of a file or folder: where it is, size, type, versions, who it's shared with (for editors) and its link setting.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
itemId | string | Yes | up to 64 characters |
drive_read
Read a text file (plain text, Markdown, CSV, JSON, code…), up to 1 MB. Other files: use drive_download_url.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
itemId | string | Yes | up to 64 characters |
drive_download_url
A link to download a file, valid for an hour.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
itemId | string | Yes | up to 64 characters |
drive_folder_create
Create a folder. Without parentId: at the top of My Drive. Fails if the name is taken there.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | 1–255 characters |
parentId | string | No | up to 64 characters |
drive_file_write
Save a small text file (up to 1 MB). Without parentId: at the top of My Drive. A file with the same name there gets a new version.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | 1–255 characters |
content | string | Yes | up to 1,048,576 characters |
parentId | string | No | up to 64 characters |
mime | string | No | up to 100 characters |
drive_share
Share a file or folder with a member (by email) or a team (by name), as viewer, commenter or editor. Needs edit access.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
itemId | string | Yes | up to 64 characters |
email | string | No | email address |
team | string | No | up to 100 characters |
role | "viewer" | "commenter" | "editor" | Yes |
document_create
Create a document (Documents), optionally with content in Markdown (headings, lists, tables, links). In My Drive unless folderId names a folder. Returns its id and link.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | 1–255 characters |
folderId | string | No | up to 64 characters |
markdown | string | No | up to 200,000 characters |
space | any JSON | Yes |
document_read
Read a document: as Markdown (format: "markdown", the default) or its outline of headings ("outline"). Suggested deletions are left out.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
format | "markdown" | "outline" | No | |
space | any JSON | Yes |
document_edit
Change a document. Operations run in order: append (Markdown at the end), insert_after_heading (Markdown after the section heading whose text is heading), replace_text (every find → replace, within paragraphs), insert_table (rows of cells, the first the header, after heading or at the end). People with it open see the changes arrive.
Scope: none, every key gets it · destructive
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
operations | (object | object | object | object)[] | Yes | 1–50 items |
space | any JSON | Yes |
document_comment
Comment on a document: on the text quoted (quote, a short passage as it appears) or on the whole document. Mention someone as @Name.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
body | string | Yes | 1–8,000 characters |
quote | string | No | up to 500 characters |
space | any JSON | Yes |
sheet_create
Create a spreadsheet (Sheets), optionally with sheets of rows: strings starting with "=" are formulas (A1 references), numbers and dates as typed.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | 1–255 characters |
folderId | string | No | up to 64 characters |
sheets | object[] | No | up to 20 items |
sheets[].name | string | Yes | 1–100 characters |
sheets[].rows | ((string | number | boolean | null)[])[] | Yes | up to 5,000 items; each up to 200 items, each up to 50,000 characters |
space | any JSON | Yes |
sheet_read
Read cells of a spreadsheet: range in A1 form with an optional sheet ("Budget!A1:D20"; the first sheet without one). Values are as the cells show them, worked out: formulas come with their A1 text and their computed value (errors as codes like #DIV/0!), and cells filled by a spilled array or a pivot table have their values too.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
range | string | Yes | 2–100 characters |
space | any JSON | Yes |
sheet_write
Write cells from the top-left of range ("Sheet1!B2"): values as rows; strings starting with "=" are formulas. People with the spreadsheet open see the change arrive.
Scope: none, every key gets it · destructive
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
range | string | Yes | 2–100 characters |
values | ((string | number | boolean | null)[])[] | Yes | 1–5,000 items; each up to 200 items, each up to 50,000 characters |
space | any JSON | Yes |
sheet_add_chart
Add a chart over a range (headers in its first row, categories in its first column): column, bar, line, area, pie, donut or scatter.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
range | string | Yes | 2–100 characters |
type | "column" | "bar" | "stackedColumn" | "stackedBar" | "line" | "area" | "pie" | "donut" | "scatter" | Yes | |
title | string | No | up to 200 characters |
space | any JSON | Yes |
slides_create
Create a presentation (Slides) from an outline: a title slide, then one slide per entry (bullets make a title-and-body slide, none a section slide), with speaker notes. Themes: plain, bold, editorial, pitch.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | 1–255 characters |
outline | object[] | Yes | 1–60 items |
outline[].title | string | Yes | up to 300 characters |
outline[].bullets | string[] | No | up to 12 items; each up to 500 characters |
outline[].notes | string | No | up to 5,000 characters |
theme | "plain" | "bold" | "editorial" | "pitch" | No | |
folderId | string | No | up to 64 characters |
space | any JSON | Yes |
slides_read
Read a presentation: each slide's title, text and speaker notes, in order.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
space | any JSON | Yes |
slides_add
Add slides to a presentation after the slide after (a slide id from slides_read; the end without it).
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
after | string | No | up to 40 characters |
slides | object[] | Yes | 1–40 items |
slides[].title | string | Yes | up to 300 characters |
slides[].bullets | string[] | No | up to 12 items; each up to 500 characters |
slides[].notes | string | No | up to 5,000 characters |
space | any JSON | Yes |
office_search
Find documents, spreadsheets and presentations by what's in them (every word must appear), with a snippet each. kind narrows to one.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
query | string | Yes | 1–200 characters |
kind | "document" | "spreadsheet" | "presentation" | "video" | No | |
limit | integer | No | 1–50 |
space | any JSON | Yes |
office_export
A download link (an hour) for a document, spreadsheet or presentation in another format: md or txt for documents, csv or tsv for spreadsheets, txt for presentations; docx, xlsx, pptx and pdf where the platform has them on.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
format | "docx" | "odt" | "pdf" | "md" | "txt" | "xlsx" | "ods" | "csv" | "tsv" | "pptx" | "odp" | "png" | Yes | |
space | any JSON | Yes |
video_read
Read a video project (Video): its sequences with size, rate and length; tracks with their clips (media names, start and end as timecode, where each starts in its media); markers; caption tracks with their text and times; and the media. Use it to answer questions about a cut or to draft chapters and descriptions from the captions.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
space | any JSON | Yes |
video_create
Make a video project (Video) from Drive files in order: a rough cut on one sequence, each clip optionally trimmed (in and out in seconds of its file). Files are MP4, QuickTime or M4A (others can be added in the app). In My Drive unless folderId names a folder; preset sets the sequence's size and rate. Returns its id and link; editing, effects and export happen in the app.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | 1–255 characters |
clips | object[] | Yes | 1–200 items |
clips[].fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
clips[].in | number | No | ≥ 0 |
clips[].out | number | No | ≥ 0 |
folderId | string | No | up to 64 characters |
preset | `` | No | |
space | any JSON | Yes |
video_transcribe
Transcribe one media item of a video project into a new caption track (Amazon Transcribe; speakers labelled). mediaId is the item's id from video_read. The captions start where the item's first clip starts on the sequence (or at 0). It takes a minute or more: the answer is the job; check it with transcriptionId, or read the project later. Counts against the person's daily transcription minutes.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
fileId | string | Yes | matches ^fil_[0-9a-z]{6,40}$ |
mediaId | string | No | 4–64 characters |
language | string | No | 2–10 characters |
speakers | integer | No | 0–30 |
transcriptionId | string | No | up to 64 characters |
space | any JSON | Yes |
photos_albums
List the albums in your photo library (title, number of photos, id).
Scope: none, every key gets it · read-only
No arguments.
photos_album
The photos in one album, in the album's order (up to 200).
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
albumId | string | Yes | 3–64 characters |
limit | integer | No | 1–200 |
photos_search
Find photos and videos by when they were taken (from/to: 2024-06-12 or ISO date-times), where (near a latitude/longitude within km, or a box), words in names and descriptions, type, favourites. Use coordinates for places (e.g. Melbourne is -37.81, 144.96).
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
from | string | No | up to 40 characters |
to | string | No | up to 40 characters |
near | object | No | |
near.lat | number | Yes | -90–90 |
near.lon | number | Yes | -180–180 |
near.km | number | No | 0.1–5000 |
bbox | object | No | |
bbox.south | number | Yes | -90–90 |
bbox.west | number | Yes | -180–180 |
bbox.north | number | Yes | -90–90 |
bbox.east | number | Yes | -180–180 |
text | string | No | up to 200 characters |
type | "photo" | "video" | "live" | "raw" | No | |
favourites | boolean | No | |
includeArchive | boolean | No | |
limit | integer | No | 1–200 |
photos_get
A photo's details: when and where it was taken, camera, size, description, albums, and a link to see it (an hour).
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
photoId | string | Yes | 3–64 characters |
mirage_servers
The person's Mirage servers (Discord-style communities), in their order, with unread and mention counts and the channels they can see (ids for the other Mirage tools).
Scope: none, every key gets it · read-only
No arguments.
mirage_inbox
What needs the person's attention in Mirage: recent messages that mention them (by name, their roles or @everyone), newest first, and the channels they haven't read, by server, with mention counts.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
limit | integer | No | 1–25 |
mirage_messages
A Mirage channel's or thread's recent messages, oldest first (before: a message id, for the ones before it). Reading doesn't mark them read.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
channelId | string | Yes | 1–64 characters |
before | string | No | up to 64 characters |
limit | integer | No | 1–50 |
mirage_search
Search a Mirage server's messages the person can read: words, and optionally who sent them (from, a user id), where (in, a channel id) or what they have (link, file, image, video). Newest first.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
serverId | string | Yes | 1–64 characters |
query | string | No | up to 500 characters |
from | string | No | up to 64 characters |
in | string | No | up to 64 characters |
has | ("link" | "file" | "image" | "video")[] | No | up to 4 items |
limit | integer | No | 1–25 |
mirage_send
Send a message in a Mirage channel or thread as the person (Markdown; mention someone as <@userId>). replyTo: a message id to reply to. Not for direct messages, which are end-to-end encrypted.
Scope: none, every key gets it
| Argument | Type | Required | Notes |
|---|---|---|---|
channelId | string | Yes | 1–64 characters |
content | string | Yes | 1–4,000 characters |
replyTo | string | No | up to 64 characters |
health_summary
The person's Health summary for today and this week: each metric they let you read (steps, sleep, heart rate and so on) with today's value, the week's daily average, the trend against the week before and the latest reading. Fails if they haven't turned on your access in Health → Privacy; tell them where.
Scope: none, every key gets it · read-only
No arguments.
health_metric
One Health metric's daily values between two days (at most a year), with the average and best day. Use metric ids from health_summary (e.g. steps, sleep, resting_heart_rate).
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
metricId | string | Yes | |
from | string | Yes | |
to | string | Yes |
context_get
Read a context entry by namespace and key.
Scope: knowledge:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
namespace | string | Yes | 1–128 characters |
key | string | Yes | 1–512 characters |
context_list
List context entries in a namespace, optionally filtered by key prefix.
Scope: knowledge:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
namespace | string | Yes | 1–128 characters |
prefix | string | No | up to 512 characters |
cursor | string | No |
pages_list
List Notes pages (the organization's pages and databases) under a parent (default: top level).
Scope: knowledge:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
parentId | string | No |
page_get
Read a Notes page as Markdown with front matter (title, version, ...). Databases include their rows as a table; rows include their property values.
Scope: knowledge:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
pageId | string | Yes | 1–200 characters; trimmed |
page_search
Search Notes pages by title and text. Returns up to 20 matches with snippets.
Scope: knowledge:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
query | string | Yes | 1–200 characters; trimmed |
context_put
Create or replace a context entry. Use namespaces to group related entries.
Scope: knowledge:write
| Argument | Type | Required | Notes |
|---|---|---|---|
namespace | string | Yes | 1–128 characters |
key | string | Yes | 1–512 characters |
value | string | Yes | up to 100,000 characters |
tags | string[] | No | up to 20 items; each up to 64 characters |
ttlSeconds | integer | No | > 0 |
context_delete
Delete a context entry.
Scope: knowledge:write · destructive
| Argument | Type | Required | Notes |
|---|---|---|---|
namespace | string | Yes | 1–128 characters |
key | string | Yes | 1–512 characters |
page_upsert
Create a Notes page from Markdown, or replace an existing page's content. Pass pageId to replace (title/icon/fullWidth/parentId change only when given); omit it to create a page under parentId (default: top level). For a new page without a title, a leading # Heading becomes the title. Pass baseVersion from page_get to fail instead of overwriting newer edits.
Scope: knowledge:write
| Argument | Type | Required | Notes |
|---|---|---|---|
pageId | string | No | 1–200 characters; trimmed |
parentId | string | No | 1–200 characters; trimmed |
title | string | No | up to 200 characters |
icon | string | No | up to 16 characters |
fullWidth | boolean | No | |
markdown | string | Yes | up to 990,000 characters |
baseVersion | integer | No | ≥ 0 |
agent_job_create
Queue work for one of the organization's self-hosted agents. http.batch runs HTTP requests limited to hosts (obeys robots.txt); exec runs a shell command (agents with full network access, or agents that limit shell commands to their allowlist); browser.batch loads up to 100 pages one at a time in the agent's installed Chrome (input { pages: [{ id, url, waitForSelector?, waitMs?, scroll?, capture?: { urlPattern, max? }, extract?: ["nextData" | "nuxtData" | "jsonLd" | "html"], select?: { nextData?: path | path[], nuxtData?: ..., jsonLd?: ... } }], delayMs? } where a path is dot-separated keys, indexes or * (e.g. "props.pageProps.products.*.name"); obeys robots.txt, identifies itself, at least 5 s between pages). ttlSeconds (60 to 604800, default 7 days) is how long the job may wait for a device. Results are delivered to callbackUrl.
Scope: agents:run · Also checks: agents:write (when args.type === "exec")
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
type | "http.batch" | "exec" | "browser.batch" | Yes | ||
label | string | No | up to 120 characters | |
hosts | string[] | No | [] | up to 50 items; each matches ^(\*\.)?([a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$ |
input | object | Yes | values: any JSON | |
callbackUrl | string | No | URL | |
callbackSecret | string | No | up to 200 characters | |
ttlSeconds | integer | No | 60–604800 |
agent_job_cancel
Cancel an agent job: a queued job is canceled at once; a running job stops at its device's next check (status canceling, then canceled).
Scope: agents:run
| Argument | Type | Required | Notes |
|---|---|---|---|
jobId | string | Yes |
agent_job_get
Status of an agent job, with a temporary results URL once done.
Scope: agents:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
jobId | string | Yes |
issues_meta
Issue tracking catalogs: spaces (keys), issue types, statuses, priorities, resolutions, link types, custom fields and people. Read this first to know valid names.
Scope: issues:read · read-only
No arguments.
issues_search
Search issues with the query language (JQL-compatible), e.g. project = WEB AND status != Done AND assignee = "ada@example.com" ORDER BY priority DESC. Fields: project/space, key, type, status, statusCategory, priority, resolution, assignee, reporter, labels, component, fixVersion, sprint, parent, created, updated, resolved, due, summary, description, text (~ for contains), custom fields by name. Functions: currentUser() (none for keys), openSprints(), unreleasedVersions(), startOfWeek(), membersOf(team)…
Scope: issues:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
jql | string | Yes | up to 10,000 characters |
startAt | integer | No | 0–100000 |
maxResults | integer | No | 1–100 |
issues_report
Report over the issues a query matches. Types: createdVsResolved, cumulativeFlow, averageAge, resolutionTime (trends over days); controlChart (cycle times of resolved issues); statistics (counts by groupBy: status, assignee, priority, type, labels, components, fixVersions, sprint, resolution, space or a custom field id; each row's clause narrows the query to it); twoDimensional (groupBy × groupBy2); timeTracking; workload (open issues per assignee); epicProgress; versionReport (scope, done, pace and forecast of the version id the query's issues belong to).
Scope: issues:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
type | "createdVsResolved" | "cumulativeFlow" | "controlChart" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "timeTracking" | "workload" | "epicProgress" | "versionReport" | Yes | |
jql | string | Yes | up to 10,000 characters |
days | integer | No | 1–730 |
interval | "day" | "week" | "month" | No | |
groupBy | string | No | up to 64 characters |
groupBy2 | string | No | up to 64 characters |
version | string | No | up to 64 characters |
issues_agenda
Your Tasks dates between from and to (YYYY-MM-DD, at most 100 days): issues assigned to you by due and start date, and sprint starts, sprint ends and releases of the spaces you work in.
Scope: issues:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
from | string | Yes | matches ^\d{4}-\d{2}-\d{2}$ |
to | string | Yes | matches ^\d{4}-\d{2}-\d{2}$ |
issue_get
One issue by key (e.g. WEB-12): fields, description (Markdown), comments, links, subtasks and the transitions available now.
Scope: issues:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
key | string | Yes | 1–64 characters |
boards_list
Boards with their type (scrum or kanban), spaces and columns, plus the open sprints of scrum boards.
Scope: issues:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
space | string | No | up to 64 characters |
board_get
A board's cards by column: the active sprint for scrum boards, the flow for kanban boards.
Scope: issues:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
boardId | string | Yes | 1–64 characters |
filters_list
Saved filters shared with the organization or with this key's teams: name and query (run one with issues_search).
Scope: issues:read · read-only
No arguments.
sprint_create
Create a future sprint on a scrum board (see boards_list for board ids).
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
boardId | string | Yes | 1–64 characters |
name | string | No | up to 80 characters |
goal | string | No | up to 1,000 characters |
sprint_plan
Put issues (keys) into a sprint, or back into the backlog with sprintId null.
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
issues | string[] | Yes | 1–100 items; each up to 64 characters |
sprintId | string | Yes | up to 64 characters; can be null |
sprint_start
Start a future sprint. endDate is an ISO date or date-time.
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
sprintId | string | Yes | 1–64 characters |
endDate | string | Yes | 10–40 characters |
goal | string | No | up to 1,000 characters |
sprint_complete
Complete an active sprint. Open issues move to moveTo: a future sprint id, "new" (a new sprint) or "backlog".
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
sprintId | string | Yes | 1–64 characters |
moveTo | string | Yes | 1–64 characters |
issue_create
Create an issue. space is the space key (issues_meta lists them); leave it out when there's only one space. A space that doesn't exist gets the list of spaces back. type, priority, components, versions and sprint take names; people take emails; parent takes an issue key (epics for stories, a standard issue for subtasks); custom fields go in fields by name. description is Markdown.
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
space | string | No | up to 64 characters |
summary | string | Yes | 1–255 characters; trimmed |
type | any JSON | Yes | |
description | any JSON | Yes | |
priority | any JSON | Yes | |
assignee | any JSON | Yes | |
reporter | any JSON | Yes | |
labels | any JSON | Yes | |
components | any JSON | Yes | |
fixVersions | any JSON | Yes | |
affectsVersions | any JSON | Yes | |
dueDate | any JSON | Yes | |
startDate | any JSON | Yes | |
storyPoints | any JSON | Yes | |
originalEstimate | any JSON | Yes | |
remainingEstimate | any JSON | Yes | |
environment | any JSON | Yes | |
parent | any JSON | Yes | |
sprint | any JSON | Yes | |
securityLevel | any JSON | Yes | |
fields | any JSON | Yes |
issue_update
Change an issue's fields (not its status: use issue_transition). Only the fields given change; null clears a field.
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
key | string | Yes | 1–64 characters |
summary | any JSON | Yes | |
type | any JSON | Yes | |
description | any JSON | Yes | |
priority | any JSON | Yes | |
assignee | any JSON | Yes | |
reporter | any JSON | Yes | |
labels | any JSON | Yes | |
components | any JSON | Yes | |
fixVersions | any JSON | Yes | |
affectsVersions | any JSON | Yes | |
dueDate | any JSON | Yes | |
startDate | any JSON | Yes | |
storyPoints | any JSON | Yes | |
originalEstimate | any JSON | Yes | |
remainingEstimate | any JSON | Yes | |
environment | any JSON | Yes | |
parent | any JSON | Yes | |
sprint | any JSON | Yes | |
securityLevel | any JSON | Yes | |
fields | any JSON | Yes |
issue_transition
Move an issue through its workflow by transition or target status name (see issue_get for the available ones). Optionally set fields the transition asks for and add a comment.
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
key | string | Yes | 1–64 characters |
transition | string | Yes | 1–80 characters |
fields | object | No | |
fields.type | string | No | up to 80 characters |
fields.summary | string | No | up to 255 characters |
fields.description | string | No | up to 65,536 characters |
fields.priority | string | No | up to 80 characters; can be null |
fields.assignee | string | No | up to 320 characters; can be null |
fields.reporter | string | No | up to 320 characters; can be null |
fields.labels | string[] | No | up to 30 items; each up to 64 characters |
fields.components | string[] | No | up to 50 items; each up to 100 characters |
fields.fixVersions | string[] | No | up to 50 items; each up to 100 characters |
fields.affectsVersions | string[] | No | up to 50 items; each up to 100 characters |
fields.dueDate | string | No | matches ^\d{4}-\d{2}-\d{2}$; can be null |
fields.startDate | string | No | matches ^\d{4}-\d{2}-\d{2}$; can be null |
fields.storyPoints | number | No | 0–10000; can be null |
fields.originalEstimate | number | string | No | 0–315360000; up to 40 characters; can be null |
fields.remainingEstimate | number | string | No | 0–315360000; up to 40 characters; can be null |
fields.environment | string | No | up to 32,768 characters; can be null |
fields.parent | string | No | up to 64 characters; can be null |
fields.sprint | string | No | up to 100 characters; can be null |
fields.securityLevel | string | No | up to 80 characters; can be null |
fields.resolution | string | No | up to 80 characters; can be null |
fields.fields | object | No | keys up to 100 characters; values: any JSON |
fields.requestType | string | No | up to 80 characters |
fields.participants | string[] | No | up to 100 items; each up to 320 characters |
comment | string | No | up to 32,768 characters |
issue_comment
Add a Markdown comment to an issue. internal comments (service desk spaces) are visible to agents only.
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
key | string | Yes | 1–64 characters |
body | string | Yes | 1–32,768 characters |
internal | boolean | No |
issue_link
Link two issues, e.g. key=WEB-1, type="blocks", issue=WEB-2 (WEB-1 blocks WEB-2). Either wording works: "is blocked by", "relates to", "duplicates"…
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
key | string | Yes | 1–64 characters |
type | string | Yes | 1–80 characters |
issue | string | Yes | 1–64 characters |
issue_worklog
Log work on an issue, e.g. timeSpent "1h 30m". The remaining estimate goes down by the same amount.
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
key | string | Yes | 1–64 characters |
timeSpent | string | Yes | 1–40 characters |
comment | string | No | up to 4,000 characters |
issues_rank
Reorder issues in the backlog: put issues (keys, in order) right before or right after another issue.
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
issues | string[] | Yes | 1–50 items; each up to 64 characters |
before | string | No | up to 64 characters |
after | string | No | up to 64 characters |
issue_move
Move an issue (and its subtasks) to another space. It gets a new key; the old key keeps resolving.
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
key | string | Yes | 1–64 characters |
space | string | Yes | 1–64 characters |
type | string | No | up to 80 characters |
issue_delete
Delete an issue with its comments, attachments, work logs and subtasks. This can't be undone.
Scope: issues:write · destructive
| Argument | Type | Required | Notes |
|---|---|---|---|
key | string | Yes | 1–64 characters |
space_create
Create a space (project) from a template: scrum, kanban, bugs, service or basic. Keys are 2–10 capital letters or digits.
Scope: issues:write
| Argument | Type | Required | Notes |
|---|---|---|---|
key | string | Yes | 2–10 characters |
name | string | Yes | 1–80 characters; trimmed |
template | "scrum" | "kanban" | "bugs" | "service" | "basic" | Yes | |
description | string | No | up to 2,000 characters |
crm_objects
The objects in Customers (accounts, contacts, leads, opportunities, activities and custom ones) with their fields: ids, types, picklist values and lookups' targets, and the pipelines with their stages. Read this first to know valid field ids and values.
Scope: crm:read · read-only
No arguments.
crm_search
Find records in Customers by words of their name, company, email, phone or website (prefixes match), or by id. Returns ids to read with crm_record_get.
Scope: crm:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
query | string | Yes | 1–200 characters |
objects | string[] | No | up to 10 items; each up to 40 characters |
limit | integer | No | 1–50 |
crm_records_list
Scope: crm:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
object | string | Yes | up to 40 characters |
filters | object[] | No | up to 10 items |
filters[].field | string | Yes | up to 60 characters |
filters[].op | "eq" | "ne" | "in" | "gt" | "gte" | "lt" | "lte" | "contains" | "startsWith" | "blank" | "notBlank" | Yes | |
filters[].value | any JSON | No | |
sort | object | No | |
sort.field | string | Yes | up to 60 characters |
sort.dir | "asc" | "desc" | Yes | |
limit | integer | No | 1–100 |
cursor | string | No | up to 8,000 characters |
crm_record_get
Read a record in Customers by id: its fields (lookups and owners by name), what the caller may do with it, its related records and its latest activities.
Scope: crm:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
id | string | Yes | up to 40 characters |
crm_record_create
Create a record in Customers: the object id and field values by field id (crm_objects lists them; picklists take a value or its label, lookups a record id, dates YYYY-MM-DD). The caller owns it unless ownerId is given.
Scope: crm:write
| Argument | Type | Required | Notes |
|---|---|---|---|
object | string | Yes | up to 40 characters |
fields | object | Yes | keys up to 60 characters; values: any JSON |
ownerId | string | No | up to 40 characters |
crm_record_update
Change a record's fields in Customers (by field id; null clears one) or owner. Pass the version you read to refuse the change if someone edited it since.
Scope: crm:write
| Argument | Type | Required | Notes |
|---|---|---|---|
id | string | Yes | up to 40 characters |
fields | object | No | keys up to 60 characters; values: any JSON |
ownerId | string | No | up to 40 characters |
version | integer | No |
crm_activity_log
Log an activity on records in Customers: a task (open, with a due date), call, meeting, note or email, related to one or more records (contacts, accounts, opportunities, leads).
Scope: crm:write
| Argument | Type | Required | Notes |
|---|---|---|---|
relatedIds | string[] | Yes | 1–24 items; each up to 40 characters |
type | "task" | "call" | "meeting" | "note" | "email" | Yes | |
subject | string | Yes | 1–255 characters |
body | string | No | up to 32,000 characters |
dueDate | string | No | matches ^\d{4}-\d{2}-\d{2}$ |
startAt | string | No | up to 40 characters |
durationMinutes | integer | No | 0–100000 |
status | "open" | "completed" | No |
crm_pipeline_summary
The sales pipeline at a glance: open opportunities by stage (count, amount, weighted), won and lost this month and the last six months, per pipeline, and how many records each object has.
Scope: crm:read · read-only
No arguments.
marketing_segments_list
The organization's Marketing segments (saved audiences over contacts and leads): ids, names, their groups' filters and the last size estimate.
Scope: marketing:read · read-only
No arguments.
marketing_segment_get
One segment: its groups (Customers filters, engagement and list conditions) and the last size estimate.
Scope: marketing:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
segmentId | string | Yes | 1–60 characters |
marketing_segment_estimate
Counts a segment's people (each address once) in the background and returns the segment: counting while it runs, then estimate. Read it again with marketing_segment_get for the result.
Scope: marketing:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
segmentId | string | Yes | 1–60 characters |
channel | "email" | "sms" | No |
marketing_lists_list
Marketing lists: static lists and suppression lists (never sent to), by channel, with member counts.
Scope: marketing:read · read-only
No arguments.
marketing_campaigns_list
Marketing campaigns, newest first: status (draft, waiting for approval, scheduled, sending, sent, paused, cancelled), topic, schedule and, once sending started, their numbers. Returns a cursor for the next page.
Scope: marketing:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
status | "draft" | "pendingApproval" | "approved" | "scheduled" | "sending" | "sent" | "paused" | "cancelled" | "failed" | No | |
limit | integer | No | 1–100 |
cursor | string | No | up to 2,000 characters |
marketing_campaign_get
One campaign and its results: audience, topic, approval, schedule, send progress and numbers (sent, delivered, opened, clicked, bounced, complained, unsubscribed, skipped, conversions, revenue).
Scope: marketing:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
campaignId | string | Yes | 1–60 characters |
marketing_journeys_list
Marketing journeys: status (draft, running, paused, stopped), the live version and how many people entered, are in them, completed and reached the goal.
Scope: marketing:read · read-only
No arguments.
marketing_journey_get
One journey: its draft (entry, re-entry, goal and steps), versions, approval, and its numbers: totals, each step's (entered, completed, exited, goal) and each email and text step's sends.
Scope: marketing:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
journeyId | string | Yes | 1–60 characters |
marketing_consent_get
An email address's or mobile number's Marketing consent: status (subscribed, pending, unsubscribed, bounced, complained), each topic's choice, and the history of changes with their evidence.
Scope: marketing:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
address | string | Yes | 3–254 characters |
marketing_stats_daily
The organization's Marketing numbers per UTC day and their totals: emails sent, delivered, opened, clicked, bounced, unsubscribed, conversions and revenue, texts, form submissions, journey entries and page views. Days are YYYYMMDD (the last 30 by default, 400 at most).
Scope: marketing:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
from | string | No | matches ^\d{8}$ |
to | string | No | matches ^\d{8}$ |
marketing_forms_list
Marketing forms (web-to-lead): what they create, whether they're open, and their submissions and the spam they turned away.
Scope: marketing:read · read-only
No arguments.
marketing_campaign_create
Drafts a campaign: a name, a topic id (from the settings' topics), an audience (segments and lists to include and exclude) and content (a block document, or a template id). It's only a draft: a person reviews, schedules and sends it in the Marketing app.
Scope: marketing:write
| Argument | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | 1–120 characters |
topicId | string | Yes | 1–60 characters |
include | (object | object)[] | Yes | up to 20 items |
exclude | (object | object)[] | No | up to 20 items |
document | object | No | |
document.subject | string | Yes | up to 200 characters |
document.preheader | string | No | up to 250 characters |
document.blocks | object[] | Yes | up to 200 items; each values: any JSON |
templateId | string | No | 1–60 characters |
marketing_campaign_request_approval
Asks the organization's approvers to approve a draft campaign as it stands (when the organization requires approvals). It never schedules or sends: once approved, a person schedules it in the Marketing app. Pass the version you read.
Scope: marketing:write
| Argument | Type | Required | Notes |
|---|---|---|---|
campaignId | string | Yes | 1–60 characters |
version | integer | Yes | ≥ 0 |
marketing_journey_create
Drafts a journey with a name and description (and optionally a definition: entry, re-entry, goal and steps). It's only a draft: a person builds it on the canvas and publishes it in the Marketing app.
Scope: marketing:write
| Argument | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | 1–120 characters |
description | string | No | up to 500 characters |
definition | object | No | values: any JSON |
aircraft_find
Where is an aircraft now: by ICAO hex (7C6B2D), registration (VH-ABC) or callsign (QFA1). Answers from the live flight picture (areas being watched or viewed); an aircraft outside them falls back to its recorded track when a watch covers it.
Scope: maps:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
query | string | Yes | 2–16 characters |
aircraft_track
Recorded track of a watched aircraft over the last hours (positions every ~10 s while a watch covers it): start, end, distance and sampled points.
Scope: maps:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
hex | string | Yes | matches ^[0-9a-fA-F]{6}$ |
hours | number | No | 0.25–24 |
flight_watches_list
Flight watches you can see, with targets, areas, which events notify, and when each last fired.
Scope: maps:read · read-only
No arguments.
flight_logs_list
Flights a watch logged (each airframe by ICAO hex): when, start and end, distance, highest altitude, roads followed and events. Newest first.
Scope: maps:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
watchId | string | Yes | up to 40 characters |
hex | string | No | up to 8 characters |
limit | integer | No | 1–100 |
flight_log_get
One logged flight: its events and road spans with a sampled track, or the whole track as a GPX, KML or CSV file (format).
Scope: maps:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
watchId | string | Yes | up to 40 characters |
flightId | string | Yes | up to 40 characters |
format | "summary" | "gpx" | "kml" | "csv" | No |
flight_watch_events
Recent events of a flight watch (takeoffs, landings, signal lost or back, areas, orbits, roads followed, thresholds), newest first.
Scope: maps:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
watchId | string | Yes | up to 40 characters |
limit | integer | No | 1–100 |
maps_locations_list
The org's alert locations (bases, hospitals, airfields): name, position and on-site radius. Watches alert near one with near: { location: <locationId>, radiusKm }.
Scope: maps:read · read-only
No arguments.
my_location_status
Whether your phone shares its location with Maps for near-me alerts (from the Maps app): phones, background or not, and until when the current fix counts. Never returns coordinates.
Scope: maps:read · read-only
No arguments.
flight_watch_create
Scope: maps:write
| Argument | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | 1–120 characters |
hex | string | No | up to 8 characters |
registration | string | No | up to 16 characters |
callsign | string | No | up to 16 characters |
type | string | No | up to 8 characters |
anyAircraft | boolean | No | |
aircraftClass | "helicopter" | "light" | "turboprop" | "jet" | "heavy" | "glider" | "balloon" | "drone" | No | |
preset | string | No | up to 40 characters |
near | object | No | |
near.location | string | Yes | 2–40 characters |
near.radiusKm | number | No | 0.2–100 |
userIds | string[] | No | up to 50 items; each up to 60 characters |
exclude | object[] | No | up to 20 items |
exclude[].kind | "hex" | "registration" | "callsign" | "type" | Yes | |
exclude[].value | string | Yes | 1–16 characters |
area | string | No | up to 40 characters |
events | string[] | No | up to 16 items |
channels | [] | No | |
groupIds | string[] | No | up to 10 items; each up to 40 characters |
roadRepeatMinutes | integer | No | 0–240 |
visibility | "private" | "org" | No | |
pinFirstMatch | boolean | No | |
until | string | No | up to 40 characters |
forHours | number | No | 0.25–87600 |
maxNotifications | integer | No | 1–1000000 |
maxFlights | integer | No | 1–100000 |
scheduleDays | integer[] | No | up to 7 items; each 0–6 |
scheduleStart | string | No | up to 5 characters |
scheduleEnd | string | No | up to 5 characters |
timeZone | string | No | up to 64 characters |
logFlights | boolean | No | |
logRetentionDays | integer | No | 0–3650 |
circling_alert_create
Alert when aircraft circle or hold somewhere (searching, orbiting, holding), below 5,000 ft and ignoring airfield circuits within 3 km. where: a preset area (area), a circle, an org location (locationId) or near you (nearMe, your phone's location in the Maps app; to you only). aircraft: "any", a class (e.g. helicopter), { preset } or { callsign }; noCallsignOnly limits it to aircraft broadcasting no callsign. sensitivity: sensitive (0.75 turns within 3 km in 10 min), normal (1 turn, 2 km, 8 min; the default) or strict (2 turns, 1.5 km, 8 min), or explicit numbers. Alerts go by mobile and web push; add sms to channels to text them too.
Scope: maps:write
| Argument | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | 1–120 characters |
where | object | Yes | |
where.area | string | No | up to 40 characters |
where.circle | object | No | |
where.circle.lat | number | Yes | -90–90 |
where.circle.lon | number | Yes | -180–180 |
where.circle.radiusKm | number | Yes | 0.5–250 |
where.locationId | string | No | up to 40 characters |
where.nearMe | object | No | |
where.nearMe.radiusKm | number | Yes | 0.5–50 |
aircraft | "any" | "helicopter" | "light" | "turboprop" | "jet" | "heavy" | "glider" | "balloon" | "drone" | object | object | Yes | |
noCallsignOnly | boolean | No | |
sensitivity | | object | No | |
channels | [] | No | |
smsEvents | string[] | No | up to 16 items |
groupIds | string[] | No | up to 10 items; each up to 40 characters |
userIds | string[] | No | up to 50 items; each up to 60 characters |
quietHours | object | No | |
quietHours.start | string | Yes | up to 5 characters |
quietHours.end | string | Yes | up to 5 characters |
quietHours.timeZone | string | Yes | up to 64 characters |
maps_location_create
Add an org alert location (a base, a hospital, an airfield): name, lat, lon and the on-site radius in metres (50–5,000; default 300). Watches then alert near it; someone on site gets one alert, the location's.
Scope: maps:write
| Argument | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | 1–120 characters |
lat | number | Yes | -90–90 |
lon | number | Yes | -180–180 |
siteRadiusM | integer | No | 50–5000 |
address | string | No | up to 400 characters |
note | string | No | up to 2,000 characters |
maps_location_update
Change an org alert location (its owner or an org admin). Moving it moves every watch that uses it.
Scope: maps:write
| Argument | Type | Required | Notes |
|---|---|---|---|
locationId | string | Yes | up to 40 characters |
name | string | No | 1–120 characters |
lat | number | No | -90–90 |
lon | number | No | -180–180 |
siteRadiusM | integer | No | 50–5000 |
address | string | No | up to 400 characters |
note | string | No | up to 2,000 characters |
maps_location_delete
Delete an org alert location (its owner or an org admin). Refused while watches use it; the error names them.
Scope: maps:write
| Argument | Type | Required | Notes |
|---|---|---|---|
locationId | string | Yes | up to 40 characters |
my_location_delete
Delete your location from Maps: every phone's current fix, the phones sharing and their keys. Near-me alerts wait until the Maps app shares again.
Scope: maps:write · destructive
No arguments.
flight_watch_pause
Pause a flight watch (nothing is evaluated or sent) or resume it with paused: false.
Scope: maps:write
| Argument | Type | Required | Notes |
|---|---|---|---|
watchId | string | Yes | up to 40 characters |
paused | boolean | No |
flight_watch_restart
Start an ended flight watch again (after its end time, notification or flight limit) with its counters at zero.
Scope: maps:write
| Argument | Type | Required | Notes |
|---|---|---|---|
watchId | string | Yes | up to 40 characters |
incidents_list
Current emergency incidents and warnings in Australia from the state agencies' public feeds (VicEmergency, NSW RFS, Queensland Fire Department, ACT ESA): Australian Warning System level, hazard, status, what to do and the agency's page. Filter by hazards, minimum level, state or a bounding box; near sorts by distance. Always point people to the official source for decisions.
Scope: maps:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
near | object | No | |
near.lat | number | Yes | |
near.lon | number | Yes | |
bbox | object | No | |
bbox.west | number | Yes | |
bbox.south | number | Yes | |
bbox.east | number | Yes | |
bbox.north | number | Yes | |
hazards | ("bushfire" | "grass_fire" | "burn_off" | "structure_fire" | "vehicle_fire" | "fire" | "flood" | "storm" | "cyclone" | "tree_down" | "heat" | "tsunami" | "earthquake" | "landslide" | "hazmat" | "smoke" | "rescue" | "medical" | "accident" | "power" | "animal" | "other")[] | No | |
minLevel | "none" | "advice" | "watch_and_act" | "emergency_warning" | No | |
state | "ACT" | "NSW" | "NT" | "QLD" | "SA" | "TAS" | "VIC" | "WA" | No | |
limit | integer | No | 1–100 |
incident_get
One incident or warning by id (from incidents_list): everything the agency says, and its history of level and status changes. Ended ones return their last version.
Scope: maps:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
incidentId | string | Yes | up to 200 characters |
watch_zones_list
Watch zones in Maps: areas where emergency incidents and warnings alert people (by push, email or text), with their hazards, minimum level and status.
Scope: maps:read · read-only
No arguments.
watch_zone_events
Recent alerts of a watch zone, newest first, with what was sent.
Scope: maps:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
zoneId | string | Yes | up to 40 characters |
limit | integer | No | 1–100 |
watch_zone_create
Make a watch zone that alerts on emergency incidents and warnings in Australia: areas (a circle around a point, an org location, your phone's location with near_me, a drawn polygon or a whole state), hazards, minimum warning level and which changes alert (new, escalated, downgraded, closed, updated). Channels default to push and email, plus texts when you have a verified number.
Scope: maps:write
| Argument | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | 1–120 characters |
areas | object[] | Yes | 1–10 items |
areas[].kind | "circle" | "location" | "near_me" | "state" | "polygon" | Yes | |
areas[].lat | number | No | -90–90 |
areas[].lon | number | No | -180–180 |
areas[].radiusKm | number | No | 0.5–500 |
areas[].locationId | string | No | up to 40 characters |
areas[].state | "ACT" | "NSW" | "NT" | "QLD" | "SA" | "TAS" | "VIC" | "WA" | No | |
areas[].ring | object[] | No | 3–500 items |
areas[].ring[].lat | number | Yes | |
areas[].ring[].lon | number | Yes | |
areas[].label | string | No | up to 80 characters |
hazards | ("bushfire" | "grass_fire" | "burn_off" | "structure_fire" | "vehicle_fire" | "fire" | "flood" | "storm" | "cyclone" | "tree_down" | "heat" | "tsunami" | "earthquake" | "landslide" | "hazmat" | "smoke" | "rescue" | "medical" | "accident" | "power" | "animal" | "other")[] | No | |
minLevel | "none" | "advice" | "watch_and_act" | "emergency_warning" | No | |
events | ("new" | "escalated" | "downgraded" | "closed" | "updated")[] | No | |
channels | ("mobile" | "web" | "email" | "sms" | "call")[] | No | |
smsMinLevel | "none" | "advice" | "watch_and_act" | "emergency_warning" | No | |
groupIds | string[] | No | up to 10 items; each up to 40 characters |
userIds | string[] | No | up to 50 items; each up to 60 characters |
visibility | "private" | "org" | No |
watch_zone_update
Change a watch zone (its owner, or an org admin for org zones): fields given replace the current ones.
Scope: maps:write
| Argument | Type | Required | Notes |
|---|---|---|---|
zoneId | string | Yes | up to 40 characters |
name | string | No | 1–120 characters |
areas | object[] | No | 1–10 items |
areas[].kind | "circle" | "location" | "near_me" | "state" | "polygon" | Yes | |
areas[].lat | number | No | -90–90 |
areas[].lon | number | No | -180–180 |
areas[].radiusKm | number | No | 0.5–500 |
areas[].locationId | string | No | up to 40 characters |
areas[].state | "ACT" | "NSW" | "NT" | "QLD" | "SA" | "TAS" | "VIC" | "WA" | No | |
areas[].ring | object[] | No | 3–500 items |
areas[].ring[].lat | number | Yes | |
areas[].ring[].lon | number | Yes | |
areas[].label | string | No | up to 80 characters |
hazards | ("bushfire" | "grass_fire" | "burn_off" | "structure_fire" | "vehicle_fire" | "fire" | "flood" | "storm" | "cyclone" | "tree_down" | "heat" | "tsunami" | "earthquake" | "landslide" | "hazmat" | "smoke" | "rescue" | "medical" | "accident" | "power" | "animal" | "other")[] | No | |
minLevel | "none" | "advice" | "watch_and_act" | "emergency_warning" | No | |
events | ("new" | "escalated" | "downgraded" | "closed" | "updated")[] | No | |
channels | ("mobile" | "web" | "email" | "sms" | "call")[] | No | |
smsMinLevel | "none" | "advice" | "watch_and_act" | "emergency_warning" | No | |
groupIds | string[] | No | up to 10 items; each up to 40 characters |
userIds | string[] | No | up to 50 items; each up to 60 characters |
visibility | "private" | "org" | No |
watch_zone_pause
Pause a watch zone (no alerts) or resume it with paused: false.
Scope: maps:write
| Argument | Type | Required | Notes |
|---|---|---|---|
zoneId | string | Yes | up to 40 characters |
paused | boolean | No |
watch_zone_delete
Delete a watch zone (its owner, or an org admin for org zones). Its alert history expires on its own.
Scope: maps:write · destructive
| Argument | Type | Required | Notes |
|---|---|---|---|
zoneId | string | Yes | up to 40 characters |
tenant_overview
The organization's tenant overview: properties, member counts, the sign-in policy and security recommendations (members without a passkey or two-step sign-in, old invites, expiring keys and secrets).
Scope: tenant:read · read-only
No arguments.
tenant_users_list
List the organization's members with role, title, department, status (active or blocked), guest access, groups, passkeys and last sign-in; and pending invites. Filter by text, role, status, sign-in age or two-step.
Scope: tenant:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
q | string | No | up to 200 characters |
role | "owner" | "admin" | "developer" | "viewer" | No | |
status | "active" | "blocked" | "guest" | "member" | No | |
signIn | "never" | "30d" | "90d" | No | |
mfa | "yes" | "no" | No |
tenant_user_get
One member in detail: groups, browser sessions, keys they created, app assignments and recent sign-ins.
Scope: tenant:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
userId | string | Yes | 1–64 characters |
tenant_groups_list
List the organization's groups with their size, owners and the roles they grant.
Scope: tenant:read · read-only
No arguments.
tenant_group_get
One group: members and owners, granted roles, Serverless App Service and repository access, and app assignments.
Scope: tenant:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
teamId | string | Yes | 1–64 characters |
tenant_roles_list
Built-in and custom roles with their scopes, and the members and groups holding each.
Scope: tenant:read · read-only
No arguments.
tenant_sign_ins
Members' sign-ins and failed sign-ins, newest first: method, address, approximate place and device.
Scope: tenant:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
userId | string | No | up to 64 characters |
result | "success" | "failure" | No | |
cursor | string | No | up to 4,096 characters |
tenant_policy_get
The organization's sign-in policy and the members it would leave without access.
Scope: tenant:read · read-only
No arguments.
tenant_invite
Invite someone to the organization by email. The invite is mailed; the link is returned to share. Guests (external people) can be developers or viewers, with an access lifetime in days.
Scope: tenant:write
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
email | string | Yes | email address | |
role | "owner" | "admin" | "developer" | "viewer" | No | "developer" | |
title | string | No | up to 100 characters | |
department | string | No | up to 100 characters | |
guest | boolean | No | ||
guestDays | integer | No | ||
teamIds | string[] | No | up to 20 items; each up to 64 characters |
tenant_user_update
Change a member's role, title or department. Only owners change owners; nobody assigns a role above their own.
Scope: tenant:write
| Argument | Type | Required | Notes |
|---|---|---|---|
userId | string | Yes | 1–64 characters |
role | "owner" | "admin" | "developer" | "viewer" | No | |
title | string | No | up to 100 characters; can be null |
department | string | No | up to 100 characters; can be null |
tenant_user_block
Block a member's sign-in to this organization: no new tokens, and current ones stop within 30 seconds. They stay a member.
Scope: tenant:write · destructive
| Argument | Type | Required | Notes |
|---|---|---|---|
userId | string | Yes | 1–64 characters |
reason | string | No | up to 200 characters |
tenant_user_unblock
Unblock a member's sign-in; they sign in again to reach the organization.
Scope: tenant:write
| Argument | Type | Required | Notes |
|---|---|---|---|
userId | string | Yes | 1–64 characters |
tenant_user_revoke_sessions
End a member's sessions for this organization (they sign in again) and disconnect their MCP clients here; keys also revokes keys they created here.
Scope: tenant:write · destructive
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
userId | string | Yes | 1–64 characters | |
keys | boolean | No | false |
tenant_group_member_set
Add a member to a group, make them a group owner, or take them out (role null).
Scope: tenant:write
| Argument | Type | Required | Notes |
|---|---|---|---|
teamId | string | Yes | 1–64 characters |
userId | string | Yes | 1–64 characters |
role | "owner" | "member" | Yes | can be null |
databases_list
The organization's databases (DynamoDB tables): id, name, region and linked Serverless App Service.
Scope: resources:read · read-only
No arguments.
database_describe
Key schema, indexes, status and approximate item count of a database.
Scope: resources:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
resourceId | string | Yes |
database_query
Query a database (or one of its indexes) by partition key, with an optional sort key condition and filters. Returns at most limit items and a cursor for the next page. Values are typed DynamoDB JSON.
Scope: resources:read · read-only
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
resourceId | string | Yes | ||
index | string | No | up to 255 characters | |
partition | object | object | object | object | object | Yes | ||
sort | object | No | ||
sort.op | "=" | "<" | "<=" | ">" | ">=" | "begins_with" | "between" | Yes | ||
sort.value | object | object | object | object | object | Yes | ||
sort.value2 | object | object | object | object | object | No | ||
filters | object[] | No | [] | up to 10 items |
filters[].attribute | string | Yes | 1–255 characters | |
filters[].op | "=" | "<>" | "<" | "<=" | ">" | ">=" | "begins_with" | "contains" | "between" | "exists" | "not_exists" | Yes | ||
filters[].value | object | object | object | object | object | No | ||
filters[].value2 | object | object | object | object | object | No | ||
match | "all" | "any" | No | "all" | |
limit | integer | No | 25 | 1–100 |
forward | boolean | No | true | |
cursor | string | No | up to 8,000 characters |
database_scan
Scan a database page by page, optionally with filters. Prefer database_query when you know the partition key.
Scope: resources:read · read-only
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
resourceId | string | Yes | ||
index | string | No | up to 255 characters | |
filters | object[] | No | [] | up to 10 items |
filters[].attribute | string | Yes | 1–255 characters | |
filters[].op | "=" | "<>" | "<" | "<=" | ">" | ">=" | "begins_with" | "contains" | "between" | "exists" | "not_exists" | Yes | ||
filters[].value | object | object | object | object | object | No | ||
filters[].value2 | object | object | object | object | object | No | ||
match | "all" | "any" | No | "all" | |
limit | integer | No | 25 | 1–100 |
cursor | string | No | up to 8,000 characters |
database_item_get
Read one item by its key (strongly consistent).
Scope: resources:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
resourceId | string | Yes | |
key | object | Yes | values: any JSON |
buckets_list
The organization's buckets (S3): id, name, region and linked Serverless App Service.
Scope: resources:read · read-only
No arguments.
bucket_list
List one folder of a bucket: subfolders and files (key, size, last modified). prefix is a folder path ending in / (empty for the root).
Scope: resources:read · read-only
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
resourceId | string | Yes | ||
prefix | string | No | "" | up to 1,024 characters |
cursor | string | No | up to 2,048 characters | |
limit | integer | No | 100 | 1–1000 |
bucket_download_url
A link that downloads one file for the next 5 minutes.
Scope: resources:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
resourceId | string | Yes | |
key | string | Yes | up to 1,024 characters |
database_item_put
Create an item (an existing key is an error), or with replace replace the existing item with the same key (a missing one is an error).
Scope: resources:write
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
resourceId | string | Yes | ||
item | object | Yes | values: any JSON | |
replace | boolean | No | false |
database_item_delete
Delete one item by its key.
Scope: resources:write · destructive
| Argument | Type | Required | Notes |
|---|---|---|---|
resourceId | string | Yes | |
key | object | Yes | values: any JSON |
bucket_upload_url
A link (15 minutes) to upload one file with an HTTP PUT, up to 5 GB. Send the same Content-Type header as contentType.
Scope: resources:write
| Argument | Type | Required | Notes |
|---|---|---|---|
resourceId | string | Yes | |
key | string | Yes | up to 1,024 characters |
contentType | string | No | up to 255 characters |
size | integer | Yes | ≥ 0 |
bucket_delete
Delete files (keys) and folders (prefixes ending in /, with everything in them). done: false means call again to finish large folders.
Scope: resources:write · destructive
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
resourceId | string | Yes | ||
keys | string[] | No | [] | up to 1,000 items; each up to 1,024 characters |
prefixes | string[] | No | [] | up to 100 items; each up to 1,024 characters |
project_traffic
Traffic of the organization's deployments (or one Serverless App Service's): requests, bandwidth, status classes, cache hits, p50/p95 latency, a series over the range and top paths, countries and deployments. Rolled up hourly from edge logs.
Scope: analytics:read · read-only
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
range | "24h" | "7d" | "30d" | "90d" | No | "24h" | |
projectId | string | No | matches ^prj_[0-9a-z]{10,40}$ |
keys_list
Keys that protect the organization's data (with keys:read: Drive, secrets, connectors and integrations too) and its own keys for encrypting and signing: id, name, what it protects, algorithm, current version, uses in the last 30 days. Never key material.
Scope: none, every key gets it · read-only · Also checks: keys:read
No arguments.
key_get
One key by id (ck_…) or name: versions still in use, created, last rotated, last used, uses in the last 30 days, rotation schedule and recent re-encryption jobs. Never key material.
Scope: none, every key gets it · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
key | string | Yes | 1–100 characters |
keys_encrypt
Encrypts up to 64 KB with one of the organization's aes-256-gcm keys. Returns a ciphertext (k1.…) to store; keys_decrypt opens it.
Scope: keys:use
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
key | string | Yes | 1–100 characters | |
plaintext | string | Yes | up to 90,000 characters | |
encoding | "utf8" | "base64" | No | "utf8" | |
context | object | No | keys 1–128 characters; values: string (up to 1,024 characters) |
keys_decrypt
Decrypts a ciphertext (k1.…) made with one of the organization's keys, with the context it was encrypted with.
Scope: keys:use
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
ciphertext | string | Yes | 1–200,000 characters | |
encoding | "utf8" | "base64" | No | "utf8" | |
context | object | No | keys 1–128 characters; values: string (up to 1,024 characters) |
keys_sign
Signs up to 64 KB with one of the organization's ed25519 or ecdsa-p256 keys. Returns a signature (k1s.…).
Scope: keys:use
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
key | string | Yes | 1–100 characters | |
message | string | Yes | up to 90,000 characters | |
encoding | "utf8" | "base64" | No | "utf8" |
keys_verify
Checks a signature (k1s.…) from keys_sign against a message. Returns valid: true or false.
Scope: keys:use · read-only
| Argument | Type | Required | Default | Notes |
|---|---|---|---|---|
message | string | Yes | up to 90,000 characters | |
signature | string | Yes | 1–2,000 characters | |
encoding | "utf8" | "base64" | No | "utf8" |
secrets_list
Secrets (sensitive environment variables) of a Serverless App Service, or the organization's shared ones: name, environments, version, rotation reminder and when it's due. Never values.
Scope: env:read · read-only
| Argument | Type | Required | Notes |
|---|---|---|---|
project | string | No | up to 100 characters |
secret_get
A secret's value, only if its access rule lets the caller read it (owners and admins, plus the roles and groups it names). Every read is in the audit log. Prefer not to repeat values back unless asked.
Scope: env:read · Also checks: env:write
| Argument | Type | Required | Notes |
|---|---|---|---|
project | string | No | up to 100 characters |
key | string | Yes | 1–256 characters |
secret_set
Sets a secret (a sensitive environment variable) to a new value: a new version, for the given environments (default all three). Takes effect on the next deployment.
Scope: env:write
| Argument | Type | Required | Notes |
|---|---|---|---|
project | string | No | up to 100 characters |
key | string | Yes | 1–256 characters |
value | string | Yes | up to 65,536 characters |
targets | ("production" | "preview" | "development")[] | No | at least 1 item |
connectors_list
Remote MCP servers connected to this organization and the tool names they add here.
Scope: connectors:read · read-only
No arguments.
Connector tools
With connectors:read, every enabled connector adds its cached tools, named <slug>__<tool>: the connector's slug, two underscores, and the tool's own name with characters other than letters, digits, _ and - replaced by _, cut at 64 characters. Their descriptions and arguments are the connector's own.
At most 200 connector tools are added per key, from the oldest connector on. If two tools end up with the same name, the first keeps it.