API reference
MCP Tools
whoamiIdentity 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "whoami",
"arguments": {}
}
}'weather_forecastWeather 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
Arguments
placestring2–100 characters.
latnumber-90–90.
lonnumber-180–180.
units"metric" | "imperial"daysinteger1–16.
hoursinteger1–48.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "weather_forecast",
"arguments": {
"place": "example",
"lat": 1,
"lon": 1
}
}
}'weather_places_searchPlaces 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
Arguments
querystringrequired2–100 characters.
countinteger1–10.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "weather_places_search",
"arguments": {
"query": "example"
}
}
}'food_recipes_searchThe 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
Arguments
querystringUp to 200 characters.
cuisineanycourseanydietanymaxMinutesinteger1–10000.
ingredientstringUp to 60 characters.
favouritesbooleanlimitinteger1–100.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_recipes_search",
"arguments": {
"query": "example",
"cuisine": "example",
"course": "example"
}
}
}'food_recipe_getOne recipe in full: ingredients (scaled to servings when given), numbered steps, notes and its source.
Scope food:read · read-only
Arguments
recipeIdstringrequiredUp to 40 characters.
servingsinteger1–100.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_recipe_get",
"arguments": {
"recipeId": "<recipeId>"
}
}
}'food_suggestionsRecipe 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
Arguments
maxMinutesinteger5–600.
courseanylimitinteger1–30.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_suggestions",
"arguments": {
"maxMinutes": 1,
"course": "example",
"limit": 1
}
}
}'food_what_can_i_cookRecipes 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_what_can_i_cook",
"arguments": {}
}
}'food_plan_getThe 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
Arguments
fromstringrequiredMatches
^\d{4}-\d{2}-\d{2}$.tostringrequiredMatches
^\d{4}-\d{2}-\d{2}$.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_plan_get",
"arguments": {
"from": "example",
"to": "example"
}
}
}'food_substituteSubstitutes 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
Arguments
ingredientstringrequired1–100 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_substitute",
"arguments": {
"ingredient": "example"
}
}
}'food_use_soonWhat 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
Arguments
daysinteger1–14.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_use_soon",
"arguments": {
"days": 1
}
}
}'food_spendingThe 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
Arguments
monthsinteger1–24.
itemstringUp to 100 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_spending",
"arguments": {
"months": 1,
"item": "example"
}
}
}'food_plan_mealsPlans 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
Arguments
fromstringMatches
^\d{4}-\d{2}-\d{2}$.daysinteger1–14.
meal"breakfast" | "lunch" | "dinner" | "snack"maxMinutesinteger5–600.
diets[]Up to 5 items.
budgetnumber1–100000.
applyboolean
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_plan_meals",
"arguments": {
"from": "example",
"days": 1,
"meal": "breakfast"
}
}
}'food_plan_addPuts a meal on the household's plan: a recipe (by id) or a note such as "Leftovers" or "Eating out".
Scope food:read
Arguments
daystringrequiredMatches
^\d{4}-\d{2}-\d{2}$.meal"breakfast" | "lunch" | "dinner" | "snack"requiredrecipeIdstringUp to 40 characters.
titlestringUp to 200 characters.
servingsinteger1–100.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_plan_add",
"arguments": {
"day": "example",
"meal": "breakfast"
}
}
}'food_shopping_listMakes 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
Arguments
fromPlanobjectfromPlan.fromstringrequiredMatches
^\d{4}-\d{2}-\d{2}$.fromPlan.tostringrequiredMatches
^\d{4}-\d{2}-\d{2}$.recipesobject[]Up to 30 items.
recipes[].recipeIdstringrequiredUp to 40 characters.
recipes[].servingsinteger1–100.
listIdstringUp to 40 characters.
namestringUp to 100 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_shopping_list",
"arguments": {
"fromPlan": {
"from": "example",
"to": "example"
},
"recipes": [
{
"recipeId": "<recipeId>"
}
],
"listId": "<listId>"
}
}
}'food_list_addAdds things to a shopping list (the most recent one unless listId says), one item per string ("2 L milk", "dishwashing liquid").
Scope food:read
Arguments
itemsstring[]required1–50 items. Each 1–200 characters.
listIdstringUp to 40 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_list_add",
"arguments": {
"items": [
"example"
]
}
}
}'food_pantry_addRecords 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
Arguments
itemsstring[]required1–50 items. Each 1–200 characters.
useBystringMatches
^\d{4}-\d{2}-\d{2}$.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_pantry_add",
"arguments": {
"items": [
"example"
]
}
}
}'food_recipe_saveSaves 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
Arguments
urlstringUp to 2,000 characters. URL.
titlestringUp to 200 characters.
servingsinteger1–100.
ingredientsstringUp to 20,000 characters.
stepsstringUp to 40,000 characters.
minutesinteger1–2000.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "food_recipe_save",
"arguments": {
"url": "https://example.com",
"title": "Example",
"servings": 1
}
}
}'drive_searchScope none: every key gets it · read-only
Arguments
querystringrequired1–200 characters.
type"folder" | "document" | "spreadsheet" | "presentation" | "pdf" | "image" | "video" | "audio" | "archive" | "code" | "text" | "other"limitinteger1–100.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "drive_search",
"arguments": {
"query": "example"
}
}
}'drive_listScope none: every key gets it · read-only
Arguments
folderIdstringUp to 64 characters.
limitinteger1–500.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "drive_list",
"arguments": {
"folderId": "<folderId>",
"limit": 1
}
}
}'drive_getDetails 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
Arguments
itemIdstringrequiredUp to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "drive_get",
"arguments": {
"itemId": "<itemId>"
}
}
}'drive_readRead 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
Arguments
itemIdstringrequiredUp to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "drive_read",
"arguments": {
"itemId": "<itemId>"
}
}
}'drive_download_urlA link to download a file, valid for an hour.
Scope none: every key gets it · read-only
Arguments
itemIdstringrequiredUp to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "drive_download_url",
"arguments": {
"itemId": "<itemId>"
}
}
}'drive_folder_createCreate a folder. Without parentId: at the top of My Drive. Fails if the name is taken there.
Scope none: every key gets it
Arguments
namestringrequired1–255 characters.
parentIdstringUp to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "drive_folder_create",
"arguments": {
"name": "Example"
}
}
}'drive_file_writeSave 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
Arguments
namestringrequired1–255 characters.
contentstringrequiredUp to 1,048,576 characters.
parentIdstringUp to 64 characters.
mimestringUp to 100 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "drive_file_write",
"arguments": {
"name": "Example",
"content": "example"
}
}
}'document_createCreate 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
Arguments
titlestringrequired1–255 characters.
folderIdstringUp to 64 characters.
markdownstringUp to 200,000 characters.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "document_create",
"arguments": {
"title": "Example",
"space": {}
}
}
}'document_readRead 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
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.format"markdown" | "outline"spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "document_read",
"arguments": {
"fileId": "<fileId>",
"space": {}
}
}
}'document_editChange 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
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.operations(object | object | object | object)[]required1–50 items.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "document_edit",
"arguments": {
"fileId": "<fileId>",
"operations": [
{}
],
"space": {}
}
}
}'document_commentComment on a document: on the text quoted (quote, a short passage as it appears) or on the whole document. Mention someone as @[Name](usr_…).
Scope none: every key gets it
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.bodystringrequired1–8,000 characters.
quotestringUp to 500 characters.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "document_comment",
"arguments": {
"fileId": "<fileId>",
"body": "example",
"space": {}
}
}
}'sheet_createCreate 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
Arguments
titlestringrequired1–255 characters.
folderIdstringUp to 64 characters.
sheetsobject[]Up to 20 items.
sheets[].namestringrequired1–100 characters.
sheets[].rows((string | number | boolean | null)[])[]requiredUp to 5,000 items. Each up to 200 items, each up to 50,000 characters.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "sheet_create",
"arguments": {
"title": "Example",
"space": {}
}
}
}'sheet_readRead 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
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.rangestringrequired2–100 characters.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "sheet_read",
"arguments": {
"fileId": "<fileId>",
"range": "example",
"space": {}
}
}
}'sheet_writeWrite 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
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.rangestringrequired2–100 characters.
values((string | number | boolean | null)[])[]required1–5,000 items. Each up to 200 items, each up to 50,000 characters.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "sheet_write",
"arguments": {
"fileId": "<fileId>",
"range": "example",
"values": [
[
"example"
]
],
"space": {}
}
}
}'sheet_add_chartAdd 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
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.rangestringrequired2–100 characters.
type"column" | "bar" | "stackedColumn" | "stackedBar" | "line" | "area" | "pie" | "donut" | "scatter"requiredtitlestringUp to 200 characters.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "sheet_add_chart",
"arguments": {
"fileId": "<fileId>",
"range": "example",
"type": "column",
"space": {}
}
}
}'slides_createCreate 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
Arguments
titlestringrequired1–255 characters.
outlineobject[]required1–60 items.
outline[].titlestringrequiredUp to 300 characters.
outline[].bulletsstring[]Up to 12 items. Each up to 500 characters.
outline[].notesstringUp to 5,000 characters.
theme"plain" | "bold" | "editorial" | "pitch"folderIdstringUp to 64 characters.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "slides_create",
"arguments": {
"title": "Example",
"outline": [
{
"title": "Example"
}
],
"space": {}
}
}
}'slides_readRead a presentation: each slide's title, text and speaker notes, in order.
Scope none: every key gets it · read-only
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "slides_read",
"arguments": {
"fileId": "<fileId>",
"space": {}
}
}
}'slides_addAdd slides to a presentation after the slide after (a slide id from slides_read; the end without it).
Scope none: every key gets it
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.afterstringUp to 40 characters.
slidesobject[]required1–40 items.
slides[].titlestringrequiredUp to 300 characters.
slides[].bulletsstring[]Up to 12 items. Each up to 500 characters.
slides[].notesstringUp to 5,000 characters.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "slides_add",
"arguments": {
"fileId": "<fileId>",
"slides": [
{
"title": "Example"
}
],
"space": {}
}
}
}'office_searchFind 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
Arguments
querystringrequired1–200 characters.
kind"document" | "spreadsheet" | "presentation" | "video"limitinteger1–50.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "office_search",
"arguments": {
"query": "example",
"space": {}
}
}
}'office_exportA 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
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.format"docx" | "odt" | "pdf" | "md" | "txt" | "xlsx" | "ods" | "csv" | "tsv" | "pptx" | "odp" | "png"requiredspaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "office_export",
"arguments": {
"fileId": "<fileId>",
"format": "docx",
"space": {}
}
}
}'video_readRead 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
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "video_read",
"arguments": {
"fileId": "<fileId>",
"space": {}
}
}
}'video_createMake 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
Arguments
titlestringrequired1–255 characters.
clipsobject[]required1–200 items.
clips[].fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.clips[].innumber≥ 0.
clips[].outnumber≥ 0.
folderIdstringUp to 64 characters.
presetanyspaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "video_create",
"arguments": {
"title": "Example",
"clips": [
{
"fileId": "<fileId>"
}
],
"space": {}
}
}
}'video_transcribeTranscribe 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
Arguments
fileIdstringrequiredMatches
^fil_[0-9a-z]{6,40}$.mediaIdstring4–64 characters.
languagestring2–10 characters.
speakersinteger0–30.
transcriptionIdstringUp to 64 characters.
spaceany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "video_transcribe",
"arguments": {
"fileId": "<fileId>",
"space": {}
}
}
}'photos_albumsList the albums in your photo library (title, number of photos, id).
Scope none: every key gets it · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "photos_albums",
"arguments": {}
}
}'photos_albumThe photos in one album, in the album's order (up to 200).
Scope none: every key gets it · read-only
Arguments
albumIdstringrequired3–64 characters.
limitinteger1–200.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "photos_album",
"arguments": {
"albumId": "<albumId>"
}
}
}'photos_searchFind 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
Arguments
fromstringUp to 40 characters.
tostringUp to 40 characters.
nearobjectnear.latnumberrequired-90–90.
near.lonnumberrequired-180–180.
near.kmnumber0.1–5000.
bboxobjectbbox.southnumberrequired-90–90.
bbox.westnumberrequired-180–180.
bbox.northnumberrequired-90–90.
bbox.eastnumberrequired-180–180.
textstringUp to 200 characters.
type"photo" | "video" | "live" | "raw"favouritesbooleanincludeArchivebooleanlimitinteger1–200.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "photos_search",
"arguments": {
"from": "example",
"to": "example",
"near": {
"lat": 1,
"lon": 1
}
}
}
}'photos_getA 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
Arguments
photoIdstringrequired3–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "photos_get",
"arguments": {
"photoId": "<photoId>"
}
}
}'mirage_serversThe 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mirage_servers",
"arguments": {}
}
}'mirage_inboxWhat 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
Arguments
limitinteger1–25.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mirage_inbox",
"arguments": {
"limit": 1
}
}
}'mirage_messagesA 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
Arguments
channelIdstringrequired1–64 characters.
beforestringUp to 64 characters.
limitinteger1–50.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mirage_messages",
"arguments": {
"channelId": "<channelId>"
}
}
}'mirage_leaderboardsA Mirage server's leaderboards (docs: Mirage → Leaderboards and courses): its boards with what each ranks (efficiency, distance, smoothness, charging habits and the like; laps and speeds only on closed circuits), and, with boardId, that board's standings for its current period (offset: -1 for the one before), with the person's own place. Courses with courseId. People who chose a stand-in name show by it.
Scope none: every key gets it · read-only
Arguments
serverIdstringrequired1–64 characters.
boardIdstringUp to 64 characters.
courseIdstringUp to 64 characters.
offsetinteger-52–0.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mirage_leaderboards",
"arguments": {
"serverId": "<serverId>"
}
}
}'mirage_searchSearch 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
Arguments
serverIdstringrequired1–64 characters.
querystringUp to 500 characters.
fromstringUp to 64 characters.
instringUp to 64 characters.
has("link" | "file" | "image" | "video")[]Up to 4 items.
limitinteger1–25.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mirage_search",
"arguments": {
"serverId": "<serverId>"
}
}
}'mirage_sendSend 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
Arguments
channelIdstringrequired1–64 characters.
contentstringrequired1–4,000 characters.
replyTostringUp to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mirage_send",
"arguments": {
"channelId": "<channelId>",
"content": "example"
}
}
}'health_summaryThe 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "health_summary",
"arguments": {}
}
}'health_metricOne 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
Arguments
metricIdstringrequiredfromstringrequiredtostringrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "health_metric",
"arguments": {
"metricId": "<metricId>",
"from": "example",
"to": "example"
}
}
}'circles_listThe person's circles (household, family, friends): name, kind, their role and size. People in a circle can be shared with without waiting to accept.
Scope sharing:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "circles_list",
"arguments": {}
}
}'findmy_peopleFind My: where the people who share their location with the person are (latitude, longitude, accuracy in metres, when, and battery where their phone gives it; approximate ones are about a kilometre), who the person shares with and on what terms, and who asked. A location that can't be shown is null: say you can't see it, never guess why. Only what each person lets the assistant see.
Scope maps:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "findmy_people",
"arguments": {}
}
}'vehicles_on_mapWhere the person's own cars and the cars shared with them are: name, state, battery, when last seen, and the position as each owner lets them see it (exact, approximate, or none). Never more than the Vehicles app shows them.
Scope vehicles:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "vehicles_on_map",
"arguments": {}
}
}'findmy_stopStop sharing the person's location with someone. They are told. ALWAYS ASKS: nothing happens until confirm is true.
Scope sharing:write · destructive
Arguments
userIdstringrequiredUp to 80 characters.
confirmboolean
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "findmy_stop",
"arguments": {
"userId": "<userId>"
}
}
}'findmy_hideHide the person's location from one person (give userId) or from everyone (leave it out): until a time, until they turn it back on (forever), or off altogether (everyone only); or show it again (show). Nobody is told. ALWAYS ASKS: nothing happens until confirm is true.
Scope sharing:write
Arguments
userIdstringUp to 80 characters.
untilstring | "forever" | "off" | "show"requiredMatches
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.confirmboolean
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "findmy_hide",
"arguments": {
"until": "example"
}
}
}'maps_directionsScope none: every key gets it · read-only
Arguments
tostringrequired1–200 characters. Trimmed.
fromstring1–200 characters. Trimmed.
mode"drive" | "walk" | "cycle"
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "maps_directions",
"arguments": {
"to": "example"
}
}
}'findmy_etaThe person's own shared ETAs that still run (or arrived in the last half hour): where to, arrival time, distance left, until when it's shared and how much longer it can be, who follows it, and how many links; and the people they could share with (canShareWith, user ids for findmy_eta_start). Trips other people share with the person stay in the Maps app.
Scope none: every key gets it · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "findmy_eta",
"arguments": {}
}
}'findmy_eta_startShare the person's ETA to a place with people (user ids from findmy_eta's canShareWith): they see where the person is, where they're going and when they arrive, until they arrive, stop, or it ends. To someone (their user id), only people who may see that person see where; the others see the arrival time and distance left. From "me" (the person's phone) unless told otherwise. Someone outside the person's circles accepts first. It moves while Maps' Directions is open with the trip started (the answer's link). ALWAYS ASKS: this sends the person's location to others; nothing happens until confirm is true, set only after the person has agreed to exactly this.
Scope none: every key gets it
Arguments
tostringrequired1–200 characters. Trimmed.
peoplestring[]required1–50 items. Each matches
^usr_[A-Za-z0-9]{6,60}$.mode"drive" | "walk" | "cycle"fromstring1–200 characters. Trimmed.
confirmboolean
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "findmy_eta_start",
"arguments": {
"to": "example",
"people": [
"example"
]
}
}
}'findmy_eta_stopStop sharing one of the person's ETAs: with everyone (leave userId out), or with one person. It ends for them at once. ALWAYS ASKS: nothing happens until confirm is true.
Scope none: every key gets it · destructive
Arguments
tripIdstringrequiredMatches
^eta_[0-9a-z]{26}$.userIdstringMatches
^usr_[A-Za-z0-9]{6,60}$.confirmboolean
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "findmy_eta_stop",
"arguments": {
"tripId": "<tripId>"
}
}
}'findmy_eta_extendShare one of the person's running ETAs for longer: its end moves this many minutes later, up to the longest a shared ETA lasts from its start. ALWAYS ASKS: nothing happens until confirm is true.
Scope none: every key gets it
Arguments
tripIdstringrequiredMatches
^eta_[0-9a-z]{26}$.minutesintegerrequired5–1440.
confirmboolean
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "findmy_eta_extend",
"arguments": {
"tripId": "<tripId>",
"minutes": 1
}
}
}'vehicle_log_driveLog a drive by hand for one of the person's cars (e.g. 'log a 34 km business drive to Geelong this morning'): when it started and ended, the distance in km (or the odometer at the start and end), where from and to, business or personal, a purpose and notes. It shows in Drives and the Logbook marked as logged by hand. Refused when it overlaps a drive the car already has.
Scope none: every key gets it
Arguments
vehiclestring1–80 characters.
startedAtstringrequiredMatches
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.endedAtstringMatches
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.minutesinteger1–1440.
distanceKmnumber0–2000.
startOdometerKmnumber0–2000000.
endOdometerKmnumber0–2000000.
fromstring1–120 characters.
tostring1–120 characters.
class"business" | "personal" | "commute" | "private"purposestringUp to 120 characters.
notesstringUp to 500 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "vehicle_log_drive",
"arguments": {
"startedAt": "2026-01-01"
}
}
}'vehicle_log_chargeLog a charge (kWh added) or a refuel (litres) by hand for one of the person's cars: when, where (home, work, supercharger or public), what it cost in cents of their currency, the odometer, and notes. Shows in Charging and Costs marked as logged by hand.
Scope none: every key gets it
Arguments
vehiclestring1–80 characters.
type"charge" | "refuel"requiredstartedAtstringrequiredMatches
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.endedAtstringMatches
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.kind"home" | "work" | "supercharger" | "other"kwhAddednumber0–250.
litresnumber0–500.
costCentsinteger0–100000000.
odometerKmnumber0–2000000.
placestring1–120 characters.
notesstringUp to 500 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "vehicle_log_charge",
"arguments": {
"type": "charge",
"startedAt": "2026-01-01"
}
}
}'vehicle_log_entryLog an odometer reading, an expense (toll, parking, insurance, registration, cleaning, other; its cost in cents) or a service (its cost, and the maintenance it covered) for one of the person's cars. Services update Maintenance's last-done dates.
Scope none: every key gets it
Arguments
vehiclestring1–80 characters.
kind"odometer" | "expense" | "service"requiredatstringrequiredMatches
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.odometerKmnumber0–2000000.
costCentsinteger0–100000000.
category"toll" | "parking" | "insurance" | "registration" | "cleaning" | "other"items("tyre_rotation" | "brake_fluid" | "brake_calipers" | "cabin_filter" | "ac_desiccant")[]Up to 5 items.
notestringUp to 500 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "vehicle_log_entry",
"arguments": {
"kind": "odometer",
"at": "example"
}
}
}'context_getRead a context entry by namespace and key.
Scope knowledge:read · read-only
Arguments
namespacestringrequired1–128 characters.
keystringrequired1–512 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "context_get",
"arguments": {
"namespace": "example",
"key": "example"
}
}
}'context_listList context entries in a namespace, optionally filtered by key prefix.
Scope knowledge:read · read-only
Arguments
namespacestringrequired1–128 characters.
prefixstringUp to 512 characters.
cursorstring
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "context_list",
"arguments": {
"namespace": "example"
}
}
}'pages_listList Notes pages (the organization's pages and databases) under a parent (default: top level).
Scope knowledge:read · read-only
Arguments
parentIdstring
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "pages_list",
"arguments": {
"parentId": "<parentId>"
}
}
}'page_getRead 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
Arguments
pageIdstringrequired1–200 characters. Trimmed.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "page_get",
"arguments": {
"pageId": "<pageId>"
}
}
}'page_searchSearch Notes pages by title and text. Returns up to 20 matches with snippets.
Scope knowledge:read · read-only
Arguments
querystringrequired1–200 characters. Trimmed.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "page_search",
"arguments": {
"query": "example"
}
}
}'context_putCreate or replace a context entry. Use namespaces to group related entries.
Scope knowledge:write
Arguments
namespacestringrequired1–128 characters.
keystringrequired1–512 characters.
valuestringrequiredUp to 100,000 characters.
tagsstring[]Up to 20 items. Each up to 64 characters.
ttlSecondsinteger> 0.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "context_put",
"arguments": {
"namespace": "example",
"key": "example",
"value": "example"
}
}
}'context_deleteDelete a context entry.
Scope knowledge:write · destructive
Arguments
namespacestringrequired1–128 characters.
keystringrequired1–512 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "context_delete",
"arguments": {
"namespace": "example",
"key": "example"
}
}
}'page_upsertCreate 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
Arguments
pageIdstring1–200 characters. Trimmed.
parentIdstring1–200 characters. Trimmed.
titlestringUp to 200 characters.
iconstringUp to 16 characters.
fullWidthbooleanmarkdownstringrequiredUp to 990,000 characters.
baseVersioninteger≥ 0.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "page_upsert",
"arguments": {
"markdown": "example"
}
}
}'agent_job_createQueue 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")
Arguments
type"http.batch" | "exec" | "browser.batch"requiredlabelstringUp to 120 characters.
hostsstring[]Default
[]. Up to 50 items. Each matches^(\*\.)?([a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$.inputobjectrequiredValues: any JSON.
callbackUrlstringURL.
callbackSecretstringUp to 200 characters.
ttlSecondsinteger60–604800.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "agent_job_create",
"arguments": {
"type": "http.batch",
"input": {}
}
}
}'agent_job_cancelCancel 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
Arguments
jobIdstringrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "agent_job_cancel",
"arguments": {
"jobId": "<jobId>"
}
}
}'agent_job_getStatus of an agent job, with a temporary results URL once done.
Scope agents:read · read-only
Arguments
jobIdstringrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "agent_job_get",
"arguments": {
"jobId": "<jobId>"
}
}
}'issues_metaIssue 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issues_meta",
"arguments": {}
}
}'issues_searchSearch 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
Arguments
jqlstringrequiredUp to 10,000 characters.
startAtinteger0–100000.
maxResultsinteger1–100.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issues_search",
"arguments": {
"jql": "example"
}
}
}'issues_reportReport 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
Arguments
type"createdVsResolved" | "cumulativeFlow" | "controlChart" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "timeTracking" | "workload" | "epicProgress" | "versionReport"requiredjqlstringrequiredUp to 10,000 characters.
daysinteger1–730.
interval"day" | "week" | "month"groupBystringUp to 64 characters.
groupBy2stringUp to 64 characters.
versionstringUp to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issues_report",
"arguments": {
"type": "createdVsResolved",
"jql": "example"
}
}
}'issues_agendaYour 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
Arguments
fromstringrequiredMatches
^\d{4}-\d{2}-\d{2}$.tostringrequiredMatches
^\d{4}-\d{2}-\d{2}$.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issues_agenda",
"arguments": {
"from": "example",
"to": "example"
}
}
}'issue_getOne issue by key (e.g. WEB-12): fields, description (Markdown), comments, links, subtasks and the transitions available now.
Scope issues:read · read-only
Arguments
keystringrequired1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_get",
"arguments": {
"key": "example"
}
}
}'boards_listBoards with their type (scrum or kanban), spaces and columns, plus the open sprints of scrum boards.
Scope issues:read · read-only
Arguments
spacestringUp to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "boards_list",
"arguments": {
"space": "example"
}
}
}'board_getA board's cards by column: the active sprint for scrum boards, the flow for kanban boards.
Scope issues:read · read-only
Arguments
boardIdstringrequired1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "board_get",
"arguments": {
"boardId": "<boardId>"
}
}
}'filters_listSaved filters shared with the organization or with this key's teams: name and query (run one with issues_search).
Scope issues:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "filters_list",
"arguments": {}
}
}'sprint_createCreate a future sprint on a scrum board (see boards_list for board ids).
Scope issues:write
Arguments
boardIdstringrequired1–64 characters.
namestringUp to 80 characters.
goalstringUp to 1,000 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "sprint_create",
"arguments": {
"boardId": "<boardId>"
}
}
}'sprint_planPut issues (keys) into a sprint, or back into the backlog with sprintId null.
Scope issues:write
Arguments
issuesstring[]required1–100 items. Each up to 64 characters.
sprintIdstringrequiredor nullUp to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "sprint_plan",
"arguments": {
"issues": [
"example"
],
"sprintId": "<sprintId>"
}
}
}'sprint_startStart a future sprint. endDate is an ISO date or date-time.
Scope issues:write
Arguments
sprintIdstringrequired1–64 characters.
endDatestringrequired10–40 characters.
goalstringUp to 1,000 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "sprint_start",
"arguments": {
"sprintId": "<sprintId>",
"endDate": "2026-01-01"
}
}
}'sprint_completeComplete an active sprint. Open issues move to moveTo: a future sprint id, "new" (a new sprint) or "backlog".
Scope issues:write
Arguments
sprintIdstringrequired1–64 characters.
moveTostringrequired1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "sprint_complete",
"arguments": {
"sprintId": "<sprintId>",
"moveTo": "example"
}
}
}'issue_createCreate 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. location is where the work is: { address } (looked up and kept) or { lat, lon, label }.
Scope issues:write
Arguments
spacestringUp to 64 characters.
summarystringrequired1–255 characters. Trimmed.
typeany JSONrequireddescriptionany JSONrequiredpriorityany JSONrequiredassigneeany JSONrequiredreporterany JSONrequiredlabelsany JSONrequiredcomponentsany JSONrequiredfixVersionsany JSONrequiredaffectsVersionsany JSONrequireddueDateany JSONrequiredstartDateany JSONrequiredstoryPointsany JSONrequiredoriginalEstimateany JSONrequiredremainingEstimateany JSONrequiredenvironmentany JSONrequiredlocationany JSONrequiredparentany JSONrequiredsprintany JSONrequiredsecurityLevelany JSONrequiredfieldsany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_create",
"arguments": {
"summary": "Example",
"type": {},
"description": {},
"priority": {},
"assignee": {},
"reporter": {},
"labels": {},
"components": {},
"fixVersions": {},
"affectsVersions": {},
"dueDate": {},
"startDate": {},
"storyPoints": {},
"originalEstimate": {},
"remainingEstimate": {},
"environment": {},
"location": {},
"parent": {},
"sprint": {},
"securityLevel": {},
"fields": {}
}
}
}'issue_updateChange an issue's fields (not its status: use issue_transition). Only the fields given change; null clears a field. labels replaces the labels; addLabels and removeLabels change some and keep the rest. parent sets the epic (or, for a subtask, its issue). location: { address } (looked up and kept), { lat, lon, label }, or null to clear.
Scope issues:write
Arguments
keystringrequired1–64 characters.
addLabelsstring[]Up to 30 items. Each up to 255 characters.
removeLabelsstring[]Up to 30 items. Each up to 255 characters.
summaryany JSONrequiredtypeany JSONrequireddescriptionany JSONrequiredpriorityany JSONrequiredassigneeany JSONrequiredreporterany JSONrequiredlabelsany JSONrequiredcomponentsany JSONrequiredfixVersionsany JSONrequiredaffectsVersionsany JSONrequireddueDateany JSONrequiredstartDateany JSONrequiredstoryPointsany JSONrequiredoriginalEstimateany JSONrequiredremainingEstimateany JSONrequiredenvironmentany JSONrequiredlocationany JSONrequiredparentany JSONrequiredsprintany JSONrequiredsecurityLevelany JSONrequiredfieldsany JSONrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_update",
"arguments": {
"key": "example",
"summary": {},
"type": {},
"description": {},
"priority": {},
"assignee": {},
"reporter": {},
"labels": {},
"components": {},
"fixVersions": {},
"affectsVersions": {},
"dueDate": {},
"startDate": {},
"storyPoints": {},
"originalEstimate": {},
"remainingEstimate": {},
"environment": {},
"location": {},
"parent": {},
"sprint": {},
"securityLevel": {},
"fields": {}
}
}
}'issues_bulkOne change to many issues: issues (keys) or every issue a jql query matches, at most 200. Operations: edit (fields, as issue_update), labels (addLabels, removeLabels), transition (transition by name or target status, e.g. "In Progress" or "Done", with optional fields and comment), comment (comment, Markdown), move (space, optional type), watch, unwatch. Each issue is changed on its own and reports its own result. silent: true notifies nobody of the changes (history, automation and webhooks still run): for tidying many issues at once. Delete issues one at a time with issue_delete.
Scope issues:write
Arguments
issuesstring[]1–200 items. Each up to 64 characters.
jqlstringUp to 10,000 characters.
operation"edit" | "labels" | "transition" | "comment" | "move" | "watch" | "unwatch"requiredfieldsobjectfields.typestringUp to 80 characters.
fields.summarystringUp to 255 characters.
fields.descriptionstringUp to 65,536 characters.
fields.prioritystringor nullUp to 80 characters.
fields.assigneestringor nullUp to 320 characters.
fields.reporterstringor nullUp to 320 characters.
fields.labelsstring[]Up to 30 items. Each up to 64 characters.
fields.componentsstring[]Up to 50 items. Each up to 100 characters.
fields.fixVersionsstring[]Up to 50 items. Each up to 100 characters.
fields.affectsVersionsstring[]Up to 50 items. Each up to 100 characters.
fields.dueDatestringor nullMatches
^\d{4}-\d{2}-\d{2}$.fields.startDatestringor nullMatches
^\d{4}-\d{2}-\d{2}$.fields.storyPointsnumberor null0–10000.
fields.originalEstimatenumber | stringor null0–315360000. Up to 40 characters.
fields.remainingEstimatenumber | stringor null0–315360000. Up to 40 characters.
fields.environmentstringor nullUp to 32,768 characters.
fields.locationobject | objector nullfields.parentstringor nullUp to 64 characters.
fields.sprintstringor nullUp to 100 characters.
fields.securityLevelstringor nullUp to 80 characters.
fields.resolutionstringor nullUp to 80 characters.
fields.fieldsobjectKeys up to 100 characters. Values: any JSON.
fields.requestTypestringUp to 80 characters.
fields.participantsstring[]Up to 100 items. Each up to 320 characters.
transitionstringUp to 80 characters.
commentstringUp to 32,768 characters.
addLabelsstring[]Up to 30 items. Each up to 255 characters.
removeLabelsstring[]Up to 30 items. Each up to 255 characters.
spacestringUp to 64 characters.
typestringUp to 80 characters.
silentboolean
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issues_bulk",
"arguments": {
"operation": "edit"
}
}
}'issue_transitionMove 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
Arguments
keystringrequired1–64 characters.
transitionstringrequired1–80 characters.
fieldsobjectfields.typestringUp to 80 characters.
fields.summarystringUp to 255 characters.
fields.descriptionstringUp to 65,536 characters.
fields.prioritystringor nullUp to 80 characters.
fields.assigneestringor nullUp to 320 characters.
fields.reporterstringor nullUp to 320 characters.
fields.labelsstring[]Up to 30 items. Each up to 64 characters.
fields.componentsstring[]Up to 50 items. Each up to 100 characters.
fields.fixVersionsstring[]Up to 50 items. Each up to 100 characters.
fields.affectsVersionsstring[]Up to 50 items. Each up to 100 characters.
fields.dueDatestringor nullMatches
^\d{4}-\d{2}-\d{2}$.fields.startDatestringor nullMatches
^\d{4}-\d{2}-\d{2}$.fields.storyPointsnumberor null0–10000.
fields.originalEstimatenumber | stringor null0–315360000. Up to 40 characters.
fields.remainingEstimatenumber | stringor null0–315360000. Up to 40 characters.
fields.environmentstringor nullUp to 32,768 characters.
fields.locationobject | objector nullfields.parentstringor nullUp to 64 characters.
fields.sprintstringor nullUp to 100 characters.
fields.securityLevelstringor nullUp to 80 characters.
fields.resolutionstringor nullUp to 80 characters.
fields.fieldsobjectKeys up to 100 characters. Values: any JSON.
fields.requestTypestringUp to 80 characters.
fields.participantsstring[]Up to 100 items. Each up to 320 characters.
commentstringUp to 32,768 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_transition",
"arguments": {
"key": "example",
"transition": "example"
}
}
}'issue_commentAdd a Markdown comment to an issue. internal comments (service desk spaces) are visible to agents only.
Scope issues:write
Arguments
keystringrequired1–64 characters.
bodystringrequired1–32,768 characters.
internalboolean
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_comment",
"arguments": {
"key": "example",
"body": "example"
}
}
}'issue_comment_editChange a comment's Markdown (issue_get lists comments with their commentId). Your own comments, or anyone's where the space lets you edit all comments.
Scope issues:write
Arguments
keystringrequired1–64 characters.
commentIdstringrequired1–64 characters.
bodystringrequired1–32,768 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_comment_edit",
"arguments": {
"key": "example",
"commentId": "<commentId>",
"body": "example"
}
}
}'issue_comment_deleteDelete a comment (your own, or anyone's where the space lets you delete all comments).
Scope issues:write · destructive
Arguments
keystringrequired1–64 characters.
commentIdstringrequired1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_comment_delete",
"arguments": {
"key": "example",
"commentId": "<commentId>"
}
}
}'issue_linkLink 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
Arguments
keystringrequired1–64 characters.
typestringrequired1–80 characters.
issuestringrequired1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_link",
"arguments": {
"key": "example",
"type": "example",
"issue": "example"
}
}
}'issue_unlinkRemove a link between two issues: key is either end, linkId from issue_get's links.
Scope issues:write
Arguments
keystringrequired1–64 characters.
linkIdstringrequired1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_unlink",
"arguments": {
"key": "example",
"linkId": "<linkId>"
}
}
}'issue_worklogLog work on an issue, e.g. timeSpent "1h 30m". The remaining estimate goes down by the same amount.
Scope issues:write
Arguments
keystringrequired1–64 characters.
timeSpentstringrequired1–40 characters.
commentstringUp to 4,000 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_worklog",
"arguments": {
"key": "example",
"timeSpent": "example"
}
}
}'issues_rankReorder issues in the backlog: put issues (keys, in order) right before or right after another issue.
Scope issues:write
Arguments
issuesstring[]required1–50 items. Each up to 64 characters.
beforestringUp to 64 characters.
afterstringUp to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issues_rank",
"arguments": {
"issues": [
"example"
]
}
}
}'issue_moveMove an issue (and its subtasks) to another space. It gets a new key; the old key keeps resolving.
Scope issues:write
Arguments
keystringrequired1–64 characters.
spacestringrequired1–64 characters.
typestringUp to 80 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_move",
"arguments": {
"key": "example",
"space": "example"
}
}
}'issue_deleteDelete an issue with its comments, attachments, work logs and subtasks. This can't be undone.
Scope issues:write · destructive
Arguments
keystringrequired1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "issue_delete",
"arguments": {
"key": "example"
}
}
}'space_createCreate a space (project) from a template: scrum, kanban, bugs, service or basic. Keys are 2–10 capital letters or digits.
Scope issues:write
Arguments
keystringrequired2–10 characters.
namestringrequired1–80 characters. Trimmed.
template"scrum" | "kanban" | "bugs" | "service" | "basic"requireddescriptionstringUp to 2,000 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "space_create",
"arguments": {
"key": "example",
"name": "Example",
"template": "scrum"
}
}
}'crm_objectsThe 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "crm_objects",
"arguments": {}
}
}'crm_searchFind 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
Arguments
querystringrequired1–200 characters.
objectsstring[]Up to 10 items. Each up to 40 characters.
limitinteger1–50.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "crm_search",
"arguments": {
"query": "example"
}
}
}'crm_records_listScope crm:read · read-only
Arguments
objectstringrequiredUp to 40 characters.
filtersobject[]Up to 10 items.
filters[].fieldstringrequiredUp to 60 characters.
filters[].op"eq" | "ne" | "in" | "gt" | "gte" | "lt" | "lte" | "contains" | "startsWith" | "blank" | "notBlank"requiredfilters[].valueany JSONsortobjectsort.fieldstringrequiredUp to 60 characters.
sort.dir"asc" | "desc"requiredlimitinteger1–100.
cursorstringUp to 8,000 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "crm_records_list",
"arguments": {
"object": "example"
}
}
}'crm_record_getRead 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
Arguments
idstringrequiredUp to 40 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "crm_record_get",
"arguments": {
"id": "<id>"
}
}
}'crm_record_createCreate 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
Arguments
objectstringrequiredUp to 40 characters.
fieldsobjectrequiredKeys up to 60 characters. Values: any JSON.
ownerIdstringUp to 40 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "crm_record_create",
"arguments": {
"object": "example",
"fields": {}
}
}
}'crm_record_updateChange 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
Arguments
idstringrequiredUp to 40 characters.
fieldsobjectKeys up to 60 characters. Values: any JSON.
ownerIdstringUp to 40 characters.
versioninteger
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "crm_record_update",
"arguments": {
"id": "<id>"
}
}
}'crm_activity_logLog 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
Arguments
relatedIdsstring[]required1–24 items. Each up to 40 characters.
type"task" | "call" | "meeting" | "note" | "email"requiredsubjectstringrequired1–255 characters.
bodystringUp to 32,000 characters.
dueDatestringMatches
^\d{4}-\d{2}-\d{2}$.startAtstringUp to 40 characters.
durationMinutesinteger0–100000.
status"open" | "completed"
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "crm_activity_log",
"arguments": {
"relatedIds": [
"example"
],
"type": "task",
"subject": "Example"
}
}
}'crm_pipeline_summaryThe 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "crm_pipeline_summary",
"arguments": {}
}
}'marketing_segments_listThe 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_segments_list",
"arguments": {}
}
}'marketing_segment_getOne segment: its groups (Customers filters, engagement and list conditions) and the last size estimate.
Scope marketing:read · read-only
Arguments
segmentIdstringrequired1–60 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_segment_get",
"arguments": {
"segmentId": "<segmentId>"
}
}
}'marketing_segment_estimateCounts 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
Arguments
segmentIdstringrequired1–60 characters.
channel"email" | "sms"
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_segment_estimate",
"arguments": {
"segmentId": "<segmentId>"
}
}
}'marketing_lists_listMarketing lists: static lists and suppression lists (never sent to), by channel, with member counts.
Scope marketing:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_lists_list",
"arguments": {}
}
}'marketing_campaigns_listMarketing 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
Arguments
status"draft" | "pendingApproval" | "approved" | "scheduled" | "sending" | "sent" | "paused" | "cancelled" | "failed"limitinteger1–100.
cursorstringUp to 2,000 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_campaigns_list",
"arguments": {
"status": "draft",
"limit": 1,
"cursor": "example"
}
}
}'marketing_campaign_getOne 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
Arguments
campaignIdstringrequired1–60 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_campaign_get",
"arguments": {
"campaignId": "<campaignId>"
}
}
}'marketing_journeys_listMarketing 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_journeys_list",
"arguments": {}
}
}'marketing_journey_getOne 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
Arguments
journeyIdstringrequired1–60 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_journey_get",
"arguments": {
"journeyId": "<journeyId>"
}
}
}'marketing_consent_getAn 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
Arguments
addressstringrequired3–254 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_consent_get",
"arguments": {
"address": "example"
}
}
}'marketing_stats_dailyThe 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
Arguments
fromstringMatches
^\d{8}$.tostringMatches
^\d{8}$.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_stats_daily",
"arguments": {
"from": "example",
"to": "example"
}
}
}'marketing_forms_listMarketing 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_forms_list",
"arguments": {}
}
}'marketing_campaign_createDrafts 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
Arguments
namestringrequired1–120 characters.
topicIdstringrequired1–60 characters.
include(object | object)[]requiredUp to 20 items.
exclude(object | object)[]Up to 20 items.
documentobjectdocument.subjectstringrequiredUp to 200 characters.
document.preheaderstringUp to 250 characters.
document.blocksobject[]requiredUp to 200 items. Each values: any JSON.
templateIdstring1–60 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_campaign_create",
"arguments": {
"name": "Example",
"topicId": "<topicId>",
"include": [
{}
]
}
}
}'marketing_campaign_request_approvalAsks 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
Arguments
campaignIdstringrequired1–60 characters.
versionintegerrequired≥ 0.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_campaign_request_approval",
"arguments": {
"campaignId": "<campaignId>",
"version": 1
}
}
}'marketing_journey_createDrafts 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
Arguments
namestringrequired1–120 characters.
descriptionstringUp to 500 characters.
definitionobjectValues: any JSON.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "marketing_journey_create",
"arguments": {
"name": "Example"
}
}
}'aircraft_findWhere 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
Arguments
querystringrequired2–16 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "aircraft_find",
"arguments": {
"query": "example"
}
}
}'aircraft_trackRecorded 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
Arguments
hexstringrequiredMatches
^[0-9a-fA-F]{6}$.hoursnumber0.25–24.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "aircraft_track",
"arguments": {
"hex": "example"
}
}
}'flight_watches_listFlight watches you can see, with targets, areas, which events notify, and when each last fired.
Scope maps:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "flight_watches_list",
"arguments": {}
}
}'flight_logs_listFlights 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
Arguments
watchIdstringrequiredUp to 40 characters.
hexstringUp to 8 characters.
limitinteger1–100.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "flight_logs_list",
"arguments": {
"watchId": "<watchId>"
}
}
}'flight_log_getOne 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
Arguments
watchIdstringrequiredUp to 40 characters.
flightIdstringrequiredUp to 40 characters.
format"summary" | "gpx" | "kml" | "csv"
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "flight_log_get",
"arguments": {
"watchId": "<watchId>",
"flightId": "<flightId>"
}
}
}'flight_watch_eventsRecent events of a flight watch (takeoffs, landings, signal lost or back, areas, orbits, roads followed, thresholds), newest first.
Scope maps:read · read-only
Arguments
watchIdstringrequiredUp to 40 characters.
limitinteger1–100.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "flight_watch_events",
"arguments": {
"watchId": "<watchId>"
}
}
}'maps_locations_listThe 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "maps_locations_list",
"arguments": {}
}
}'my_location_statusWhether 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "my_location_status",
"arguments": {}
}
}'flight_watch_createScope maps:write
Arguments
namestringrequired1–120 characters.
hexstringUp to 8 characters.
registrationstringUp to 16 characters.
callsignstringUp to 16 characters.
typestringUp to 8 characters.
anyAircraftbooleanaircraftClass"helicopter" | "light" | "turboprop" | "jet" | "heavy" | "glider" | "balloon" | "drone"presetstringUp to 40 characters.
nearobjectnear.locationstringrequired2–40 characters.
near.radiusKmnumber0.2–100.
userIdsstring[]Up to 50 items. Each up to 60 characters.
excludeobject[]Up to 20 items.
exclude[].kind"hex" | "registration" | "callsign" | "type"requiredexclude[].valuestringrequired1–16 characters.
areastringUp to 40 characters.
eventsstring[]Up to 16 items.
channels[]groupIdsstring[]Up to 10 items. Each up to 40 characters.
roadRepeatMinutesinteger0–240.
visibility"private" | "org"pinFirstMatchbooleanuntilstringUp to 40 characters.
forHoursnumber0.25–87600.
maxNotificationsinteger1–1000000.
maxFlightsinteger1–100000.
scheduleDaysinteger[]Up to 7 items. Each 0–6.
scheduleStartstringUp to 5 characters.
scheduleEndstringUp to 5 characters.
timeZonestringUp to 64 characters.
logFlightsbooleanlogRetentionDaysinteger0–3650.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "flight_watch_create",
"arguments": {
"name": "Example"
}
}
}'circling_alert_createAlert 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
Arguments
namestringrequired1–120 characters.
whereobjectrequiredwhere.areastringUp to 40 characters.
where.circleobjectwhere.circle.latnumberrequired-90–90.
where.circle.lonnumberrequired-180–180.
where.circle.radiusKmnumberrequired0.5–250.
where.locationIdstringUp to 40 characters.
where.nearMeobjectwhere.nearMe.radiusKmnumberrequired0.5–50.
aircraft"any" | "helicopter" | "light" | "turboprop" | "jet" | "heavy" | "glider" | "balloon" | "drone" | object | objectrequirednoCallsignOnlybooleansensitivity| objectchannels[]smsEventsstring[]Up to 16 items.
groupIdsstring[]Up to 10 items. Each up to 40 characters.
userIdsstring[]Up to 50 items. Each up to 60 characters.
quietHoursobjectquietHours.startstringrequiredUp to 5 characters.
quietHours.endstringrequiredUp to 5 characters.
quietHours.timeZonestringrequiredUp to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "circling_alert_create",
"arguments": {
"name": "Example",
"where": {
"area": "example",
"circle": {
"lat": 1,
"lon": 1,
"radiusKm": 1
},
"locationId": "<locationId>"
},
"aircraft": "any"
}
}
}'maps_location_createAdd 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
Arguments
namestringrequired1–120 characters.
latnumberrequired-90–90.
lonnumberrequired-180–180.
siteRadiusMinteger50–5000.
addressstringUp to 400 characters.
notestringUp to 2,000 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "maps_location_create",
"arguments": {
"name": "Example",
"lat": 1,
"lon": 1
}
}
}'maps_location_updateChange an org alert location (its owner or an org admin). Moving it moves every watch that uses it.
Scope maps:write
Arguments
locationIdstringrequiredUp to 40 characters.
namestring1–120 characters.
latnumber-90–90.
lonnumber-180–180.
siteRadiusMinteger50–5000.
addressstringUp to 400 characters.
notestringUp to 2,000 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "maps_location_update",
"arguments": {
"locationId": "<locationId>"
}
}
}'maps_location_deleteDelete an org alert location (its owner or an org admin). Refused while watches use it; the error names them.
Scope maps:write
Arguments
locationIdstringrequiredUp to 40 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "maps_location_delete",
"arguments": {
"locationId": "<locationId>"
}
}
}'my_location_deleteDelete 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "my_location_delete",
"arguments": {}
}
}'flight_watch_pausePause a flight watch (nothing is evaluated or sent) or resume it with paused: false.
Scope maps:write
Arguments
watchIdstringrequiredUp to 40 characters.
pausedboolean
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "flight_watch_pause",
"arguments": {
"watchId": "<watchId>"
}
}
}'flight_watch_restartStart an ended flight watch again (after its end time, notification or flight limit) with its counters at zero.
Scope maps:write
Arguments
watchIdstringrequiredUp to 40 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "flight_watch_restart",
"arguments": {
"watchId": "<watchId>"
}
}
}'incidents_listCurrent 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
Arguments
nearobjectnear.latnumberrequirednear.lonnumberrequiredbboxobjectbbox.westnumberrequiredbbox.southnumberrequiredbbox.eastnumberrequiredbbox.northnumberrequiredhazards("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")[]minLevel"none" | "advice" | "watch_and_act" | "emergency_warning"state"ACT" | "NSW" | "NT" | "QLD" | "SA" | "TAS" | "VIC" | "WA"limitinteger1–100.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "incidents_list",
"arguments": {
"near": {
"lat": 1,
"lon": 1
},
"bbox": {
"west": 1,
"south": 1,
"east": 1,
"north": 1
},
"hazards": [
"bushfire"
]
}
}
}'incident_getOne 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
Arguments
incidentIdstringrequiredUp to 200 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "incident_get",
"arguments": {
"incidentId": "<incidentId>"
}
}
}'watch_zones_listWatch 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "watch_zones_list",
"arguments": {}
}
}'watch_zone_eventsRecent alerts of a watch zone, newest first, with what was sent.
Scope maps:read · read-only
Arguments
zoneIdstringrequiredUp to 40 characters.
limitinteger1–100.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "watch_zone_events",
"arguments": {
"zoneId": "<zoneId>"
}
}
}'watch_zone_createMake 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
Arguments
namestringrequired1–120 characters.
areasobject[]required1–10 items.
areas[].kind"circle" | "location" | "near_me" | "state" | "polygon"requiredareas[].latnumber-90–90.
areas[].lonnumber-180–180.
areas[].radiusKmnumber0.5–500.
areas[].locationIdstringUp to 40 characters.
areas[].state"ACT" | "NSW" | "NT" | "QLD" | "SA" | "TAS" | "VIC" | "WA"areas[].ringobject[]3–500 items.
areas[].ring[].latnumberrequiredareas[].ring[].lonnumberrequiredareas[].labelstringUp 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")[]minLevel"none" | "advice" | "watch_and_act" | "emergency_warning"events("new" | "escalated" | "downgraded" | "closed" | "updated")[]channels("mobile" | "web" | "email" | "sms" | "call")[]smsMinLevel"none" | "advice" | "watch_and_act" | "emergency_warning"groupIdsstring[]Up to 10 items. Each up to 40 characters.
userIdsstring[]Up to 50 items. Each up to 60 characters.
visibility"private" | "org"
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "watch_zone_create",
"arguments": {
"name": "Example",
"areas": [
{
"kind": "circle"
}
]
}
}
}'watch_zone_updateChange a watch zone (its owner, or an org admin for org zones): fields given replace the current ones.
Scope maps:write
Arguments
zoneIdstringrequiredUp to 40 characters.
namestring1–120 characters.
areasobject[]1–10 items.
areas[].kind"circle" | "location" | "near_me" | "state" | "polygon"requiredareas[].latnumber-90–90.
areas[].lonnumber-180–180.
areas[].radiusKmnumber0.5–500.
areas[].locationIdstringUp to 40 characters.
areas[].state"ACT" | "NSW" | "NT" | "QLD" | "SA" | "TAS" | "VIC" | "WA"areas[].ringobject[]3–500 items.
areas[].ring[].latnumberrequiredareas[].ring[].lonnumberrequiredareas[].labelstringUp 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")[]minLevel"none" | "advice" | "watch_and_act" | "emergency_warning"events("new" | "escalated" | "downgraded" | "closed" | "updated")[]channels("mobile" | "web" | "email" | "sms" | "call")[]smsMinLevel"none" | "advice" | "watch_and_act" | "emergency_warning"groupIdsstring[]Up to 10 items. Each up to 40 characters.
userIdsstring[]Up to 50 items. Each up to 60 characters.
visibility"private" | "org"
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "watch_zone_update",
"arguments": {
"zoneId": "<zoneId>"
}
}
}'watch_zone_pausePause a watch zone (no alerts) or resume it with paused: false.
Scope maps:write
Arguments
zoneIdstringrequiredUp to 40 characters.
pausedboolean
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "watch_zone_pause",
"arguments": {
"zoneId": "<zoneId>"
}
}
}'watch_zone_deleteDelete a watch zone (its owner, or an org admin for org zones). Its alert history expires on its own.
Scope maps:write · destructive
Arguments
zoneIdstringrequiredUp to 40 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "watch_zone_delete",
"arguments": {
"zoneId": "<zoneId>"
}
}
}'tenant_overviewThe 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_overview",
"arguments": {}
}
}'tenant_users_listList 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
Arguments
qstringUp to 200 characters.
role"owner" | "admin" | "developer" | "viewer"status"active" | "blocked" | "guest" | "member"signIn"never" | "30d" | "90d"mfa"yes" | "no"
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_users_list",
"arguments": {
"q": "example",
"role": "owner",
"status": "active"
}
}
}'tenant_user_getOne member in detail: groups, browser sessions, keys they created, app assignments and recent sign-ins.
Scope tenant:read · read-only
Arguments
userIdstringrequired1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_user_get",
"arguments": {
"userId": "<userId>"
}
}
}'tenant_groups_listList the organization's groups with their size, owners and the roles they grant.
Scope tenant:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_groups_list",
"arguments": {}
}
}'tenant_group_getOne group: members and owners, granted roles, Serverless App Service and repository access, and app assignments.
Scope tenant:read · read-only
Arguments
teamIdstringrequired1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_group_get",
"arguments": {
"teamId": "<teamId>"
}
}
}'tenant_roles_listBuilt-in and custom roles with their scopes, and the members and groups holding each.
Scope tenant:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_roles_list",
"arguments": {}
}
}'tenant_permissionsWhat a member (userId) or anyone in a group (teamId) may do in this organization, and why. With an app or a scope: the answer and each layer that decides it (membership, plan, app access, role, custom roles); without: every app's level with a sentence each.
Scope tenant:read · read-only
Arguments
userIdstring1–64 characters.
teamIdstring1–64 characters.
appstring1–32 characters.
scopestring1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_permissions",
"arguments": {
"userId": "<userId>",
"teamId": "<teamId>",
"app": "example"
}
}
}'tenant_sign_insMembers' sign-ins and failed sign-ins, newest first: method, address, approximate place and device.
Scope tenant:read · read-only
Arguments
userIdstringUp to 64 characters.
result"success" | "failure"cursorstringUp to 4,096 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_sign_ins",
"arguments": {
"userId": "<userId>",
"result": "success",
"cursor": "example"
}
}
}'tenant_policy_getThe organization's sign-in policy and the members it would leave without access.
Scope tenant:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_policy_get",
"arguments": {}
}
}'tenant_inviteInvite 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
Arguments
emailstringrequiredEmail address.
role"owner" | "admin" | "developer" | "viewer"Default
"developer".titlestringUp to 100 characters.
departmentstringUp to 100 characters.
guestbooleanguestDaysintegerteamIdsstring[]Up to 20 items. Each up to 64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_invite",
"arguments": {
"email": "person@example.com"
}
}
}'tenant_user_updateChange a member's role, title or department. Only owners change owners; nobody assigns a role above their own.
Scope tenant:write
Arguments
userIdstringrequired1–64 characters.
role"owner" | "admin" | "developer" | "viewer"titlestringor nullUp to 100 characters.
departmentstringor nullUp to 100 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_user_update",
"arguments": {
"userId": "<userId>"
}
}
}'tenant_user_blockBlock 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
Arguments
userIdstringrequired1–64 characters.
reasonstringUp to 200 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_user_block",
"arguments": {
"userId": "<userId>"
}
}
}'tenant_user_unblockUnblock a member's sign-in; they sign in again to reach the organization.
Scope tenant:write
Arguments
userIdstringrequired1–64 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_user_unblock",
"arguments": {
"userId": "<userId>"
}
}
}'tenant_user_revoke_sessionsEnd 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
Arguments
userIdstringrequired1–64 characters.
keysbooleanDefault
false.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_user_revoke_sessions",
"arguments": {
"userId": "<userId>"
}
}
}'tenant_group_member_setAdd a member to a group, make them a group owner, or take them out (role null).
Scope tenant:write
Arguments
teamIdstringrequired1–64 characters.
userIdstringrequired1–64 characters.
role"owner" | "member"requiredor null
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tenant_group_member_set",
"arguments": {
"teamId": "<teamId>",
"userId": "<userId>",
"role": "owner"
}
}
}'databases_listThe organization's databases (DynamoDB tables): id, name, region and linked Serverless App Service.
Scope resources:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "databases_list",
"arguments": {}
}
}'database_describeKey schema, indexes, status and approximate item count of a database.
Scope resources:read · read-only
Arguments
resourceIdstringrequired
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "database_describe",
"arguments": {
"resourceId": "<resourceId>"
}
}
}'database_queryQuery 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
Arguments
resourceIdstringrequiredindexstringUp to 255 characters.
partitionobject | object | object | object | objectrequiredsortobjectsort.op"=" | "<" | "<=" | ">" | ">=" | "begins_with" | "between"requiredsort.valueobject | object | object | object | objectrequiredsort.value2object | object | object | object | objectfiltersobject[]Default
[]. Up to 10 items.filters[].attributestringrequired1–255 characters.
filters[].op"=" | "<>" | "<" | "<=" | ">" | ">=" | "begins_with" | "contains" | "between" | "exists" | "not_exists"requiredfilters[].valueobject | object | object | object | objectfilters[].value2object | object | object | object | objectmatch"all" | "any"Default
"all".limitintegerDefault
25. 1–100.forwardbooleanDefault
true.cursorstringUp to 8,000 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "database_query",
"arguments": {
"resourceId": "<resourceId>",
"partition": {}
}
}
}'database_scanScan a database page by page, optionally with filters. Prefer database_query when you know the partition key.
Scope resources:read · read-only
Arguments
resourceIdstringrequiredindexstringUp to 255 characters.
filtersobject[]Default
[]. Up to 10 items.filters[].attributestringrequired1–255 characters.
filters[].op"=" | "<>" | "<" | "<=" | ">" | ">=" | "begins_with" | "contains" | "between" | "exists" | "not_exists"requiredfilters[].valueobject | object | object | object | objectfilters[].value2object | object | object | object | objectmatch"all" | "any"Default
"all".limitintegerDefault
25. 1–100.cursorstringUp to 8,000 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "database_scan",
"arguments": {
"resourceId": "<resourceId>"
}
}
}'database_item_getRead one item by its key (strongly consistent).
Scope resources:read · read-only
Arguments
resourceIdstringrequiredkeyobjectrequiredValues: any JSON.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "database_item_get",
"arguments": {
"resourceId": "<resourceId>",
"key": {}
}
}
}'buckets_listThe organization's buckets (S3): id, name, region and linked Serverless App Service.
Scope resources:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "buckets_list",
"arguments": {}
}
}'bucket_listList 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
Arguments
resourceIdstringrequiredprefixstringDefault
"". Up to 1,024 characters.cursorstringUp to 2,048 characters.
limitintegerDefault
100. 1–1000.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "bucket_list",
"arguments": {
"resourceId": "<resourceId>"
}
}
}'bucket_download_urlA link that downloads one file for the next 5 minutes.
Scope resources:read · read-only
Arguments
resourceIdstringrequiredkeystringrequiredUp to 1,024 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "bucket_download_url",
"arguments": {
"resourceId": "<resourceId>",
"key": "example"
}
}
}'database_item_putCreate 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
Arguments
resourceIdstringrequireditemobjectrequiredValues: any JSON.
replacebooleanDefault
false.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "database_item_put",
"arguments": {
"resourceId": "<resourceId>",
"item": {}
}
}
}'database_item_deleteDelete one item by its key.
Scope resources:write · destructive
Arguments
resourceIdstringrequiredkeyobjectrequiredValues: any JSON.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "database_item_delete",
"arguments": {
"resourceId": "<resourceId>",
"key": {}
}
}
}'bucket_upload_urlA 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
Arguments
resourceIdstringrequiredkeystringrequiredUp to 1,024 characters.
contentTypestringUp to 255 characters.
sizeintegerrequired≥ 0.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "bucket_upload_url",
"arguments": {
"resourceId": "<resourceId>",
"key": "example",
"size": 1
}
}
}'bucket_deleteDelete files (keys) and folders (prefixes ending in /, with everything in them). done: false means call again to finish large folders.
Scope resources:write · destructive
Arguments
resourceIdstringrequiredkeysstring[]Default
[]. Up to 1,000 items. Each up to 1,024 characters.prefixesstring[]Default
[]. Up to 100 items. Each up to 1,024 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "bucket_delete",
"arguments": {
"resourceId": "<resourceId>"
}
}
}'project_trafficTraffic 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
Arguments
range"24h" | "7d" | "30d" | "90d"Default
"24h".projectIdstringMatches
^prj_[0-9a-z]{10,40}$.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "project_traffic",
"arguments": {
"range": "24h",
"projectId": "<projectId>"
}
}
}'keys_listKeys 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
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "keys_list",
"arguments": {}
}
}'key_getOne 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
Arguments
keystringrequired1–100 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "key_get",
"arguments": {
"key": "example"
}
}
}'keys_encryptEncrypts 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
Arguments
keystringrequired1–100 characters.
plaintextstringrequiredUp to 90,000 characters.
encoding"utf8" | "base64"Default
"utf8".contextobjectKeys 1–128 characters. Values: string (up to 1,024 characters).
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "keys_encrypt",
"arguments": {
"key": "example",
"plaintext": "example"
}
}
}'keys_decryptDecrypts a ciphertext (k1.…) made with one of the organization's keys, with the context it was encrypted with.
Scope keys:use
Arguments
ciphertextstringrequired1–200,000 characters.
encoding"utf8" | "base64"Default
"utf8".contextobjectKeys 1–128 characters. Values: string (up to 1,024 characters).
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "keys_decrypt",
"arguments": {
"ciphertext": "example"
}
}
}'keys_signSigns up to 64 KB with one of the organization's ed25519 or ecdsa-p256 keys. Returns a signature (k1s.…).
Scope keys:use
Arguments
keystringrequired1–100 characters.
messagestringrequiredUp to 90,000 characters.
encoding"utf8" | "base64"Default
"utf8".
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "keys_sign",
"arguments": {
"key": "example",
"message": "example"
}
}
}'keys_verifyChecks a signature (k1s.…) from keys_sign against a message. Returns valid: true or false.
Scope keys:use · read-only
Arguments
messagestringrequiredUp to 90,000 characters.
signaturestringrequired1–2,000 characters.
encoding"utf8" | "base64"Default
"utf8".
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "keys_verify",
"arguments": {
"message": "example",
"signature": "example"
}
}
}'secrets_listSecrets (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
Arguments
projectstringUp to 100 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "secrets_list",
"arguments": {
"project": "example"
}
}
}'secret_getA 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
Arguments
projectstringUp to 100 characters.
keystringrequired1–256 characters.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "secret_get",
"arguments": {
"key": "example"
}
}
}'secret_setSets 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
Arguments
projectstringUp to 100 characters.
keystringrequired1–256 characters.
valuestringrequiredUp to 65,536 characters.
targets("production" | "preview" | "development")[]At least 1 item.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "secret_set",
"arguments": {
"key": "example",
"value": "example"
}
}
}'connectors_listRemote MCP servers connected to this organization and the tool names they add here.
Scope connectors:read · read-only
Arguments
None.
curl -X POST 'https://mcp.cactive.com.au/mcp/{org}' \
-H "Authorization: Bearer $CACTIVE_MCP_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "connectors_list",
"arguments": {}
}
}'