Tools reference

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.

AccessMeaning
AllAdmins, global editors, group editors and managers
EditorsAdmins, global editors and group editors
Admins + managersAdmins and managers
Admins + global editorsAdmins and global editors
AdminsAdmins 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

ToolWhat it doesAccessScope
list_handbooksCatalogue of handbooks with cms_url, by position, 25 a page, paged with cursor; total says how many there are.Allread:handbooks
get_handbookOne handbook's chapters with article ids.Allread:handbooks
list_coursesCatalogue of courses with cms_url, by position, 25 a page, paged with cursor; total says how many there are.Allread:courses
get_courseOne course's chapters with article and quiz ids.Allread:courses
list_collectionsCollections (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 editorsread:handbooks, read:courses or read:forms
get_articleFull text of a handbook or course chapter, announcement, event or calendar entry as markdown, with a link to edit it in the CMS.Allread:articles
search_contentFull-text search across handbooks, courses, announcements, events and calendar entries. Each match has a 200-character excerpt and cms_url. Reports match_quality.Allread:articles
create_handbookNew handbook as a draft.Editorswrite:handbooks
create_courseNew course as a draft.Editorswrite:courses
add_chapterAdd 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.Allwrite:handbooks or write:courses
add_quizAttach 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.Allwrite:courses
compose_articleAppend content blocks to any article. Live on published content unless is_published: false.Allwrite:articles plus the owner's write scope (e.g. write:handbooks for a handbook chapter's article; see owned articles)
set_coverReplace the cover image of an existing handbook, course or chapter with an image from upload_media. Live on published content.Allwrite: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

ArgumentTypeNotes
include_draftsbooleanAlso list unpublished handbooks and chapters.
include_chaptersbooleanAdd each handbook's chapter tree. For one handbook, get_handbook is lighter.
cursorstringPaging cursor.

get_handbook

ArgumentTypeNotes
handbook_idintegerRequired. From list_handbooks.

list_courses

ArgumentTypeNotes
include_draftsbooleanAlso list unpublished courses and chapters.
include_chaptersbooleanAdd each course's chapter tree. For one course, get_course is lighter.
cursorstringPaging cursor.

get_course

ArgumentTypeNotes
course_idintegerRequired. From list_courses.

list_collections

ArgumentTypeNotes
typestringhandbook, course or form. Omit for every type.

get_article

ArgumentTypeNotes
article_idintegerRequired.
localestringLanguage to read, e.g. en or da. Defaults to the company's content language.
include_element_idsbooleanTags 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

ArgumentTypeNotes
querystringRequired. Keywords or a phrase. Up to 500 characters.
handbook_idintegerSearch 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.
inarray of stringsContent kinds to search: handbooks, courses, announcements, companyevents, customevents (calendar entries). Defaults to all.
include_pastbooleanAlso match events that already happened.
limitintegerDefault 10, at most 25.

create_handbook

ArgumentTypeNotes
titlestringRequired. Up to 255 characters.
groupsarray of integersGroup ids to target; each must exist. Omit for everyone.
localestringDefaults to your default content language.
cover_media_idintegerCover image: a media_id from upload_media.

create_course

ArgumentTypeNotes
titlestringRequired. Up to 255 characters.
groupsarray of integersGroup ids to target; each must exist. Omit for everyone.
localestringDefaults to your default content language.
cover_media_idintegerCover image: a media_id from upload_media.

add_chapter

ArgumentTypeNotes
containerstringRequired. handbook or course.
container_idintegerRequired. The handbook or course id.
titlestringRequired. Up to 255 characters.
subtitlestringUp to 255 characters.
blocksarray of objectsRequired. 1 to 100 content blocks, in order.
is_publishedbooleanDefault 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.
localestringDefaults to the container's base language. A language the container does not have yet is switched on for it.
cover_media_idintegerChapter cover: a media_id from upload_media.

add_quiz

ArgumentTypeNotes
chapter_idintegerRequired. 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.
questionsarray of objectsRequired. 1 to 30 questions, see below.
titlestringUp to 255 characters.
max_incorrect_answersintegerWrong 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_questionsbooleanShuffle the question order on retakes. Default true.
show_wrong_answersbooleanShow the employee which answers were wrong. Default false.
localestringDefaults to the course's base language.

Each question is an object:

KeyTypeNotes
typestringchoices (multiple choice, the default), boolean (true/false), order (put in order) or pairs (match the pairs).
questionstringRequired. Up to 1,000 characters. For boolean, a statement.
answerbooleanRequired for boolean: whether the statement is true.
choicesarray of objectsRequired 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[].textstringRequired. Up to 500 characters.
choices[].correctbooleanchoices only: marks a correct choice.
choices[].pairstringRequired for pairs: the text that matches text. Up to 500 characters.

compose_article

ArgumentTypeNotes
article_idintegerRequired. The article to append to.
blocksarray of objectsRequired. 1 to 100 content blocks, in order.
is_publishedbooleanDefault 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.
localestringDefaults to the article's base language.

set_cover

Pass exactly one of handbook_id, course_id or article_id.

ArgumentTypeNotes
cover_media_idintegerRequired. A media_id from upload_media.
handbook_idintegerThe handbook's own cover (not a chapter's).
course_idintegerThe course's own cover (not a chapter's).
article_idintegerA chapter, by the article_id that get_handbook and get_course list, not the chapter id.

People

ToolWhat it doesAccessScope
search_usersFind 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.Allread:users
get_userOne 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.Allread:users
list_groupsDepartments, professions and custom groups with managers and member counts. Alphabetical, paged with cursor; total says how many match.Allread:groups
preview_audienceWho would see content with a given targeting, or an item's current audience. A journey also only reaches the people its items reach.Allread:groups
get_org_chartThe 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_departmentsDepartments from connected HR or scheduling systems and whether they are mapped, newest first.Adminsread:groups
list_external_groupsProfessions from connected HR or scheduling systems and whether they are mapped, newest first.Adminsread:groups
create_groupCreate a department, profession or custom group. Live immediately.Adminswrite:groups

search_users

ArgumentTypeNotes
querystringName or email fragment. Omit it to list by the filters alone.
group_idintegerOnly members of this group.
sourcestringmanual (added by hand in the CMS) or synced (from an HR or scheduling system). Omit for both.
registrationstringregistered (use the app), unregistered (invited or not invited) or all. Default all.
staff_cardstringmissing: 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.
limitintegerDefault 10, at most 100.
cursorstringPaging cursor.

get_user

ArgumentTypeNotes
user_idintegerRequired. From search_users.

list_groups

ArgumentTypeNotes
typestringdepartment, profession or custom. The value is not checked: any other value returns no groups.
limitintegerGroups per page. Default 50, at most 100.
include_mappingsbooleanAdd each group's current external department and profession mappings.
cursorstringPaging 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.

ArgumentTypeNotes
group_idsarray of integersCandidate target groups. An empty array with no user_ids means everyone.
user_idsarray of integersIndividual employees, added on top of the groups. Not for announcements, which cannot target people by name.
entity_typestringhandbook, course, announcement, event, wall, calendar_entry or journey.
entity_idintegerThe 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.

ArgumentTypeNotes
querystringName or email fragment instead of user_id. Answers directly when one person matches, else lists candidates.
user_idintegerOne person's place: manager, chain of command, direct reports.
group_idintegerA department box: its members, manager and sub-boxes.
unplacedbooleanList active people who have no box and are in no department box.
node_idintegerOne subtree, by a box id from an earlier call.
depthintegerAt 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.
limitintegerPeople listed on a group_id or unplaced call. Default 25, at most 100.

list_external_departments

ArgumentTypeNotes
unmappedbooleanOnly departments not yet mapped onto a Monotree department. A custom group does not count as a mapping.
limitintegerDefault 100, at most 200.

list_external_groups

ArgumentTypeNotes
unmappedbooleanOnly professions not yet mapped onto a Monotree profession. A custom group does not count as a mapping.
limitintegerDefault 100, at most 200.

create_group

ArgumentTypeNotes
namestringRequired. Up to 255 characters.
typestringdepartment (a location or store, the default), profession (a job title) or custom.
is_openbooleanCustom groups only: employees can join on their own. true on another type is an error.

Communication

ToolWhat it doesAccessScope
list_wallsSocial walls the connected identity can see, with post counts. Alphabetical, paged with cursor; total says how many match.Allread:walls
create_wallSocial 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 editorswrite:walls
update_wallChange 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 wallwrite:walls
list_postsRecent published posts.Allread:posts
list_eventsUpcoming company events and calendar entries. Calendar entries are only listed while the calendar feature is on.Allread:events (read:calendar_entries for calendar rows)
list_announcementsAnnouncements 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.Allread:announcements
create_postWall post as a draft.All, where the person may postwrite:posts
create_announcementAnnouncement as a draft.Allwrite:announcements
create_eventCompany event as a draft.Allwrite:events
create_calendar_entryCalendar entry as a draft. Needs the calendar feature. A token made with Create MCP token does not carry its scope.Allwrite:calendar_entries

list_walls

ArgumentTypeNotes
limitintegerWalls per page. Default 10, at most 25.
include_draftsbooleanAlso list unpublished walls.
cursorstringPaging cursor.

create_wall

ArgumentTypeNotes
namestringRequired. Up to 255 characters.
descriptionstringText shown under the wall name.
groupsarray of integersGroup ids to target; each must exist. Omit for everyone. Group editors must pass groups they manage or edit.
cover_media_idintegerCover image: a media_id from upload_media.
is_publishedbooleanPublish at once instead of saving a draft. Default false.

update_wall

Only the arguments you pass change.

ArgumentTypeNotes
wall_idintegerRequired. From list_walls or create_wall.
namestringNew name. Up to 255 characters, not empty.
descriptionstringNew text under the name. An empty string removes it.
groupsarray of integersReplaces 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_idintegerNew cover: a media_id from upload_media.
remove_coverbooleanRemoves the cover. Not together with cover_media_id.
is_publishedbooleantrue publishes the wall, false turns it back into a draft. Leave out to keep its state.

list_posts

ArgumentTypeNotes
wall_idintegerOnly posts from this wall, id from list_walls.
daysintegerHow far back to look. 1 to 365, default 30.
limitintegerDefault 10, at most 25.

list_events

ArgumentTypeNotes
fromstringStart of the window, a date. Default today.
tostringEnd of the window, a date. Open-ended when left out.
limitintegerDefault 10, at most 25, counted over events and calendar entries together.
include_draftsbooleanAlso list unpublished company events and calendar entries.

list_announcements

ArgumentTypeNotes
fromstringOnly announcements published on or after this date.
tostringOnly announcements published on or before this date.
limitintegerDefault 20, at most 50.
include_draftsbooleanAlso list unpublished announcements.

create_post

ArgumentTypeNotes
bodystringRequired. The post text.
wall_idintegerDefaults to the main wall.

create_announcement

ArgumentTypeNotes
titlestringRequired. Up to 255 characters.
bodystringRequired. Plain text; line breaks are kept.
subtitlestringShown under the headline. Up to 255 characters.
groupsarray of integersGroup ids to target; each must exist. Omit for everyone.
localestringDefaults to your default content language.

create_event

ArgumentTypeNotes
titlestringRequired. Up to 255 characters.
bodystringRequired. Plain text; line breaks are kept.
starts_atstringRequired. Start date.
starts_timestringStart time, HH:MM.
ends_atstringEnd date.
locationstringUp to 255 characters.
groupsarray of integersGroup ids to target; each must exist. Omit for everyone.
localestringDefaults to your default content language.
cover_media_idintegerCover image: a media_id from upload_media.

create_calendar_entry

ArgumentTypeNotes
titlestringRequired. Up to 255 characters.
starts_atstringRequired. Start date.
bodystringDescription. Plain text; line breaks are kept.
starts_timestringStart time, HH:MM.
ends_atstringEnd date, on or after starts_at.
ends_timestringEnd time, HH:MM.
groupsarray of integersGroup ids to target; each must exist. Omit for everyone.
calendar_event_type_idintegerA published calendar event type. Defaults to the published "Default" type.
mute_notificationsbooleanSkip the day-of notification, e.g. for bulk-created bookings. Default false.
localestringDefaults to your default content language.

Training

ToolWhat it doesAccessScope
list_journeysCatalogue 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.Editorsread:courses
get_journeyA journey's items in order, including journey-list tasks.Editorsread:courses
create_journeyJourney as a draft from existing courses, handbooks and forms.Editorswrite:courses
assign_courseEnrol people or groups on a course. Dry run until confirm: true. Managers can only assign draft courses.Allwrite:courses
assign_journeyRoll a journey out to more groups. Dry run until confirm: true. Not the preboarding journey, which takes no groups.Editorswrite:courses
list_expiring_certificatesExpired 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 + managersread:certificates
get_user_progressOne employee's onboarding, journeys, courses and certificates.Admins + managersread:stats

list_journeys

ArgumentTypeNotes
typestringpreboarding, onboarding, custom or offboarding. Omit for every type. The preboarding journey is listed only while preboarding is enabled for the company.
include_draftsbooleanAlso list unpublished journeys.

get_journey

ArgumentTypeNotes
journey_idintegerRequired. From list_journeys.

create_journey

ArgumentTypeNotes
titlestringRequired. Up to 255 characters.
itemsarray of objectsRequired. 1 to 50 items, see below. The order of the array is the order employees meet them in.
groupsarray of integersGroup ids to target; each must exist. Omit for everyone.
days_after_hireintegerThe whole journey starts this many days after an employee's hire date. 1 to 3,650. Applies to the journey, not to single items.
bodystringShort description shown to employees. Up to 5,000 characters.
localestringDefaults to your default content language.

Each item is an object:

KeyTypeNotes
typestringRequired. course, handbook or form.
idintegerRequired. The course, handbook or form id.
hired_from_datestringA 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.

ArgumentTypeNotes
course_idintegerRequired.
user_idsarray of integersEmployees to enrol. Up to 100 ids; a longer array is rejected.
group_idsarray of integersWhole groups to enrol. Up to 50 ids; a longer array is rejected.
confirmbooleanLeft out or false: a dry run that returns the plan. true enrols, once the person has approved the plan.

assign_journey

ArgumentTypeNotes
journey_idintegerRequired.
group_idsarray of integersRequired. Groups to roll the journey out to. 1 to 50.
confirmbooleanLeft out or false: a dry run that returns the plan. true assigns, once the person has approved the plan.

list_expiring_certificates

ArgumentTypeNotes
daysintegerHow far ahead to look. 1 to 365, default 90.
group_idsarray of integersOnly members of these groups.
limitintegerDefault 25, at most 50.

get_user_progress

ArgumentTypeNotes
user_idintegerRequired. From search_users.

Forms and checklists

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.

ToolWhat it doesAccessScope
list_formsCatalogue 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 formread:forms
get_formA 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 formread:forms
get_form_responsesRecent 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 alarmsread:formresponses
get_form_alarmsAnswers 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 alarmsread:formresponses
list_todo_listsTo-do list templates with task counts and groups. Returns every template.Allread:todolists
get_todo_listA template's tasks.Allread:todolists
get_todo_complianceChecklist completion per department, worst first. Needs the to-do feature.Admins + managersread:stats

list_forms

ArgumentTypeNotes
statusstringpublished (the default), draft or all.
limitintegerDefault 10, at most 25.
cursorstringPaging cursor.

get_form

ArgumentTypeNotes
form_idintegerRequired. From list_forms, or the form_id of a response (not the response id).

get_form_responses

ArgumentTypeNotes
form_idintegerOnly responses to this form.
statusstringResponse status: todo, in_progress or done. The value is not checked: any other value returns no responses.
daysintegerHow far back to look. 1 to 365, default 30.
limitintegerDefault 10, at most 25.
cursorstringPaging cursor.
archivedbooleanList only archived responses instead of the open ones, for example to find one to restore.

get_form_alarms

ArgumentTypeNotes
daysintegerHow far back to look. 1 to 90, default 7.
limitintegerDefault 10, at most 25.

list_todo_lists

ArgumentTypeNotes
include_draftsbooleanAlso list unpublished templates.

get_todo_list

ArgumentTypeNotes
list_idintegerRequired. From list_todo_lists.

get_todo_compliance

ArgumentTypeNotes
daysintegerHow far back to look. 1 to 90, default 7.
group_idsarray of integersOnly these departments. Omit for all.

Insights

ToolWhat it doesAccessScope
get_academy_statsOnboarding, course and journey completion.Admins + managersread:stats
get_academy_overviewThe Academy dashboard figures, per department and per user.Allread:stats
get_engagement_statsApp usage over time, adoption per department, user and content summaries.Admins + global editors; managers get engagement and adoptionread:stats
get_content_reachMost or least viewed handbooks or posts.Admins + global editorsread:stats
audit_contentPublished handbooks ranked by how long since they were edited.Admins + global editorsread:stats
get_ai_chat_insightsContent 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 editorsread:stats
manager_hub_summaryThe 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 itread:managerhub
get_survey_resultsSurvey 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 + managersread:surveys

get_academy_stats

ArgumentTypeNotes
areastringonboarding, courses, journeys or all. Default all.
group_idsarray of integersOnly count members of these groups. Omit for company-wide totals.
per_departmentbooleanOne 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_idsarray of integersOnly 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

ArgumentTypeNotes
group_idsarray of integersOnly count members of these groups: any group within a type, every type given. Omit for everything you may see.
per_departmentbooleanAdd one row per department with the same figures, the dashboard's comparison table.
include_usersbooleanAdd the users table: each person's onboarding status and completion percentages. sort, onboarding_status and limit apply to it.
sortstringoverall_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_statusarray of stringsOnly users in these statuses: completed, overdue, in_progress, not_started.
limitintegerUser rows. 1 to 25, default 10. The total is always reported.

get_engagement_stats

ArgumentTypeNotes
areastringusers, engagement, adoption, content or all. Default all.
granularitystringPeriod size of the engagement series: day, week, month or year. Default week.
scopeintegerHow many periods of the engagement series, counting back from today. 1 to 52, default 12.
group_idsarray of integersOnly count members of these groups. Applies to engagement and adoption. Omit for company-wide figures.

get_content_reach

ArgumentTypeNotes
kindstringRequired. handbooks or posts.
monthsintegerLook-back window. 1 to 24, default 3.
directionstringdesc (most viewed first, the default) or asc (least viewed first).
limitinteger1 to 25, default 10.

audit_content

ArgumentTypeNotes
limitinteger1 to 50, default 25.

get_ai_chat_insights

ArgumentTypeNotes
daysintegerThe 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

ArgumentTypeNotes
department_idsarray of integersDepartment ids from list_groups. Defaults to every department the person can open in the Manager Hub; all departments for tokens.

get_survey_results

ArgumentTypeNotes
survey_idintegerThe 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.
runstringStart 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_departmentbooleanSplit every question by the department the respondents answered for.
department_idintegerOnly answers from this department (a group of type department). Also splits by department.

Media

ToolWhat it doesAccessScope
upload_mediaStore 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.Allwrite:media

upload_media

ArgumentTypeNotes
filenamestringRequired. The original file name, e.g. uniform-guide.png. Up to 200 characters.
content_base64stringRequired. 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

ToolWhat it doesAccessScope
call_open_apiRaw request to any Open API endpoint when no dedicated tool fits. Responses are cut at 40 kB.Admins, signed in onlyNever 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

ArgumentTypeNotes
methodstringRequired. GET, POST, PATCH, PUT or DELETE.
pathstringRequired. 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.
queryobjectQuery string parameters.
bodyobjectJSON body for write requests.

Resources

Resources are read-only documents an assistant can load for context.

ResourceContentsScope for tokens
monotree://localesActive content languages and the default. The valid values for every locale argument.none
monotree://org-structureDepartments, 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.