API reference

MCP Tools

Every tool the MCP server offers, with the scope it needs and its arguments. A key sees only the tools its scopes allow; failures come back as results with isError set.
whoami

Identity and scopes of the current key, and the language of the person behind it (locale: en-AU writes Australian spelling and day/month/year dates, en-US US spelling and month/day/year). Write to them in that language.

Scope none: every key gets it · read-only

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_forecast

Weather for a place: current conditions, today's high and low, sunrise and sunset, hourly (from now) and daily forecasts, and air quality where there is some. Give place (a name, e.g. "Ballarat" or "Paris, France"; the user's saved places by name first) or lat and lon. Units are the user's choice unless units says otherwise. Credit the source ("Weather data by Open-Meteo.com") when showing it.

Scope weather:read · read-only

Arguments

  • placestring

    2–100 characters.

  • latnumber

    -90–90.

  • lonnumber

    -180–180.

  • units"metric" | "imperial"
  • daysinteger

    1–16.

  • hoursinteger

    1–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
      }
    }
  }'
food_recipe_get

One recipe in full: ingredients (scaled to servings when given), numbered steps, notes and its source.

Scope food:read · read-only

Arguments

  • recipeIdstringrequired

    Up to 40 characters.

  • servingsinteger

    1–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_suggestions

Recipe ideas from the person's own recipes, best first, each with why: what they cook and rate, what's in season in Australia, what's in their pantry (and about to go off), how long since they made it. Keeps to their diets and allergens.

Scope food:read · read-only

Arguments

  • maxMinutesinteger

    5–600.

  • courseany
  • limitinteger

    1–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_cook

Recipes the person can make with what's in their pantry, fridge and freezer, best covered first, with what's missing and what's about to go off.

Scope food:read · read-only

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_get

The household's meal plan between two days (at most 92): each meal's day, meal (breakfast, lunch, dinner, snack), title and recipe.

Scope food:read · read-only

Arguments

  • fromstringrequired

    Matches ^\d{4}-\d{2}-\d{2}$.

  • tostringrequired

    Matches ^\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_substitute

Substitutes for an ingredient (e.g. buttermilk, eggs, self-raising flour) from Food's kitchen notes, with amounts. When Food has none on file, say so and suggest from general cooking knowledge.

Scope food:read · read-only

Arguments

  • ingredientstringrequired

    1–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_soon

What in the household's pantry needs using soon (within days, 3 by default; leftovers included) and the person's recipes that use the most of it ("what should I cook with what's expiring?").

Scope food:read

Arguments

  • daysinteger

    1–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_spending

The household's grocery spending by month, from the receipts it added to Food (Coles and Woolworths e-receipts), and what it last paid for things when asked about one (item).

Scope food:read

Arguments

  • monthsinteger

    1–24.

  • itemstring

    Up 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_meals

Plans meals for the days ahead from the person's recipes (e.g. "dinners this week under 30 minutes, vegetarian", "under $120 this week"): fills the days without that meal yet, varying cuisines and main ingredients, preferring what's in the pantry and about to expire; with budget (dollars for the meals planned) it prefers recipes whose estimated cost fits and says roughly what they'll cost. Without apply it only proposes: show the plan and ask before calling again with apply: true.

Scope food:read

Arguments

  • fromstring

    Matches ^\d{4}-\d{2}-\d{2}$.

  • daysinteger

    1–14.

  • meal"breakfast" | "lunch" | "dinner" | "snack"
  • maxMinutesinteger

    5–600.

  • diets[]

    Up to 5 items.

  • budgetnumber

    1–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_add

Puts a meal on the household's plan: a recipe (by id) or a note such as "Leftovers" or "Eating out".

Scope food:read

Arguments

  • daystringrequired

    Matches ^\d{4}-\d{2}-\d{2}$.

  • meal"breakfast" | "lunch" | "dinner" | "snack"required
  • recipeIdstring

    Up to 40 characters.

  • titlestring

    Up to 200 characters.

  • servingsinteger

    1–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_list

Makes a shopping list ("turn this into a shopping list"): from the plan between two days, or from recipes at given servings. Lines are merged by ingredient, sorted by aisle, without what the pantry has. Adds to an existing list when listId is given.

Scope food:read

Arguments

  • fromPlanobject
  • fromPlan.fromstringrequired

    Matches ^\d{4}-\d{2}-\d{2}$.

  • fromPlan.tostringrequired

    Matches ^\d{4}-\d{2}-\d{2}$.

  • recipesobject[]

    Up to 30 items.

  • recipes[].recipeIdstringrequired

    Up to 40 characters.

  • recipes[].servingsinteger

    1–100.

  • listIdstring

    Up to 40 characters.

  • namestring

    Up 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_add

Adds things to a shopping list (the most recent one unless listId says), one item per string ("2 L milk", "dishwashing liquid").

Scope food:read

Arguments

  • itemsstring[]required

    1–50 items. Each 1–200 characters.

  • listIdstring

    Up 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_add

Records what the household has in: one item per string ("2 L milk", "spinach"), placed where it keeps and given an estimated use-by unless useBy (YYYY-MM-DD) says, added to the same thing when it's there already.

Scope food:read

Arguments

  • itemsstring[]required

    1–50 items. Each 1–200 characters.

  • useBystring

    Matches ^\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_save

Saves a recipe to the person's Food: from a web page (url, read from its recipe data), or written out (title, ingredients one per line, steps one per line or paragraph). Confirm with the person before saving one you wrote yourself.

Scope food:read

Arguments

  • urlstring

    Up to 2,000 characters. URL.

  • titlestring

    Up to 200 characters.

  • servingsinteger

    1–100.

  • ingredientsstring

    Up to 20,000 characters.

  • stepsstring

    Up to 40,000 characters.

  • minutesinteger

    1–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_list

Scope none: every key gets it · read-only

Arguments

  • folderIdstring

    Up to 64 characters.

  • limitinteger

    1–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_get

Details of a file or folder: where it is, size, type, versions, who it's shared with (for editors) and its link setting.

Scope none: every key gets it · read-only

Arguments

  • itemIdstringrequired

    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": "drive_get",
      "arguments": {
        "itemId": "<itemId>"
      }
    }
  }'
drive_read

Read a text file (plain text, Markdown, CSV, JSON, code…), up to 1 MB. Other files: use drive_download_url.

Scope none: every key gets it · read-only

Arguments

  • itemIdstringrequired

    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": "drive_read",
      "arguments": {
        "itemId": "<itemId>"
      }
    }
  }'
drive_download_url

A link to download a file, valid for an hour.

Scope none: every key gets it · read-only

Arguments

  • itemIdstringrequired

    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": "drive_download_url",
      "arguments": {
        "itemId": "<itemId>"
      }
    }
  }'
drive_folder_create

Create a folder. Without parentId: at the top of My Drive. Fails if the name is taken there.

Scope none: every key gets it

Arguments

  • namestringrequired

    1–255 characters.

  • parentIdstring

    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": "drive_folder_create",
      "arguments": {
        "name": "Example"
      }
    }
  }'
drive_file_write

Save a small text file (up to 1 MB). Without parentId: at the top of My Drive. A file with the same name there gets a new version.

Scope none: every key gets it

Arguments

  • namestringrequired

    1–255 characters.

  • contentstringrequired

    Up to 1,048,576 characters.

  • parentIdstring

    Up to 64 characters.

  • mimestring

    Up 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"
      }
    }
  }'
drive_share

Share a file or folder with a member (by email) or a team (by name), as viewer, commenter or editor. Needs edit access.

Scope none: every key gets it

Arguments

  • itemIdstringrequired

    Up to 64 characters.

  • emailstring

    Email address.

  • teamstring

    Up to 100 characters.

  • role"viewer" | "commenter" | "editor"required
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_share",
      "arguments": {
        "itemId": "<itemId>",
        "role": "viewer"
      }
    }
  }'
document_create

Create a document (Documents), optionally with content in Markdown (headings, lists, tables, links). In My Drive unless folderId names a folder. Returns its id and link.

Scope none: every key gets it

Arguments

  • titlestringrequired

    1–255 characters.

  • folderIdstring

    Up to 64 characters.

  • markdownstring

    Up 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_read

Read a document: as Markdown (format: "markdown", the default) or its outline of headings ("outline"). Suggested deletions are left out.

Scope none: every key gets it · read-only

Arguments

  • fileIdstringrequired

    Matches ^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_edit

Change a document. Operations run in order: append (Markdown at the end), insert_after_heading (Markdown after the section heading whose text is heading), replace_text (every find → replace, within paragraphs), insert_table (rows of cells, the first the header, after heading or at the end). People with it open see the changes arrive.

Scope none: every key gets it · destructive

Arguments

  • fileIdstringrequired

    Matches ^fil_[0-9a-z]{6,40}$.

  • operations(object | object | object | object)[]required

    1–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_comment

Comment on a document: on the text quoted (quote, a short passage as it appears) or on the whole document. Mention someone as @[Name](usr_…).

Scope none: every key gets it

Arguments

  • fileIdstringrequired

    Matches ^fil_[0-9a-z]{6,40}$.

  • bodystringrequired

    1–8,000 characters.

  • quotestring

    Up 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_create

Create a spreadsheet (Sheets), optionally with sheets of rows: strings starting with "=" are formulas (A1 references), numbers and dates as typed.

Scope none: every key gets it

Arguments

  • titlestringrequired

    1–255 characters.

  • folderIdstring

    Up to 64 characters.

  • sheetsobject[]

    Up to 20 items.

  • sheets[].namestringrequired

    1–100 characters.

  • sheets[].rows((string | number | boolean | null)[])[]required

    Up 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_read

Read cells of a spreadsheet: range in A1 form with an optional sheet ("Budget!A1:D20"; the first sheet without one). Values are as the cells show them, worked out: formulas come with their A1 text and their computed value (errors as codes like #DIV/0!), and cells filled by a spilled array or a pivot table have their values too.

Scope none: every key gets it · read-only

Arguments

  • fileIdstringrequired

    Matches ^fil_[0-9a-z]{6,40}$.

  • rangestringrequired

    2–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_write

Write cells from the top-left of range ("Sheet1!B2"): values as rows; strings starting with "=" are formulas. People with the spreadsheet open see the change arrive.

Scope none: every key gets it · destructive

Arguments

  • fileIdstringrequired

    Matches ^fil_[0-9a-z]{6,40}$.

  • rangestringrequired

    2–100 characters.

  • values((string | number | boolean | null)[])[]required

    1–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_chart

Add a chart over a range (headers in its first row, categories in its first column): column, bar, line, area, pie, donut or scatter.

Scope none: every key gets it

Arguments

  • fileIdstringrequired

    Matches ^fil_[0-9a-z]{6,40}$.

  • rangestringrequired

    2–100 characters.

  • type"column" | "bar" | "stackedColumn" | "stackedBar" | "line" | "area" | "pie" | "donut" | "scatter"required
  • titlestring

    Up 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_create

Create a presentation (Slides) from an outline: a title slide, then one slide per entry (bullets make a title-and-body slide, none a section slide), with speaker notes. Themes: plain, bold, editorial, pitch.

Scope none: every key gets it

Arguments

  • titlestringrequired

    1–255 characters.

  • outlineobject[]required

    1–60 items.

  • outline[].titlestringrequired

    Up to 300 characters.

  • outline[].bulletsstring[]

    Up to 12 items. Each up to 500 characters.

  • outline[].notesstring

    Up to 5,000 characters.

  • theme"plain" | "bold" | "editorial" | "pitch"
  • folderIdstring

    Up 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_read

Read a presentation: each slide's title, text and speaker notes, in order.

Scope none: every key gets it · read-only

Arguments

  • fileIdstringrequired

    Matches ^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_add

Add slides to a presentation after the slide after (a slide id from slides_read; the end without it).

Scope none: every key gets it

Arguments

  • fileIdstringrequired

    Matches ^fil_[0-9a-z]{6,40}$.

  • afterstring

    Up to 40 characters.

  • slidesobject[]required

    1–40 items.

  • slides[].titlestringrequired

    Up to 300 characters.

  • slides[].bulletsstring[]

    Up to 12 items. Each up to 500 characters.

  • slides[].notesstring

    Up 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_export

A download link (an hour) for a document, spreadsheet or presentation in another format: md or txt for documents, csv or tsv for spreadsheets, txt for presentations; docx, xlsx, pptx and pdf where the platform has them on.

Scope none: every key gets it · read-only

Arguments

  • fileIdstringrequired

    Matches ^fil_[0-9a-z]{6,40}$.

  • format"docx" | "odt" | "pdf" | "md" | "txt" | "xlsx" | "ods" | "csv" | "tsv" | "pptx" | "odp" | "png"required
  • 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_export",
      "arguments": {
        "fileId": "<fileId>",
        "format": "docx",
        "space": {}
      }
    }
  }'
video_read

Read a video project (Video): its sequences with size, rate and length; tracks with their clips (media names, start and end as timecode, where each starts in its media); markers; caption tracks with their text and times; and the media. Use it to answer questions about a cut or to draft chapters and descriptions from the captions.

Scope none: every key gets it · read-only

Arguments

  • fileIdstringrequired

    Matches ^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_create

Make a video project (Video) from Drive files in order: a rough cut on one sequence, each clip optionally trimmed (in and out in seconds of its file). Files are MP4, QuickTime or M4A (others can be added in the app). In My Drive unless folderId names a folder; preset sets the sequence's size and rate. Returns its id and link; editing, effects and export happen in the app.

Scope none: every key gets it

Arguments

  • titlestringrequired

    1–255 characters.

  • clipsobject[]required

    1–200 items.

  • clips[].fileIdstringrequired

    Matches ^fil_[0-9a-z]{6,40}$.

  • clips[].innumber

    ≥ 0.

  • clips[].outnumber

    ≥ 0.

  • folderIdstring

    Up to 64 characters.

  • presetany
  • 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_create",
      "arguments": {
        "title": "Example",
        "clips": [
          {
            "fileId": "<fileId>"
          }
        ],
        "space": {}
      }
    }
  }'
video_transcribe

Transcribe one media item of a video project into a new caption track (Amazon Transcribe; speakers labelled). mediaId is the item's id from video_read. The captions start where the item's first clip starts on the sequence (or at 0). It takes a minute or more: the answer is the job; check it with transcriptionId, or read the project later. Counts against the person's daily transcription minutes.

Scope none: every key gets it

Arguments

  • fileIdstringrequired

    Matches ^fil_[0-9a-z]{6,40}$.

  • mediaIdstring

    4–64 characters.

  • languagestring

    2–10 characters.

  • speakersinteger

    0–30.

  • transcriptionIdstring

    Up 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_albums

List 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_album

The photos in one album, in the album's order (up to 200).

Scope none: every key gets it · read-only

Arguments

  • albumIdstringrequired

    3–64 characters.

  • limitinteger

    1–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_get

A photo's details: when and where it was taken, camera, size, description, albums, and a link to see it (an hour).

Scope none: every key gets it · read-only

Arguments

  • photoIdstringrequired

    3–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_servers

The person's Mirage servers (Discord-style communities), in their order, with unread and mention counts and the channels they can see (ids for the other Mirage tools).

Scope none: every key gets it · read-only

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_inbox

What needs the person's attention in Mirage: recent messages that mention them (by name, their roles or @everyone), newest first, and the channels they haven't read, by server, with mention counts.

Scope none: every key gets it · read-only

Arguments

  • limitinteger

    1–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_messages

A Mirage channel's or thread's recent messages, oldest first (before: a message id, for the ones before it). Reading doesn't mark them read.

Scope none: every key gets it · read-only

Arguments

  • channelIdstringrequired

    1–64 characters.

  • beforestring

    Up to 64 characters.

  • limitinteger

    1–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_leaderboards

A 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

  • serverIdstringrequired

    1–64 characters.

  • boardIdstring

    Up to 64 characters.

  • courseIdstring

    Up 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_send

Send a message in a Mirage channel or thread as the person (Markdown; mention someone as <@userId>). replyTo: a message id to reply to. Not for direct messages, which are end-to-end encrypted.

Scope none: every key gets it

Arguments

  • channelIdstringrequired

    1–64 characters.

  • contentstringrequired

    1–4,000 characters.

  • replyTostring

    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": "mirage_send",
      "arguments": {
        "channelId": "<channelId>",
        "content": "example"
      }
    }
  }'
health_summary

The person's Health summary for today and this week: each metric they let you read (steps, sleep, heart rate and so on) with today's value, the week's daily average, the trend against the week before and the latest reading. Fails if they haven't turned on your access in Health → Privacy; tell them where.

Scope none: every key gets it · read-only

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_metric

One Health metric's daily values between two days (at most a year), with the average and best day. Use metric ids from health_summary (e.g. steps, sleep, resting_heart_rate).

Scope none: every key gets it · read-only

Arguments

  • metricIdstringrequired
  • fromstringrequired
  • tostringrequired
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"
      }
    }
  }'
shared_with_me

What other people have shared with the person: each with its owner, what they may do and until when. Pages follow the person, their groups and their circles; carry on with cursor while it is set. The name of each resource is what the other sharing tools take.

Scope sharing:read · read-only

Arguments

  • appstring

    Up to 32 characters.

  • typestring

    Up to 32 characters.

  • cursorstring

    Up 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": "shared_with_me",
      "arguments": {
        "app": "example",
        "type": "example",
        "cursor": "example"
      }
    }
  }'
sharing_list

A resource's sharing: what the person holds of it and where from, and, if they may share it, who else has access (with each grant's rev, the preset, limits and when it ends), its links and pending invitations, and the owning organisation's policy.

Scope sharing:read · read-only

Arguments

  • resourcestringrequired

    3–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": "sharing_list",
      "arguments": {
        "resource": "example"
      }
    }
  }'
circles_list

The 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": {}
    }
  }'
sharing_grant

Share a resource with a person (by email address or user:usr_…), a group, a circle or an organisation, with a preset or a list of capabilities and optional limits (start, end, weekly windows, settings). You can give no more than the person holds themselves. Someone outside the person's circles and organisation gets an offer to accept; an address with no account gets an invitation. ALWAYS ASKS: nothing happens until confirm is true, and only set that after the person has agreed to exactly these terms.

Scope sharing:write

Arguments

  • resourcestringrequired

    3–200 characters.

  • principalstringrequired

    3–200 characters.

  • presetstring

    Up to 32 characters.

  • capabilitiesstring[]

    1–32 items. Each up to 32 characters.

  • notBeforestring

    Matches ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.

  • expiresAtstring

    Matches ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.

  • scheduleobject
  • schedule.tzstringrequired

    1–64 characters.

  • schedule.windows(object | object)[]required

    1–8 items.

  • paramsobject

    Keys up to 32 characters. Values: string (up to 64 characters), number or boolean.

  • assistantsboolean
  • approvalstring[]

    Up to 32 items. Each up to 32 characters.

  • messagestring

    Up to 500 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": "sharing_grant",
      "arguments": {
        "resource": "example",
        "principal": "example"
      }
    }
  }'
sharing_update

Change what someone has of a resource: a new preset or capabilities, an end time, weekly windows, settings. Say only what changes; name a field in clear to remove it. rev is the grant's rev from sharing_list (a stale rev is refused: read it again). The result is held to the same rules as a new share. ALWAYS ASKS: nothing happens until confirm is true, and only set that after the person has agreed to exactly this change.

Scope sharing:write

Arguments

  • resourcestringrequired

    3–200 characters.

  • principalstringrequired

    3–200 characters.

  • revintegerrequired

    ≥ 1.

  • presetstring

    Up to 32 characters.

  • capabilitiesstring[]

    1–32 items. Each up to 32 characters.

  • notBeforestring

    Matches ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.

  • expiresAtstring

    Matches ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.

  • scheduleobject
  • schedule.tzstringrequired

    1–64 characters.

  • schedule.windows(object | object)[]required

    1–8 items.

  • paramsobject

    Keys up to 32 characters. Values: string (up to 64 characters), number or boolean.

  • assistantsboolean
  • approvalstring[]

    Up to 32 items. Each up to 32 characters.

  • clear("notBefore" | "expiresAt" | "schedule" | "params" | "approval")[]

    Up to 5 items.

  • 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": "sharing_update",
      "arguments": {
        "resource": "example",
        "principal": "example",
        "rev": 1
      }
    }
  }'
sharing_pause

Pause someone's access to a resource for a while, or until it is turned back on, or resume it. Paused, they keep only what stays on outside a schedule (a car's name and status, not where it is or whether it moves; a person's location shows nothing) and get no notice. ALWAYS ASKS: nothing happens until confirm is true, and only set that after the person has agreed.

Scope sharing:write

Arguments

  • resourcestringrequired

    3–200 characters.

  • principalstringrequired

    3–200 characters.

  • untilstring | "forever"

    Matches ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.

  • resumeboolean
  • 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": "sharing_pause",
      "arguments": {
        "resource": "example",
        "principal": "example"
      }
    }
  }'
sharing_revoke

End someone's access to a resource (give principal), or withdraw an invitation to an address with no account (give its invitationId from sharing_list). They lose it at once, and are told. ALWAYS ASKS: nothing happens until confirm is true, and only set that after the person has agreed.

Scope sharing:write · destructive

Arguments

  • resourcestringrequired

    3–200 characters.

  • principalstring

    3–200 characters.

  • invitationIdstring

    3–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": "sharing_revoke",
      "arguments": {
        "resource": "example"
      }
    }
  }'
findmy_people

Find 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_map

Where 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_share

Share the person's location with someone (by email or user id), exactly or approximately (about a kilometre), until a time or for good. Someone outside the person's circles accepts first; an address with no account is invited. ALWAYS ASKS: nothing happens until confirm is true, and only set that after the person has agreed to exactly this.

Scope sharing:write

Arguments

  • personstringrequired

    3–254 characters.

  • precision"exact" | "approximate"
  • untilstring

    Matches ^\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_share",
      "arguments": {
        "person": "example"
      }
    }
  }'
findmy_stop

Stop sharing the person's location with someone. They are told. ALWAYS ASKS: nothing happens until confirm is true.

Scope sharing:write · destructive

Arguments

  • userIdstringrequired

    Up 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_hide

Hide 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

  • userIdstring

    Up to 80 characters.

  • untilstring | "forever" | "off" | "show"required

    Matches ^\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_directions

Scope none: every key gets it · read-only

Arguments

  • tostringrequired

    1–200 characters. Trimmed.

  • fromstring

    1–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_eta

The 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_start

Share 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

  • tostringrequired

    1–200 characters. Trimmed.

  • peoplestring[]required

    1–50 items. Each matches ^usr_[A-Za-z0-9]{6,60}$.

  • mode"drive" | "walk" | "cycle"
  • fromstring

    1–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_stop

Stop 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

  • tripIdstringrequired

    Matches ^eta_[0-9a-z]{26}$.

  • userIdstring

    Matches ^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_extend

Share 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

  • tripIdstringrequired

    Matches ^eta_[0-9a-z]{26}$.

  • minutesintegerrequired

    5–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_drive

Log 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

  • vehiclestring

    1–80 characters.

  • startedAtstringrequired

    Matches ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.

  • endedAtstring

    Matches ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.

  • minutesinteger

    1–1440.

  • distanceKmnumber

    0–2000.

  • startOdometerKmnumber

    0–2000000.

  • endOdometerKmnumber

    0–2000000.

  • fromstring

    1–120 characters.

  • tostring

    1–120 characters.

  • class"business" | "personal" | "commute" | "private"
  • purposestring

    Up to 120 characters.

  • notesstring

    Up 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_charge

Log 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

  • vehiclestring

    1–80 characters.

  • type"charge" | "refuel"required
  • startedAtstringrequired

    Matches ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.

  • endedAtstring

    Matches ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.

  • kind"home" | "work" | "supercharger" | "other"
  • kwhAddednumber

    0–250.

  • litresnumber

    0–500.

  • costCentsinteger

    0–100000000.

  • odometerKmnumber

    0–2000000.

  • placestring

    1–120 characters.

  • notesstring

    Up 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_entry

Log 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

  • vehiclestring

    1–80 characters.

  • kind"odometer" | "expense" | "service"required
  • atstringrequired

    Matches ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$.

  • odometerKmnumber

    0–2000000.

  • costCentsinteger

    0–100000000.

  • category"toll" | "parking" | "insurance" | "registration" | "cleaning" | "other"
  • items("tyre_rotation" | "brake_fluid" | "brake_calipers" | "cabin_filter" | "ac_desiccant")[]

    Up to 5 items.

  • notestring

    Up 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_get

Read a context entry by namespace and key.

Scope knowledge:read · read-only

Arguments

  • namespacestringrequired

    1–128 characters.

  • keystringrequired

    1–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_list

List context entries in a namespace, optionally filtered by key prefix.

Scope knowledge:read · read-only

Arguments

  • namespacestringrequired

    1–128 characters.

  • prefixstring

    Up 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_list

List 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_get

Read a Notes page as Markdown with front matter (title, version, ...). Databases include their rows as a table; rows include their property values.

Scope knowledge:read · read-only

Arguments

  • pageIdstringrequired

    1–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>"
      }
    }
  }'
context_put

Create or replace a context entry. Use namespaces to group related entries.

Scope knowledge:write

Arguments

  • namespacestringrequired

    1–128 characters.

  • keystringrequired

    1–512 characters.

  • valuestringrequired

    Up 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_delete

Delete a context entry.

Scope knowledge:write · destructive

Arguments

  • namespacestringrequired

    1–128 characters.

  • keystringrequired

    1–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_upsert

Create a Notes page from Markdown, or replace an existing page's content. Pass pageId to replace (title/icon/fullWidth/parentId change only when given); omit it to create a page under parentId (default: top level). For a new page without a title, a leading # Heading becomes the title. Pass baseVersion from page_get to fail instead of overwriting newer edits.

Scope knowledge:write

Arguments

  • pageIdstring

    1–200 characters. Trimmed.

  • parentIdstring

    1–200 characters. Trimmed.

  • titlestring

    Up to 200 characters.

  • iconstring

    Up to 16 characters.

  • fullWidthboolean
  • markdownstringrequired

    Up 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_create

Queue work for one of the organization's self-hosted agents. http.batch runs HTTP requests limited to hosts (obeys robots.txt); exec runs a shell command (agents with full network access, or agents that limit shell commands to their allowlist); browser.batch loads up to 100 pages one at a time in the agent's installed Chrome (input { pages: [{ id, url, waitForSelector?, waitMs?, scroll?, capture?: { urlPattern, max? }, extract?: ["nextData" | "nuxtData" | "jsonLd" | "html"], select?: { nextData?: path | path[], nuxtData?: ..., jsonLd?: ... } }], delayMs? } where a path is dot-separated keys, indexes or * (e.g. "props.pageProps.products.*.name"); obeys robots.txt, identifies itself, at least 5 s between pages). ttlSeconds (60 to 604800, default 7 days) is how long the job may wait for a device. Results are delivered to callbackUrl.

Scope agents:run

Also checks agents:write (when args.type === "exec")

Arguments

  • type"http.batch" | "exec" | "browser.batch"required
  • labelstring

    Up 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}$.

  • inputobjectrequired

    Values: any JSON.

  • callbackUrlstring

    URL.

  • callbackSecretstring

    Up to 200 characters.

  • ttlSecondsinteger

    60–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_cancel

Cancel an agent job: a queued job is canceled at once; a running job stops at its device's next check (status canceling, then canceled).

Scope agents:run

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_get

Status 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_meta

Issue tracking catalogs: spaces (keys), issue types, statuses, priorities, resolutions, link types, custom fields and people. Read this first to know valid names.

Scope issues:read · read-only

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_report

Report over the issues a query matches. Types: createdVsResolved, cumulativeFlow, averageAge, resolutionTime (trends over days); controlChart (cycle times of resolved issues); statistics (counts by groupBy: status, assignee, priority, type, labels, components, fixVersions, sprint, resolution, space or a custom field id; each row's clause narrows the query to it); twoDimensional (groupBy × groupBy2); timeTracking; workload (open issues per assignee); epicProgress; versionReport (scope, done, pace and forecast of the version id the query's issues belong to).

Scope issues:read · read-only

Arguments

  • type"createdVsResolved" | "cumulativeFlow" | "controlChart" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "timeTracking" | "workload" | "epicProgress" | "versionReport"required
  • jqlstringrequired

    Up to 10,000 characters.

  • daysinteger

    1–730.

  • interval"day" | "week" | "month"
  • groupBystring

    Up to 64 characters.

  • groupBy2string

    Up to 64 characters.

  • versionstring

    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": "issues_report",
      "arguments": {
        "type": "createdVsResolved",
        "jql": "example"
      }
    }
  }'
issues_agenda

Your Tasks dates between from and to (YYYY-MM-DD, at most 100 days): issues assigned to you by due and start date, and sprint starts, sprint ends and releases of the spaces you work in.

Scope issues:read · read-only

Arguments

  • fromstringrequired

    Matches ^\d{4}-\d{2}-\d{2}$.

  • tostringrequired

    Matches ^\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_get

One issue by key (e.g. WEB-12): fields, description (Markdown), comments, links, subtasks and the transitions available now.

Scope issues:read · read-only

Arguments

  • keystringrequired

    1–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_list

Boards with their type (scrum or kanban), spaces and columns, plus the open sprints of scrum boards.

Scope issues:read · read-only

Arguments

  • spacestring

    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": "boards_list",
      "arguments": {
        "space": "example"
      }
    }
  }'
board_get

A board's cards by column: the active sprint for scrum boards, the flow for kanban boards.

Scope issues:read · read-only

Arguments

  • boardIdstringrequired

    1–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_list

Saved filters shared with the organization or with this key's teams: name and query (run one with issues_search).

Scope issues:read · read-only

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_create

Create a future sprint on a scrum board (see boards_list for board ids).

Scope issues:write

Arguments

  • boardIdstringrequired

    1–64 characters.

  • namestring

    Up to 80 characters.

  • goalstring

    Up 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_plan

Put issues (keys) into a sprint, or back into the backlog with sprintId null.

Scope issues:write

Arguments

  • issuesstring[]required

    1–100 items. Each up to 64 characters.

  • sprintIdstringrequiredor null

    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": "sprint_plan",
      "arguments": {
        "issues": [
          "example"
        ],
        "sprintId": "<sprintId>"
      }
    }
  }'
sprint_start

Start a future sprint. endDate is an ISO date or date-time.

Scope issues:write

Arguments

  • sprintIdstringrequired

    1–64 characters.

  • endDatestringrequired

    10–40 characters.

  • goalstring

    Up 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_complete

Complete an active sprint. Open issues move to moveTo: a future sprint id, "new" (a new sprint) or "backlog".

Scope issues:write

Arguments

  • sprintIdstringrequired

    1–64 characters.

  • moveTostringrequired

    1–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_create

Create an issue. space is the space key (issues_meta lists them); leave it out when there's only one space. A space that doesn't exist gets the list of spaces back. type, priority, components, versions and sprint take names; people take emails; parent takes an issue key (epics for stories, a standard issue for subtasks); custom fields go in fields by name. description is Markdown. location is where the work is: { address } (looked up and kept) or { lat, lon, label }.

Scope issues:write

Arguments

  • spacestring

    Up to 64 characters.

  • summarystringrequired

    1–255 characters. Trimmed.

  • typeany JSONrequired
  • descriptionany JSONrequired
  • priorityany JSONrequired
  • assigneeany JSONrequired
  • reporterany JSONrequired
  • labelsany JSONrequired
  • componentsany JSONrequired
  • fixVersionsany JSONrequired
  • affectsVersionsany JSONrequired
  • dueDateany JSONrequired
  • startDateany JSONrequired
  • storyPointsany JSONrequired
  • originalEstimateany JSONrequired
  • remainingEstimateany JSONrequired
  • environmentany JSONrequired
  • locationany JSONrequired
  • parentany JSONrequired
  • sprintany JSONrequired
  • securityLevelany JSONrequired
  • fieldsany 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_update

Change 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

  • keystringrequired

    1–64 characters.

  • addLabelsstring[]

    Up to 30 items. Each up to 255 characters.

  • removeLabelsstring[]

    Up to 30 items. Each up to 255 characters.

  • summaryany JSONrequired
  • typeany JSONrequired
  • descriptionany JSONrequired
  • priorityany JSONrequired
  • assigneeany JSONrequired
  • reporterany JSONrequired
  • labelsany JSONrequired
  • componentsany JSONrequired
  • fixVersionsany JSONrequired
  • affectsVersionsany JSONrequired
  • dueDateany JSONrequired
  • startDateany JSONrequired
  • storyPointsany JSONrequired
  • originalEstimateany JSONrequired
  • remainingEstimateany JSONrequired
  • environmentany JSONrequired
  • locationany JSONrequired
  • parentany JSONrequired
  • sprintany JSONrequired
  • securityLevelany JSONrequired
  • fieldsany 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_bulk

One 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.

  • jqlstring

    Up to 10,000 characters.

  • operation"edit" | "labels" | "transition" | "comment" | "move" | "watch" | "unwatch"required
  • fieldsobject
  • fields.typestring

    Up to 80 characters.

  • fields.summarystring

    Up to 255 characters.

  • fields.descriptionstring

    Up to 65,536 characters.

  • fields.prioritystringor null

    Up to 80 characters.

  • fields.assigneestringor null

    Up to 320 characters.

  • fields.reporterstringor null

    Up 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 null

    Matches ^\d{4}-\d{2}-\d{2}$.

  • fields.startDatestringor null

    Matches ^\d{4}-\d{2}-\d{2}$.

  • fields.storyPointsnumberor null

    0–10000.

  • fields.originalEstimatenumber | stringor null

    0–315360000. Up to 40 characters.

  • fields.remainingEstimatenumber | stringor null

    0–315360000. Up to 40 characters.

  • fields.environmentstringor null

    Up to 32,768 characters.

  • fields.locationobject | objector null
  • fields.parentstringor null

    Up to 64 characters.

  • fields.sprintstringor null

    Up to 100 characters.

  • fields.securityLevelstringor null

    Up to 80 characters.

  • fields.resolutionstringor null

    Up to 80 characters.

  • fields.fieldsobject

    Keys up to 100 characters. Values: any JSON.

  • fields.requestTypestring

    Up to 80 characters.

  • fields.participantsstring[]

    Up to 100 items. Each up to 320 characters.

  • transitionstring

    Up to 80 characters.

  • commentstring

    Up to 32,768 characters.

  • addLabelsstring[]

    Up to 30 items. Each up to 255 characters.

  • removeLabelsstring[]

    Up to 30 items. Each up to 255 characters.

  • spacestring

    Up to 64 characters.

  • typestring

    Up 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_transition

Move an issue through its workflow by transition or target status name (see issue_get for the available ones). Optionally set fields the transition asks for and add a comment.

Scope issues:write

Arguments

  • keystringrequired

    1–64 characters.

  • transitionstringrequired

    1–80 characters.

  • fieldsobject
  • fields.typestring

    Up to 80 characters.

  • fields.summarystring

    Up to 255 characters.

  • fields.descriptionstring

    Up to 65,536 characters.

  • fields.prioritystringor null

    Up to 80 characters.

  • fields.assigneestringor null

    Up to 320 characters.

  • fields.reporterstringor null

    Up 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 null

    Matches ^\d{4}-\d{2}-\d{2}$.

  • fields.startDatestringor null

    Matches ^\d{4}-\d{2}-\d{2}$.

  • fields.storyPointsnumberor null

    0–10000.

  • fields.originalEstimatenumber | stringor null

    0–315360000. Up to 40 characters.

  • fields.remainingEstimatenumber | stringor null

    0–315360000. Up to 40 characters.

  • fields.environmentstringor null

    Up to 32,768 characters.

  • fields.locationobject | objector null
  • fields.parentstringor null

    Up to 64 characters.

  • fields.sprintstringor null

    Up to 100 characters.

  • fields.securityLevelstringor null

    Up to 80 characters.

  • fields.resolutionstringor null

    Up to 80 characters.

  • fields.fieldsobject

    Keys up to 100 characters. Values: any JSON.

  • fields.requestTypestring

    Up to 80 characters.

  • fields.participantsstring[]

    Up to 100 items. Each up to 320 characters.

  • commentstring

    Up 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_comment

Add a Markdown comment to an issue. internal comments (service desk spaces) are visible to agents only.

Scope issues:write

Arguments

  • keystringrequired

    1–64 characters.

  • bodystringrequired

    1–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_edit

Change 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

  • keystringrequired

    1–64 characters.

  • commentIdstringrequired

    1–64 characters.

  • bodystringrequired

    1–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_delete

Delete a comment (your own, or anyone's where the space lets you delete all comments).

Scope issues:write · destructive

Arguments

  • keystringrequired

    1–64 characters.

  • commentIdstringrequired

    1–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_worklog

Log work on an issue, e.g. timeSpent "1h 30m". The remaining estimate goes down by the same amount.

Scope issues:write

Arguments

  • keystringrequired

    1–64 characters.

  • timeSpentstringrequired

    1–40 characters.

  • commentstring

    Up 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_rank

Reorder issues in the backlog: put issues (keys, in order) right before or right after another issue.

Scope issues:write

Arguments

  • issuesstring[]required

    1–50 items. Each up to 64 characters.

  • beforestring

    Up to 64 characters.

  • afterstring

    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": "issues_rank",
      "arguments": {
        "issues": [
          "example"
        ]
      }
    }
  }'
issue_move

Move an issue (and its subtasks) to another space. It gets a new key; the old key keeps resolving.

Scope issues:write

Arguments

  • keystringrequired

    1–64 characters.

  • spacestringrequired

    1–64 characters.

  • typestring

    Up 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_delete

Delete an issue with its comments, attachments, work logs and subtasks. This can't be undone.

Scope issues:write · destructive

Arguments

  • keystringrequired

    1–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_create

Create a space (project) from a template: scrum, kanban, bugs, service or basic. Keys are 2–10 capital letters or digits.

Scope issues:write

Arguments

  • keystringrequired

    2–10 characters.

  • namestringrequired

    1–80 characters. Trimmed.

  • template"scrum" | "kanban" | "bugs" | "service" | "basic"required
  • descriptionstring

    Up 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_objects

The objects in Customers (accounts, contacts, leads, opportunities, activities and custom ones) with their fields: ids, types, picklist values and lookups' targets, and the pipelines with their stages. Read this first to know valid field ids and values.

Scope crm:read · read-only

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_records_list

Scope crm:read · read-only

Arguments

  • objectstringrequired

    Up to 40 characters.

  • filtersobject[]

    Up to 10 items.

  • filters[].fieldstringrequired

    Up to 60 characters.

  • filters[].op"eq" | "ne" | "in" | "gt" | "gte" | "lt" | "lte" | "contains" | "startsWith" | "blank" | "notBlank"required
  • filters[].valueany JSON
  • sortobject
  • sort.fieldstringrequired

    Up to 60 characters.

  • sort.dir"asc" | "desc"required
  • limitinteger

    1–100.

  • cursorstring

    Up 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_get

Read a record in Customers by id: its fields (lookups and owners by name), what the caller may do with it, its related records and its latest activities.

Scope crm:read · read-only

Arguments

  • idstringrequired

    Up 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_create

Create a record in Customers: the object id and field values by field id (crm_objects lists them; picklists take a value or its label, lookups a record id, dates YYYY-MM-DD). The caller owns it unless ownerId is given.

Scope crm:write

Arguments

  • objectstringrequired

    Up to 40 characters.

  • fieldsobjectrequired

    Keys up to 60 characters. Values: any JSON.

  • ownerIdstring

    Up 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_update

Change a record's fields in Customers (by field id; null clears one) or owner. Pass the version you read to refuse the change if someone edited it since.

Scope crm:write

Arguments

  • idstringrequired

    Up to 40 characters.

  • fieldsobject

    Keys up to 60 characters. Values: any JSON.

  • ownerIdstring

    Up 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_log

Log an activity on records in Customers: a task (open, with a due date), call, meeting, note or email, related to one or more records (contacts, accounts, opportunities, leads).

Scope crm:write

Arguments

  • relatedIdsstring[]required

    1–24 items. Each up to 40 characters.

  • type"task" | "call" | "meeting" | "note" | "email"required
  • subjectstringrequired

    1–255 characters.

  • bodystring

    Up to 32,000 characters.

  • dueDatestring

    Matches ^\d{4}-\d{2}-\d{2}$.

  • startAtstring

    Up to 40 characters.

  • durationMinutesinteger

    0–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_summary

The sales pipeline at a glance: open opportunities by stage (count, amount, weighted), won and lost this month and the last six months, per pipeline, and how many records each object has.

Scope crm:read · read-only

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_list

The organization's Marketing segments (saved audiences over contacts and leads): ids, names, their groups' filters and the last size estimate.

Scope marketing:read · read-only

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_get

One segment: its groups (Customers filters, engagement and list conditions) and the last size estimate.

Scope marketing:read · read-only

Arguments

  • segmentIdstringrequired

    1–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_estimate

Counts a segment's people (each address once) in the background and returns the segment: counting while it runs, then estimate. Read it again with marketing_segment_get for the result.

Scope marketing:read · read-only

Arguments

  • segmentIdstringrequired

    1–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_list

Marketing 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_list

Marketing campaigns, newest first: status (draft, waiting for approval, scheduled, sending, sent, paused, cancelled), topic, schedule and, once sending started, their numbers. Returns a cursor for the next page.

Scope marketing:read · read-only

Arguments

  • status"draft" | "pendingApproval" | "approved" | "scheduled" | "sending" | "sent" | "paused" | "cancelled" | "failed"
  • limitinteger

    1–100.

  • cursorstring

    Up 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_get

One campaign and its results: audience, topic, approval, schedule, send progress and numbers (sent, delivered, opened, clicked, bounced, complained, unsubscribed, skipped, conversions, revenue).

Scope marketing:read · read-only

Arguments

  • campaignIdstringrequired

    1–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_list

Marketing journeys: status (draft, running, paused, stopped), the live version and how many people entered, are in them, completed and reached the goal.

Scope marketing:read · read-only

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_get

One journey: its draft (entry, re-entry, goal and steps), versions, approval, and its numbers: totals, each step's (entered, completed, exited, goal) and each email and text step's sends.

Scope marketing:read · read-only

Arguments

  • journeyIdstringrequired

    1–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_stats_daily

The organization's Marketing numbers per UTC day and their totals: emails sent, delivered, opened, clicked, bounced, unsubscribed, conversions and revenue, texts, form submissions, journey entries and page views. Days are YYYYMMDD (the last 30 by default, 400 at most).

Scope marketing:read · read-only

Arguments

  • fromstring

    Matches ^\d{8}$.

  • tostring

    Matches ^\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_list

Marketing forms (web-to-lead): what they create, whether they're open, and their submissions and the spam they turned away.

Scope marketing:read · read-only

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_create

Drafts a campaign: a name, a topic id (from the settings' topics), an audience (segments and lists to include and exclude) and content (a block document, or a template id). It's only a draft: a person reviews, schedules and sends it in the Marketing app.

Scope marketing:write

Arguments

  • namestringrequired

    1–120 characters.

  • topicIdstringrequired

    1–60 characters.

  • include(object | object)[]required

    Up to 20 items.

  • exclude(object | object)[]

    Up to 20 items.

  • documentobject
  • document.subjectstringrequired

    Up to 200 characters.

  • document.preheaderstring

    Up to 250 characters.

  • document.blocksobject[]required

    Up to 200 items. Each values: any JSON.

  • templateIdstring

    1–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_approval

Asks the organization's approvers to approve a draft campaign as it stands (when the organization requires approvals). It never schedules or sends: once approved, a person schedules it in the Marketing app. Pass the version you read.

Scope marketing:write

Arguments

  • campaignIdstringrequired

    1–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_create

Drafts a journey with a name and description (and optionally a definition: entry, re-entry, goal and steps). It's only a draft: a person builds it on the canvas and publishes it in the Marketing app.

Scope marketing:write

Arguments

  • namestringrequired

    1–120 characters.

  • descriptionstring

    Up to 500 characters.

  • definitionobject

    Values: 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_find

Where is an aircraft now: by ICAO hex (7C6B2D), registration (VH-ABC) or callsign (QFA1). Answers from the live flight picture (areas being watched or viewed); an aircraft outside them falls back to its recorded track when a watch covers it.

Scope maps:read · read-only

Arguments

  • querystringrequired

    2–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_track

Recorded track of a watched aircraft over the last hours (positions every ~10 s while a watch covers it): start, end, distance and sampled points.

Scope maps:read · read-only

Arguments

  • hexstringrequired

    Matches ^[0-9a-fA-F]{6}$.

  • hoursnumber

    0.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_list

Flight 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_list

Flights a watch logged (each airframe by ICAO hex): when, start and end, distance, highest altitude, roads followed and events. Newest first.

Scope maps:read · read-only

Arguments

  • watchIdstringrequired

    Up to 40 characters.

  • hexstring

    Up to 8 characters.

  • limitinteger

    1–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_get

One logged flight: its events and road spans with a sampled track, or the whole track as a GPX, KML or CSV file (format).

Scope maps:read · read-only

Arguments

  • watchIdstringrequired

    Up to 40 characters.

  • flightIdstringrequired

    Up 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_events

Recent events of a flight watch (takeoffs, landings, signal lost or back, areas, orbits, roads followed, thresholds), newest first.

Scope maps:read · read-only

Arguments

  • watchIdstringrequired

    Up to 40 characters.

  • limitinteger

    1–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_list

The org's alert locations (bases, hospitals, airfields): name, position and on-site radius. Watches alert near one with near: { location: <locationId>, radiusKm }.

Scope maps:read · read-only

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_status

Whether your phone shares its location with Maps for near-me alerts (from the Maps app): phones, background or not, and until when the current fix counts. Never returns coordinates.

Scope maps:read · read-only

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_create

Scope maps:write

Arguments

  • namestringrequired

    1–120 characters.

  • hexstring

    Up to 8 characters.

  • registrationstring

    Up to 16 characters.

  • callsignstring

    Up to 16 characters.

  • typestring

    Up to 8 characters.

  • anyAircraftboolean
  • aircraftClass"helicopter" | "light" | "turboprop" | "jet" | "heavy" | "glider" | "balloon" | "drone"
  • presetstring

    Up to 40 characters.

  • nearobject
  • near.locationstringrequired

    2–40 characters.

  • near.radiusKmnumber

    0.2–100.

  • userIdsstring[]

    Up to 50 items. Each up to 60 characters.

  • excludeobject[]

    Up to 20 items.

  • exclude[].kind"hex" | "registration" | "callsign" | "type"required
  • exclude[].valuestringrequired

    1–16 characters.

  • areastring

    Up to 40 characters.

  • eventsstring[]

    Up to 16 items.

  • channels[]
  • groupIdsstring[]

    Up to 10 items. Each up to 40 characters.

  • roadRepeatMinutesinteger

    0–240.

  • visibility"private" | "org"
  • pinFirstMatchboolean
  • untilstring

    Up to 40 characters.

  • forHoursnumber

    0.25–87600.

  • maxNotificationsinteger

    1–1000000.

  • maxFlightsinteger

    1–100000.

  • scheduleDaysinteger[]

    Up to 7 items. Each 0–6.

  • scheduleStartstring

    Up to 5 characters.

  • scheduleEndstring

    Up to 5 characters.

  • timeZonestring

    Up to 64 characters.

  • logFlightsboolean
  • logRetentionDaysinteger

    0–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_create

Alert when aircraft circle or hold somewhere (searching, orbiting, holding), below 5,000 ft and ignoring airfield circuits within 3 km. where: a preset area (area), a circle, an org location (locationId) or near you (nearMe, your phone's location in the Maps app; to you only). aircraft: "any", a class (e.g. helicopter), { preset } or { callsign }; noCallsignOnly limits it to aircraft broadcasting no callsign. sensitivity: sensitive (0.75 turns within 3 km in 10 min), normal (1 turn, 2 km, 8 min; the default) or strict (2 turns, 1.5 km, 8 min), or explicit numbers. Alerts go by mobile and web push; add sms to channels to text them too.

Scope maps:write

Arguments

  • namestringrequired

    1–120 characters.

  • whereobjectrequired
  • where.areastring

    Up to 40 characters.

  • where.circleobject
  • where.circle.latnumberrequired

    -90–90.

  • where.circle.lonnumberrequired

    -180–180.

  • where.circle.radiusKmnumberrequired

    0.5–250.

  • where.locationIdstring

    Up to 40 characters.

  • where.nearMeobject
  • where.nearMe.radiusKmnumberrequired

    0.5–50.

  • aircraft"any" | "helicopter" | "light" | "turboprop" | "jet" | "heavy" | "glider" | "balloon" | "drone" | object | objectrequired
  • noCallsignOnlyboolean
  • sensitivity | object
  • channels[]
  • 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.

  • quietHoursobject
  • quietHours.startstringrequired

    Up to 5 characters.

  • quietHours.endstringrequired

    Up to 5 characters.

  • quietHours.timeZonestringrequired

    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": "circling_alert_create",
      "arguments": {
        "name": "Example",
        "where": {
          "area": "example",
          "circle": {
            "lat": 1,
            "lon": 1,
            "radiusKm": 1
          },
          "locationId": "<locationId>"
        },
        "aircraft": "any"
      }
    }
  }'
maps_location_create

Add an org alert location (a base, a hospital, an airfield): name, lat, lon and the on-site radius in metres (50–5,000; default 300). Watches then alert near it; someone on site gets one alert, the location's.

Scope maps:write

Arguments

  • namestringrequired

    1–120 characters.

  • latnumberrequired

    -90–90.

  • lonnumberrequired

    -180–180.

  • siteRadiusMinteger

    50–5000.

  • addressstring

    Up to 400 characters.

  • notestring

    Up 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_update

Change an org alert location (its owner or an org admin). Moving it moves every watch that uses it.

Scope maps:write

Arguments

  • locationIdstringrequired

    Up to 40 characters.

  • namestring

    1–120 characters.

  • latnumber

    -90–90.

  • lonnumber

    -180–180.

  • siteRadiusMinteger

    50–5000.

  • addressstring

    Up to 400 characters.

  • notestring

    Up 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_delete

Delete an org alert location (its owner or an org admin). Refused while watches use it; the error names them.

Scope maps:write

Arguments

  • locationIdstringrequired

    Up 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_delete

Delete your location from Maps: every phone's current fix, the phones sharing and their keys. Near-me alerts wait until the Maps app shares again.

Scope maps:write · destructive

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_pause

Pause a flight watch (nothing is evaluated or sent) or resume it with paused: false.

Scope maps:write

Arguments

  • watchIdstringrequired

    Up 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_restart

Start an ended flight watch again (after its end time, notification or flight limit) with its counters at zero.

Scope maps:write

Arguments

  • watchIdstringrequired

    Up 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_list

Current emergency incidents and warnings in Australia from the state agencies' public feeds (VicEmergency, NSW RFS, Queensland Fire Department, ACT ESA): Australian Warning System level, hazard, status, what to do and the agency's page. Filter by hazards, minimum level, state or a bounding box; near sorts by distance. Always point people to the official source for decisions.

Scope maps:read · read-only

Arguments

  • nearobject
  • near.latnumberrequired
  • near.lonnumberrequired
  • bboxobject
  • bbox.westnumberrequired
  • bbox.southnumberrequired
  • bbox.eastnumberrequired
  • bbox.northnumberrequired
  • 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"
  • state"ACT" | "NSW" | "NT" | "QLD" | "SA" | "TAS" | "VIC" | "WA"
  • limitinteger

    1–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_get

One incident or warning by id (from incidents_list): everything the agency says, and its history of level and status changes. Ended ones return their last version.

Scope maps:read · read-only

Arguments

  • incidentIdstringrequired

    Up 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_list

Watch zones in Maps: areas where emergency incidents and warnings alert people (by push, email or text), with their hazards, minimum level and status.

Scope maps:read · read-only

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_events

Recent alerts of a watch zone, newest first, with what was sent.

Scope maps:read · read-only

Arguments

  • zoneIdstringrequired

    Up to 40 characters.

  • limitinteger

    1–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_create

Make a watch zone that alerts on emergency incidents and warnings in Australia: areas (a circle around a point, an org location, your phone's location with near_me, a drawn polygon or a whole state), hazards, minimum warning level and which changes alert (new, escalated, downgraded, closed, updated). Channels default to push and email, plus texts when you have a verified number.

Scope maps:write

Arguments

  • namestringrequired

    1–120 characters.

  • areasobject[]required

    1–10 items.

  • areas[].kind"circle" | "location" | "near_me" | "state" | "polygon"required
  • areas[].latnumber

    -90–90.

  • areas[].lonnumber

    -180–180.

  • areas[].radiusKmnumber

    0.5–500.

  • areas[].locationIdstring

    Up to 40 characters.

  • areas[].state"ACT" | "NSW" | "NT" | "QLD" | "SA" | "TAS" | "VIC" | "WA"
  • areas[].ringobject[]

    3–500 items.

  • areas[].ring[].latnumberrequired
  • areas[].ring[].lonnumberrequired
  • areas[].labelstring

    Up to 80 characters.

  • hazards("bushfire" | "grass_fire" | "burn_off" | "structure_fire" | "vehicle_fire" | "fire" | "flood" | "storm" | "cyclone" | "tree_down" | "heat" | "tsunami" | "earthquake" | "landslide" | "hazmat" | "smoke" | "rescue" | "medical" | "accident" | "power" | "animal" | "other")[]
  • 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_update

Change a watch zone (its owner, or an org admin for org zones): fields given replace the current ones.

Scope maps:write

Arguments

  • zoneIdstringrequired

    Up to 40 characters.

  • namestring

    1–120 characters.

  • areasobject[]

    1–10 items.

  • areas[].kind"circle" | "location" | "near_me" | "state" | "polygon"required
  • areas[].latnumber

    -90–90.

  • areas[].lonnumber

    -180–180.

  • areas[].radiusKmnumber

    0.5–500.

  • areas[].locationIdstring

    Up to 40 characters.

  • areas[].state"ACT" | "NSW" | "NT" | "QLD" | "SA" | "TAS" | "VIC" | "WA"
  • areas[].ringobject[]

    3–500 items.

  • areas[].ring[].latnumberrequired
  • areas[].ring[].lonnumberrequired
  • areas[].labelstring

    Up to 80 characters.

  • hazards("bushfire" | "grass_fire" | "burn_off" | "structure_fire" | "vehicle_fire" | "fire" | "flood" | "storm" | "cyclone" | "tree_down" | "heat" | "tsunami" | "earthquake" | "landslide" | "hazmat" | "smoke" | "rescue" | "medical" | "accident" | "power" | "animal" | "other")[]
  • 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_pause

Pause a watch zone (no alerts) or resume it with paused: false.

Scope maps:write

Arguments

  • zoneIdstringrequired

    Up 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_delete

Delete a watch zone (its owner, or an org admin for org zones). Its alert history expires on its own.

Scope maps:write · destructive

Arguments

  • zoneIdstringrequired

    Up 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_overview

The organization's tenant overview: properties, member counts, the sign-in policy and security recommendations (members without a passkey or two-step sign-in, old invites, expiring keys and secrets).

Scope tenant:read · read-only

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_list

List the organization's members with role, title, department, status (active or blocked), guest access, groups, passkeys and last sign-in; and pending invites. Filter by text, role, status, sign-in age or two-step.

Scope tenant:read · read-only

Arguments

  • qstring

    Up 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_get

One member in detail: groups, browser sessions, keys they created, app assignments and recent sign-ins.

Scope tenant:read · read-only

Arguments

  • userIdstringrequired

    1–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_list

List 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_get

One group: members and owners, granted roles, Serverless App Service and repository access, and app assignments.

Scope tenant:read · read-only

Arguments

  • teamIdstringrequired

    1–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_list

Built-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_permissions

What 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

  • userIdstring

    1–64 characters.

  • teamIdstring

    1–64 characters.

  • appstring

    1–32 characters.

  • scopestring

    1–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_ins

Members' sign-ins and failed sign-ins, newest first: method, address, approximate place and device.

Scope tenant:read · read-only

Arguments

  • userIdstring

    Up to 64 characters.

  • result"success" | "failure"
  • cursorstring

    Up 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_get

The 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_invite

Invite someone to the organization by email. The invite is mailed; the link is returned to share. Guests (external people) can be developers or viewers, with an access lifetime in days.

Scope tenant:write

Arguments

  • emailstringrequired

    Email address.

  • role"owner" | "admin" | "developer" | "viewer"

    Default "developer".

  • titlestring

    Up to 100 characters.

  • departmentstring

    Up to 100 characters.

  • guestboolean
  • guestDaysinteger
  • teamIdsstring[]

    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_update

Change a member's role, title or department. Only owners change owners; nobody assigns a role above their own.

Scope tenant:write

Arguments

  • userIdstringrequired

    1–64 characters.

  • role"owner" | "admin" | "developer" | "viewer"
  • titlestringor null

    Up to 100 characters.

  • departmentstringor null

    Up 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_block

Block a member's sign-in to this organization: no new tokens, and current ones stop within 30 seconds. They stay a member.

Scope tenant:write · destructive

Arguments

  • userIdstringrequired

    1–64 characters.

  • reasonstring

    Up 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_unblock

Unblock a member's sign-in; they sign in again to reach the organization.

Scope tenant:write

Arguments

  • userIdstringrequired

    1–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_sessions

End a member's sessions for this organization (they sign in again) and disconnect their MCP clients here; keys also revokes keys they created here.

Scope tenant:write · destructive

Arguments

  • userIdstringrequired

    1–64 characters.

  • keysboolean

    Default 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_set

Add a member to a group, make them a group owner, or take them out (role null).

Scope tenant:write

Arguments

  • teamIdstringrequired

    1–64 characters.

  • userIdstringrequired

    1–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_list

The 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_describe

Key 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_query

Query a database (or one of its indexes) by partition key, with an optional sort key condition and filters. Returns at most limit items and a cursor for the next page. Values are typed DynamoDB JSON.

Scope resources:read · read-only

Arguments

  • resourceIdstringrequired
  • indexstring

    Up to 255 characters.

  • partitionobject | object | object | object | objectrequired
  • sortobject
  • sort.op"=" | "<" | "<=" | ">" | ">=" | "begins_with" | "between"required
  • sort.valueobject | object | object | object | objectrequired
  • sort.value2object | object | object | object | object
  • filtersobject[]

    Default []. Up to 10 items.

  • filters[].attributestringrequired

    1–255 characters.

  • filters[].op"=" | "<>" | "<" | "<=" | ">" | ">=" | "begins_with" | "contains" | "between" | "exists" | "not_exists"required
  • filters[].valueobject | object | object | object | object
  • filters[].value2object | object | object | object | object
  • match"all" | "any"

    Default "all".

  • limitinteger

    Default 25. 1–100.

  • forwardboolean

    Default true.

  • cursorstring

    Up 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_scan

Scan a database page by page, optionally with filters. Prefer database_query when you know the partition key.

Scope resources:read · read-only

Arguments

  • resourceIdstringrequired
  • indexstring

    Up to 255 characters.

  • filtersobject[]

    Default []. Up to 10 items.

  • filters[].attributestringrequired

    1–255 characters.

  • filters[].op"=" | "<>" | "<" | "<=" | ">" | ">=" | "begins_with" | "contains" | "between" | "exists" | "not_exists"required
  • filters[].valueobject | object | object | object | object
  • filters[].value2object | object | object | object | object
  • match"all" | "any"

    Default "all".

  • limitinteger

    Default 25. 1–100.

  • cursorstring

    Up 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_get

Read one item by its key (strongly consistent).

Scope resources:read · read-only

Arguments

  • resourceIdstringrequired
  • keyobjectrequired

    Values: 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_list

The 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_list

List one folder of a bucket: subfolders and files (key, size, last modified). prefix is a folder path ending in / (empty for the root).

Scope resources:read · read-only

Arguments

  • resourceIdstringrequired
  • prefixstring

    Default "". Up to 1,024 characters.

  • cursorstring

    Up to 2,048 characters.

  • limitinteger

    Default 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_url

A link that downloads one file for the next 5 minutes.

Scope resources:read · read-only

Arguments

  • resourceIdstringrequired
  • keystringrequired

    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_download_url",
      "arguments": {
        "resourceId": "<resourceId>",
        "key": "example"
      }
    }
  }'
database_item_put

Create an item (an existing key is an error), or with replace replace the existing item with the same key (a missing one is an error).

Scope resources:write

Arguments

  • resourceIdstringrequired
  • itemobjectrequired

    Values: any JSON.

  • replaceboolean

    Default 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_delete

Delete one item by its key.

Scope resources:write · destructive

Arguments

  • resourceIdstringrequired
  • keyobjectrequired

    Values: 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_url

A link (15 minutes) to upload one file with an HTTP PUT, up to 5 GB. Send the same Content-Type header as contentType.

Scope resources:write

Arguments

  • resourceIdstringrequired
  • keystringrequired

    Up to 1,024 characters.

  • contentTypestring

    Up 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_delete

Delete files (keys) and folders (prefixes ending in /, with everything in them). done: false means call again to finish large folders.

Scope resources:write · destructive

Arguments

  • resourceIdstringrequired
  • keysstring[]

    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_traffic

Traffic of the organization's deployments (or one Serverless App Service's): requests, bandwidth, status classes, cache hits, p50/p95 latency, a series over the range and top paths, countries and deployments. Rolled up hourly from edge logs.

Scope analytics:read · read-only

Arguments

  • range"24h" | "7d" | "30d" | "90d"

    Default "24h".

  • projectIdstring

    Matches ^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_list

Keys that protect the organization's data (with keys:read: Drive, secrets, connectors and integrations too) and its own keys for encrypting and signing: id, name, what it protects, algorithm, current version, uses in the last 30 days. Never key material.

Scope none: every key gets it · read-only

Also checks keys:read

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_get

One key by id (ck_…) or name: versions still in use, created, last rotated, last used, uses in the last 30 days, rotation schedule and recent re-encryption jobs. Never key material.

Scope none: every key gets it · read-only

Arguments

  • keystringrequired

    1–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_encrypt

Encrypts up to 64 KB with one of the organization's aes-256-gcm keys. Returns a ciphertext (k1.…) to store; keys_decrypt opens it.

Scope keys:use

Arguments

  • keystringrequired

    1–100 characters.

  • plaintextstringrequired

    Up to 90,000 characters.

  • encoding"utf8" | "base64"

    Default "utf8".

  • contextobject

    Keys 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_decrypt

Decrypts a ciphertext (k1.…) made with one of the organization's keys, with the context it was encrypted with.

Scope keys:use

Arguments

  • ciphertextstringrequired

    1–200,000 characters.

  • encoding"utf8" | "base64"

    Default "utf8".

  • contextobject

    Keys 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_sign

Signs up to 64 KB with one of the organization's ed25519 or ecdsa-p256 keys. Returns a signature (k1s.…).

Scope keys:use

Arguments

  • keystringrequired

    1–100 characters.

  • messagestringrequired

    Up 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_verify

Checks a signature (k1s.…) from keys_sign against a message. Returns valid: true or false.

Scope keys:use · read-only

Arguments

  • messagestringrequired

    Up to 90,000 characters.

  • signaturestringrequired

    1–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_list

Secrets (sensitive environment variables) of a Serverless App Service, or the organization's shared ones: name, environments, version, rotation reminder and when it's due. Never values.

Scope env:read · read-only

Arguments

  • projectstring

    Up 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_get

A secret's value, only if its access rule lets the caller read it (owners and admins, plus the roles and groups it names). Every read is in the audit log. Prefer not to repeat values back unless asked.

Scope env:read

Also checks env:write

Arguments

  • projectstring

    Up to 100 characters.

  • keystringrequired

    1–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_set

Sets a secret (a sensitive environment variable) to a new value: a new version, for the given environments (default all three). Takes effect on the next deployment.

Scope env:write

Arguments

  • projectstring

    Up to 100 characters.

  • keystringrequired

    1–256 characters.

  • valuestringrequired

    Up 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_list

Remote 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": {}
    }
  }'