Which tools an assistant sees depends on who is connected: signed-in people get the tools their role allows, tokens get the tools whose scope they carry. Assistants pick tools themselves; you never call them by name, but the names show up in the assistant's activity and in the CMS log.
Access in the tables below is for signed-in people. Managers and group editors are limited to the groups they manage or edit, unless a tool says otherwise.
| Access | Meaning |
|---|
| All | Admins, global editors, group editors and managers |
| Editors | Admins, global editors and group editors |
| Admins + managers | Admins and managers |
| Admins + global editors | Admins and global editors |
| Admins | Admins only |
Reading the argument tables
Each section starts with a table of its tools, followed by one argument table per tool.
- An argument is optional unless its notes start with Required.
- A boolean is
false when left out, unless the notes give another default. - Dates are
YYYY-MM-DD. Times are HH:MM, 24-hour. - Limits come in two kinds. "1 to 50" means a value outside the range is rejected. "At most 25" means a larger value is accepted and treated as 25. Every
limit must be at least 1. groups, group_ids, user_ids and the other _ids arguments are arrays of integer ids, from list_groups and search_users.cursor is the next_cursor of the previous call, passed back unchanged; omit it for the first page. Keep calling while has_more is true. total, where a tool returns it, is counted on the first page and is null on later pages.
Content
| Tool | What it does | Access | Scope |
|---|
list_handbooks | Catalogue of handbooks with cms_url, by position, 25 a page, paged with cursor; total says how many there are. | All | read:handbooks |
get_handbook | One handbook's chapters with article ids. | All | read:handbooks |
list_courses | Catalogue of courses with cms_url, by position, 25 a page, paged with cursor; total says how many there are. | All | read:courses |
get_course | One course's chapters with article and quiz ids. | All | read:courses |
list_collections | Collections (the folders handbooks, courses and forms are grouped in) with the items each holds, in order — the place to find a collection id or which collection an item is in. Returns every collection. Tokens see the types their read scopes cover, published only. | Admins + global editors | read:handbooks, read:courses or read:forms |
get_article | Full text of a handbook or course chapter, announcement, event or calendar entry as markdown, with a link to edit it in the CMS. | All | read:articles |
search_content | Full-text search across handbooks, courses, announcements, events and calendar entries. Each match has a 200-character excerpt and cms_url. Reports match_quality. | All | read:articles |
create_handbook | New handbook as a draft. | Editors | write:handbooks |
create_course | New course as a draft. | Editors | write:courses |
add_chapter | Add a chapter of headers, paragraphs and image galleries to a handbook or course, with an optional chapter cover. Live if the container is published unless is_published: false. | All | write:handbooks or write:courses |
add_quiz | Attach a quiz (1 to 30 questions) to a course chapter. Questions can be multiple choice, true/false, put in order, or match the pairs. The quiz shows whenever its chapter does, so it is live on a published chapter. | All | write:courses |
compose_article | Append content blocks to any article. Live on published content unless is_published: false. | All | write:articles plus the owner's write scope (e.g. write:handbooks for a handbook chapter's article; see owned articles) |
set_cover | Replace the cover image of an existing handbook, course or chapter with an image from upload_media. Live on published content. | All | write:handbooks or write:courses, matching the container |
add_chapter, add_quiz, compose_article and set_cover follow the CMS edit rights. Managers and group editors can change content targeted at the groups they manage or edit, and their own drafts; managers can change a course only while it is a draft.
list_handbooks
| Argument | Type | Notes |
|---|
include_drafts | boolean | Also list unpublished handbooks and chapters. |
include_chapters | boolean | Add each handbook's chapter tree. For one handbook, get_handbook is lighter. |
cursor | string | Paging cursor. |
get_handbook
| Argument | Type | Notes |
|---|
handbook_id | integer | Required. From list_handbooks. |
list_courses
| Argument | Type | Notes |
|---|
include_drafts | boolean | Also list unpublished courses and chapters. |
include_chapters | boolean | Add each course's chapter tree. For one course, get_course is lighter. |
cursor | string | Paging cursor. |
get_course
| Argument | Type | Notes |
|---|
course_id | integer | Required. From list_courses. |
list_collections
| Argument | Type | Notes |
|---|
type | string | handbook, course or form. Omit for every type. |
get_article
| Argument | Type | Notes |
|---|
article_id | integer | Required. |
locale | string | Language to read, e.g. en or da. Defaults to the company's content language. |
include_element_ids | boolean | Tags each block with its element id ([paragraph element #N]), needed to propose edits. A header or paragraph with no translation in locale is tagged [paragraph element #N — no "fr" translation yet, showing the main-language text], since it falls back to the main language. |
search_content
| Argument | Type | Notes |
|---|
query | string | Required. Keywords or a phrase. Up to 500 characters. |
handbook_id | integer | Search one handbook only, id from list_handbooks. Implies the handbooks kind: in must then be omitted or ["handbooks"], any other kind is an error. An unknown or unreadable id is an error, never an empty result. |
in | array of strings | Content kinds to search: handbooks, courses, announcements, companyevents, customevents (calendar entries). Defaults to all. |
include_past | boolean | Also match events that already happened. |
limit | integer | Default 10, at most 25. |
create_handbook
| Argument | Type | Notes |
|---|
title | string | Required. Up to 255 characters. |
groups | array of integers | Group ids to target; each must exist. Omit for everyone. |
locale | string | Defaults to your default content language. |
cover_media_id | integer | Cover image: a media_id from upload_media. |
create_course
| Argument | Type | Notes |
|---|
title | string | Required. Up to 255 characters. |
groups | array of integers | Group ids to target; each must exist. Omit for everyone. |
locale | string | Defaults to your default content language. |
cover_media_id | integer | Cover image: a media_id from upload_media. |
add_chapter
| Argument | Type | Notes |
|---|
container | string | Required. handbook or course. |
container_id | integer | Required. The handbook or course id. |
title | string | Required. Up to 255 characters. |
subtitle | string | Up to 255 characters. |
blocks | array of objects | Required. 1 to 100 content blocks, in order. |
is_published | boolean | Default true: the chapter is live as soon as the container is. false adds it as a draft, hidden in the app until someone publishes it in the CMS. |
locale | string | Defaults to the container's base language. A language the container does not have yet is switched on for it. |
cover_media_id | integer | Chapter cover: a media_id from upload_media. |
add_quiz
| Argument | Type | Notes |
|---|
chapter_id | integer | Required. A course chapter id, from add_chapter or get_course. A chapter that already has a quiz is refused; quizzes are edited in the CMS. |
questions | array of objects | Required. 1 to 30 questions, see below. |
title | string | Up to 255 characters. |
max_incorrect_answers | integer | Wrong answers allowed before the quiz is failed. Default 0. 0 to one less than the number of questions; a larger value is rejected, not lowered. |
shuffle_questions | boolean | Shuffle the question order on retakes. Default true. |
show_wrong_answers | boolean | Show the employee which answers were wrong. Default false. |
locale | string | Defaults to the course's base language. |
Each question is an object:
| Key | Type | Notes |
|---|
type | string | choices (multiple choice, the default), boolean (true/false), order (put in order) or pairs (match the pairs). |
question | string | Required. Up to 1,000 characters. For boolean, a statement. |
answer | boolean | Required for boolean: whether the statement is true. |
choices | array of objects | Required for choices, order and pairs. choices: 2 to 10, at least one correct. order: 2 to 5, listed in the correct order. pairs: 2 to 5. |
choices[].text | string | Required. Up to 500 characters. |
choices[].correct | boolean | choices only: marks a correct choice. |
choices[].pair | string | Required for pairs: the text that matches text. Up to 500 characters. |
compose_article
| Argument | Type | Notes |
|---|
article_id | integer | Required. The article to append to. |
blocks | array of objects | Required. 1 to 100 content blocks, in order. |
is_published | boolean | Default true: the blocks are live wherever the article already is. false appends them as drafts, hidden in the app and left out of search until someone publishes each one in the CMS. |
locale | string | Defaults to the article's base language. |
set_cover
Pass exactly one of handbook_id, course_id or article_id.
| Argument | Type | Notes |
|---|
cover_media_id | integer | Required. A media_id from upload_media. |
handbook_id | integer | The handbook's own cover (not a chapter's). |
course_id | integer | The course's own cover (not a chapter's). |
article_id | integer | A chapter, by the article_id that get_handbook and get_course list, not the chapter id. |
People
| Tool | What it does | Access | Scope |
|---|
search_users | Find employees by name or email, or list them by filter, with email address, groups, manager status, registration status and source (manual or synced). Registered users first, paged with cursor. | All | read:users |
get_user | One employee's profile: email address and phone number, locale, groups with manager and editor flags, roles, registration status, hire date, last activity, whether they are away, and sync origin (source, synced_from). Finds users who have not registered yet. | All | read:users |
list_groups | Departments, professions and custom groups with managers and member counts. Alphabetical, paged with cursor; total says how many match. | All | read:groups |
preview_audience | Who would see content with a given targeting, or an item's current audience. A journey also only reaches the people its items reach. | All | read:groups |
get_org_chart | The org chart as a tree, or one person's place in it. Person boxes include the description an admin wrote on them. Needs the org chart feature. | All, once the chart is published (admins always) | read:org_chart |
list_external_departments | Departments from connected HR or scheduling systems and whether they are mapped, newest first. | Admins | read:groups |
list_external_groups | Professions from connected HR or scheduling systems and whether they are mapped, newest first. | Admins | read:groups |
create_group | Create a department, profession or custom group. Live immediately. | Admins | write:groups |
search_users
| Argument | Type | Notes |
|---|
query | string | Name or email fragment. Omit it to list by the filters alone. |
group_id | integer | Only members of this group. |
source | string | manual (added by hand in the CMS) or synced (from an HR or scheduling system). Omit for both. |
registration | string | registered (use the app), unregistered (invited or not invited) or all. Default all. |
staff_card | string | missing: only employees without a published, unexpired staff card of their own (a card shared with a group does not count). Kiosk, deactivated and departed users are left out. |
limit | integer | Default 10, at most 100. |
cursor | string | Paging cursor. |
get_user
| Argument | Type | Notes |
|---|
user_id | integer | Required. From search_users. |
list_groups
| Argument | Type | Notes |
|---|
type | string | department, profession or custom. The value is not checked: any other value returns no groups. |
limit | integer | Groups per page. Default 50, at most 100. |
include_mappings | boolean | Add each group's current external department and profession mappings. |
cursor | string | Paging cursor. |
preview_audience
Pass group_ids and/or user_ids for a proposed targeting, or entity_type with entity_id for an item's current audience. When both are given, the ids are used.
| Argument | Type | Notes |
|---|
group_ids | array of integers | Candidate target groups. An empty array with no user_ids means everyone. |
user_ids | array of integers | Individual employees, added on top of the groups. Not for announcements, which cannot target people by name. |
entity_type | string | handbook, course, announcement, event, wall, calendar_entry or journey. |
entity_id | integer | The id of that item. |
get_org_chart
With no arguments the whole chart comes back as a tree. Otherwise the first of query, user_id, group_id, unplaced and node_id that is given decides the answer.
| Argument | Type | Notes |
|---|
query | string | Name or email fragment instead of user_id. Answers directly when one person matches, else lists candidates. |
user_id | integer | One person's place: manager, chain of command, direct reports. |
group_id | integer | A department box: its members, manager and sub-boxes. |
unplaced | boolean | List active people who have no box and are in no department box. |
node_id | integer | One subtree, by a box id from an earlier call. |
depth | integer | At least 1. How many levels of boxes to return for the whole tree, a group_id or a node_id (1 = the given level only); deeper boxes report children_count. Default: all levels. |
limit | integer | People listed on a group_id or unplaced call. Default 25, at most 100. |
list_external_departments
| Argument | Type | Notes |
|---|
unmapped | boolean | Only departments not yet mapped onto a Monotree department. A custom group does not count as a mapping. |
limit | integer | Default 100, at most 200. |
list_external_groups
| Argument | Type | Notes |
|---|
unmapped | boolean | Only professions not yet mapped onto a Monotree profession. A custom group does not count as a mapping. |
limit | integer | Default 100, at most 200. |
create_group
| Argument | Type | Notes |
|---|
name | string | Required. Up to 255 characters. |
type | string | department (a location or store, the default), profession (a job title) or custom. |
is_open | boolean | Custom groups only: employees can join on their own. true on another type is an error. |
Communication
| Tool | What it does | Access | Scope |
|---|
list_walls | Social walls the connected identity can see, with post counts. Alphabetical, paged with cursor; total says how many match. | All | read:walls |
create_wall | Social wall as a draft, or published with is_published: true when you ask for it. Group editors can only target groups they manage or edit. Needs the walls feature. | Admins and editors | write:walls |
update_wall | Change a wall's name, description, groups or cover, or publish or unpublish it. Group editors can only add groups they manage or edit and must keep one of them. Needs the walls feature. | Admins and editors of the wall | write:walls |
list_posts | Recent published posts. | All | read:posts |
list_events | Upcoming company events and calendar entries. Calendar entries are only listed while the calendar feature is on. | All | read:events (read:calendar_entries for calendar rows) |
list_announcements | Announcements newest first, with article_id, publication date and target groups — answers "what went out last month". Drafts are dated by creation and carry scheduled_for when scheduled. | All | read:announcements |
create_post | Wall post as a draft. | All, where the person may post | write:posts |
create_announcement | Announcement as a draft. | All | write:announcements |
create_event | Company event as a draft. | All | write:events |
create_calendar_entry | Calendar entry as a draft. Needs the calendar feature. A token made with Create MCP token does not carry its scope. | All | write:calendar_entries |
list_walls
| Argument | Type | Notes |
|---|
limit | integer | Walls per page. Default 10, at most 25. |
include_drafts | boolean | Also list unpublished walls. |
cursor | string | Paging cursor. |
create_wall
| Argument | Type | Notes |
|---|
name | string | Required. Up to 255 characters. |
description | string | Text shown under the wall name. |
groups | array of integers | Group ids to target; each must exist. Omit for everyone. Group editors must pass groups they manage or edit. |
cover_media_id | integer | Cover image: a media_id from upload_media. |
is_published | boolean | Publish at once instead of saving a draft. Default false. |
update_wall
Only the arguments you pass change.
| Argument | Type | Notes |
|---|
wall_id | integer | Required. From list_walls or create_wall. |
name | string | New name. Up to 255 characters, not empty. |
description | string | New text under the name. An empty string removes it. |
groups | array of integers | Replaces the current groups. An empty array targets everyone, which group editors cannot do. A wall with individual users reaches only those users when it has no groups. |
cover_media_id | integer | New cover: a media_id from upload_media. |
remove_cover | boolean | Removes the cover. Not together with cover_media_id. |
is_published | boolean | true publishes the wall, false turns it back into a draft. Leave out to keep its state. |
list_posts
| Argument | Type | Notes |
|---|
wall_id | integer | Only posts from this wall, id from list_walls. |
days | integer | How far back to look. 1 to 365, default 30. |
limit | integer | Default 10, at most 25. |
list_events
| Argument | Type | Notes |
|---|
from | string | Start of the window, a date. Default today. |
to | string | End of the window, a date. Open-ended when left out. |
limit | integer | Default 10, at most 25, counted over events and calendar entries together. |
include_drafts | boolean | Also list unpublished company events and calendar entries. |
list_announcements
| Argument | Type | Notes |
|---|
from | string | Only announcements published on or after this date. |
to | string | Only announcements published on or before this date. |
limit | integer | Default 20, at most 50. |
include_drafts | boolean | Also list unpublished announcements. |
create_post
| Argument | Type | Notes |
|---|
body | string | Required. The post text. |
wall_id | integer | Defaults to the main wall. |
create_announcement
| Argument | Type | Notes |
|---|
title | string | Required. Up to 255 characters. |
body | string | Required. Plain text; line breaks are kept. |
subtitle | string | Shown under the headline. Up to 255 characters. |
groups | array of integers | Group ids to target; each must exist. Omit for everyone. |
locale | string | Defaults to your default content language. |
create_event
| Argument | Type | Notes |
|---|
title | string | Required. Up to 255 characters. |
body | string | Required. Plain text; line breaks are kept. |
starts_at | string | Required. Start date. |
starts_time | string | Start time, HH:MM. |
ends_at | string | End date. |
location | string | Up to 255 characters. |
groups | array of integers | Group ids to target; each must exist. Omit for everyone. |
locale | string | Defaults to your default content language. |
cover_media_id | integer | Cover image: a media_id from upload_media. |
create_calendar_entry
| Argument | Type | Notes |
|---|
title | string | Required. Up to 255 characters. |
starts_at | string | Required. Start date. |
body | string | Description. Plain text; line breaks are kept. |
starts_time | string | Start time, HH:MM. |
ends_at | string | End date, on or after starts_at. |
ends_time | string | End time, HH:MM. |
groups | array of integers | Group ids to target; each must exist. Omit for everyone. |
calendar_event_type_id | integer | A published calendar event type. Defaults to the published "Default" type. |
mute_notifications | boolean | Skip the day-of notification, e.g. for bulk-created bookings. Default false. |
locale | string | Defaults to your default content language. |
Training
| Tool | What it does | Access | Scope |
|---|
list_journeys | Catalogue of journeys with id, title, type, publication status, item count and target groups — the place to find a journey id. At most 25, preboarding first, with no paging: total is the full count and has_more is true when the list was cut, so narrow it with type. Completion figures come from get_academy_stats. | Editors | read:courses |
get_journey | A journey's items in order, including journey-list tasks. | Editors | read:courses |
create_journey | Journey as a draft from existing courses, handbooks and forms. | Editors | write:courses |
assign_course | Enrol people or groups on a course. Dry run until confirm: true. Managers can only assign draft courses. | All | write:courses |
assign_journey | Roll a journey out to more groups. Dry run until confirm: true. Not the preboarding journey, which takes no groups. | Editors | write:courses |
list_expiring_certificates | Expired and soon-expiring certificates per employee, most urgent first. Only each employee's latest issuance of a certificate counts, so an expired one replaced by a valid one is left out. Kiosk users and users excluded from statistics are left out. | Admins + managers | read:certificates |
get_user_progress | One employee's onboarding, journeys, courses and certificates. | Admins + managers | read:stats |
list_journeys
| Argument | Type | Notes |
|---|
type | string | preboarding, onboarding, custom or offboarding. Omit for every type. The preboarding journey is listed only while preboarding is enabled for the company. |
include_drafts | boolean | Also list unpublished journeys. |
get_journey
| Argument | Type | Notes |
|---|
journey_id | integer | Required. From list_journeys. |
create_journey
| Argument | Type | Notes |
|---|
title | string | Required. Up to 255 characters. |
items | array of objects | Required. 1 to 50 items, see below. The order of the array is the order employees meet them in. |
groups | array of integers | Group ids to target; each must exist. Omit for everyone. |
days_after_hire | integer | The whole journey starts this many days after an employee's hire date. 1 to 3,650. Applies to the journey, not to single items. |
body | string | Short description shown to employees. Up to 5,000 characters. |
locale | string | Defaults to your default content language. |
Each item is an object:
| Key | Type | Notes |
|---|
type | string | Required. course, handbook or form. |
id | integer | Required. The course, handbook or form id. |
hired_from_date | string | A date. Limits this item to employees hired on or after it. It is not timing: an item without it goes to everyone enrolled. |
assign_course
Pass user_ids, group_ids or both.
| Argument | Type | Notes |
|---|
course_id | integer | Required. |
user_ids | array of integers | Employees to enrol. Up to 100 ids; a longer array is rejected. |
group_ids | array of integers | Whole groups to enrol. Up to 50 ids; a longer array is rejected. |
confirm | boolean | Left out or false: a dry run that returns the plan. true enrols, once the person has approved the plan. |
assign_journey
| Argument | Type | Notes |
|---|
journey_id | integer | Required. |
group_ids | array of integers | Required. Groups to roll the journey out to. 1 to 50. |
confirm | boolean | Left out or false: a dry run that returns the plan. true assigns, once the person has approved the plan. |
list_expiring_certificates
| Argument | Type | Notes |
|---|
days | integer | How far ahead to look. 1 to 365, default 90. |
group_ids | array of integers | Only members of these groups. |
limit | integer | Default 25, at most 50. |
get_user_progress
| Argument | Type | Notes |
|---|
user_id | integer | Required. From search_users. |
Form owners and alarm recipients get the form tools only when they are also an admin, editor or manager. Other employees cannot connect an assistant; see Authorization.
| Tool | What it does | Access | Scope |
|---|
list_forms | Catalogue of forms with id, title, publication status, response count, latest response date and cms_url — the place to find a form_id. Newest first, paged with cursor. Admins and global editors see every form, group editors the forms targeted at their groups, and everyone the forms they own. Whistleblower forms excluded. | Editors + managers who own a form | read:forms |
get_form | A form's fields, choices, targeting and response count. Owners can read their own forms whatever the targeting. Whistleblower forms excluded. | Editors + managers who own a form | read:forms |
get_form_responses | Recent form responses with answers. Each response carries its reference as the CMS shows it (null on a form without numbering), status, deadline, assignees (id and name), whether it is archived, and its answers as a list of field_id, title and value in the form's field order, so fields that share a title each keep their answer. Newest first, paged with cursor; total says how many match. Admins see everything, other users the responses of forms they own or were alarmed about — the same rule as the CMS responses list. | Admins + editors and managers who own a form or get its alarms | read:formresponses |
get_form_alarms | Answers that crossed an alarm threshold, each with its response's form_response_id and reference. Admins see everything, other users the alarms that notify them — directly, via a group, or as owner of the form. | Admins + editors and managers who own a form or get its alarms | read:formresponses |
list_todo_lists | To-do list templates with task counts and groups. Returns every template. | All | read:todolists |
get_todo_list | A template's tasks. | All | read:todolists |
get_todo_compliance | Checklist completion per department, worst first. Needs the to-do feature. | Admins + managers | read:stats |
| Argument | Type | Notes |
|---|
status | string | published (the default), draft or all. |
limit | integer | Default 10, at most 25. |
cursor | string | Paging cursor. |
| Argument | Type | Notes |
|---|
form_id | integer | Required. From list_forms, or the form_id of a response (not the response id). |
| Argument | Type | Notes |
|---|
form_id | integer | Only responses to this form. |
status | string | Response status: todo, in_progress or done. The value is not checked: any other value returns no responses. |
days | integer | How far back to look. 1 to 365, default 30. |
limit | integer | Default 10, at most 25. |
cursor | string | Paging cursor. |
archived | boolean | List only archived responses instead of the open ones, for example to find one to restore. |
| Argument | Type | Notes |
|---|
days | integer | How far back to look. 1 to 90, default 7. |
limit | integer | Default 10, at most 25. |
list_todo_lists
| Argument | Type | Notes |
|---|
include_drafts | boolean | Also list unpublished templates. |
get_todo_list
| Argument | Type | Notes |
|---|
list_id | integer | Required. From list_todo_lists. |
get_todo_compliance
| Argument | Type | Notes |
|---|
days | integer | How far back to look. 1 to 90, default 7. |
group_ids | array of integers | Only these departments. Omit for all. |
Insights
| Tool | What it does | Access | Scope |
|---|
get_academy_stats | Onboarding, course and journey completion. | Admins + managers | read:stats |
get_academy_overview | The Academy dashboard figures, per department and per user. | All | read:stats |
get_engagement_stats | App usage over time, adoption per department, user and content summaries. | Admins + global editors; managers get engagement and adoption | read:stats |
get_content_reach | Most or least viewed handbooks or posts. | Admins + global editors | read:stats |
audit_content | Published handbooks ranked by how long since they were edited. | Admins + global editors | read:stats |
get_ai_chat_insights | Content gaps from what employees asked the AI chat: topics the content couldn't answer, each with the content to write, the handbook it fits in and up to 3 of the questions, redacted. Also where the AI chat helped and the most-cited content. User counts come as bands, never who asked. Returns the latest report from the AI Chat insights page and never computes one. Company-wide. Needs the AI chat feature. | Admins + global editors | read:stats |
manager_hub_summary | The Manager Hub department report. Needs the Manager Hub feature. | Managers; admins, global editors and group editors when the company's Manager Hub settings let them open it | read:managerhub |
get_survey_results | Survey results per question for one run of a survey: answer counts, averages and choice counts, plus up to 15 of the most recent free-text answers per question, word for word and shortened to 200 characters. Never with names. Free text is never split by department, but department_id and a manager's departments narrow it like the figures. | Admins + managers | read:surveys |
get_academy_stats
| Argument | Type | Notes |
|---|
area | string | onboarding, courses, journeys or all. Default all. |
group_ids | array of integers | Only count members of these groups. Omit for company-wide totals. |
per_department | boolean | One row per department (onboarding and course completion) in a single call. Each department's course completion is pooled and also split per course in by_course, leaving out courses nobody in the department can see. Journeys are not split. |
course_ids | array of integers | Only count these published courses, with or without per_department. At least one id when passed. With per_department, pass only the courses you need: the split lists every course for every department. |
get_academy_overview
| Argument | Type | Notes |
|---|
group_ids | array of integers | Only count members of these groups: any group within a type, every type given. Omit for everything you may see. |
per_department | boolean | Add one row per department with the same figures, the dashboard's comparison table. |
include_users | boolean | Add the users table: each person's onboarding status and completion percentages. sort, onboarding_status and limit apply to it. |
sort | string | overall_pct (the default, least complete first), onboarding_pct, journeys_pct, courses_pct or name. Prefix with - for descending, e.g. -name. Any other value falls back to overall_pct. |
onboarding_status | array of strings | Only users in these statuses: completed, overdue, in_progress, not_started. |
limit | integer | User rows. 1 to 25, default 10. The total is always reported. |
get_engagement_stats
| Argument | Type | Notes |
|---|
area | string | users, engagement, adoption, content or all. Default all. |
granularity | string | Period size of the engagement series: day, week, month or year. Default week. |
scope | integer | How many periods of the engagement series, counting back from today. 1 to 52, default 12. |
group_ids | array of integers | Only count members of these groups. Applies to engagement and adoption. Omit for company-wide figures. |
get_content_reach
| Argument | Type | Notes |
|---|
kind | string | Required. handbooks or posts. |
months | integer | Look-back window. 1 to 24, default 3. |
direction | string | desc (most viewed first, the default) or asc (least viewed first). |
limit | integer | 1 to 25, default 10. |
audit_content
| Argument | Type | Notes |
|---|
limit | integer | 1 to 50, default 25. |
get_ai_chat_insights
| Argument | Type | Notes |
|---|
days | integer | The report period: 7, 30 or 90, or 365 when that is the default. Leave out for the default period, the shortest of 30, 90 and 365 days with enough questions. |
manager_hub_summary
| Argument | Type | Notes |
|---|
department_ids | array of integers | Department ids from list_groups. Defaults to every department the person can open in the Manager Hub; all departments for tokens. |
get_survey_results
| Argument | Type | Notes |
|---|
survey_id | integer | The survey. Omit to list the 25 newest surveys whose results the caller may read, with id, title and number of runs, and no paging. A manager sees only surveys whose results the CMS shows them. |
run | string | Start date of the run to report on, from the runs list. Defaults to the latest finished run, or the running one when none has finished. |
by_department | boolean | Split every question by the department the respondents answered for. |
department_id | integer | Only answers from this department (a group of type department). Also splits by department. |
| Tool | What it does | Access | Scope |
|---|
upload_media | Store an image and get a media_id for image galleries or a cover on an event, handbook, course, chapter or wall. Only the same identity can attach it later. | All | write:media |
| Argument | Type | Notes |
|---|
filename | string | Required. The original file name, e.g. uniform-guide.png. Up to 200 characters. |
content_base64 | string | Required. The image file, base64-encoded. Up to 7,500,000 characters, about 5 MB of image. Only images are accepted, judged by the file's content. |
Open API fallback
| Tool | What it does | Access | Scope |
|---|
call_open_api | Raw request to any Open API endpoint when no dedicated tool fits. Responses are cut at 40 kB. | Admins, signed in only | Never offered to tokens |
Each call runs on an Open API token made for that one call, so it also counts against the company's Open API rate limit. That limit is counted per admin, not per token: all of one admin's call_open_api requests share one budget.
call_open_api cannot create webhooks: a POST to webhooks or incoming-webhooks is refused, since the token made for the call is deleted right after it and would own them. Create webhooks in the CMS, or over the Open API with a token of your own.
call_open_api
| Argument | Type | Notes |
|---|
method | string | Required. GET, POST, PATCH, PUT or DELETE. |
path | string | Required. Path relative to /api/open/v1, e.g. certificates or stats/users. A leading / or /api/open/v1/ is dropped. Paths with .. or :// are refused. Up to 2,000 characters. |
query | object | Query string parameters. |
body | object | JSON body for write requests. |
Resources
Resources are read-only documents an assistant can load for context.
| Resource | Contents | Scope for tokens |
|---|
monotree://locales | Active content languages and the default. The valid values for every locale argument. | none |
monotree://org-structure | Departments, professions and custom groups with their managers, in one snapshot. | read:groups |
Common rules
- Unknown argument names are rejected with the list of valid names. Validation errors list the failing fields.
- Content blocks for
add_chapter and compose_article, 1 to 100 per call; the call is atomic:{"type":"header","text":"..."}: a section heading, up to 255 characters.{"type":"paragraph","markdown":"..."}: body text in markdown (bold, lists, links), up to 65,000 characters. Raw HTML is escaped.{"type":"image_gallery","media_ids":[...]}: 1 to 20 images from upload_media.
locale must be an active language. New content gets your default content language when omitted.- The create tools (except
create_post), add_chapter, add_quiz, compose_article, set_cover, update_wall, the catalogues (list_handbooks, list_courses, list_collections, list_journeys, list_forms, list_events, list_announcements), search_content, get_content_reach (handbooks), audit_content and get_ai_chat_insights return a cms_url, and get_article ends with the CMS link. get_handbook, get_course, get_journey, get_form, the to-do list tools, list_walls, list_posts and create_post return none.