Get coaching catalogue directory
get_catalogue_directory[Coaching catalogue] Read one catalogue directory in full: its settings, its custom Markdown page (content_md), its resolved sub-directories, and the coaching sessions its tag filter currently matches — which is how you verify that a session's tags actually place it in this directory. Read before updating: content_md, tags_sub and tags_interview_set_filter are replaced wholesale, so you need the current value to extend it. Other language versions of the page are in translations (languages lists them, default first).
Reads one catalogue directory in full: its settings, its custom Markdown page (content_md), the sub-directories it nests, and the coaching sessions its tags_interview_set_filter currently matches. Read a directory before updating it — content_md, tags_sub and tags_interview_set_filter are replaced wholesale by catalogue-tag-update, so you need the current value to extend rather than overwrite it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the catalogue directory to read (the catalogue URL segment). The old id of a renamed directory also works; the response carries its current `id`. | |
| merchant_id | No | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. | |
| conversation_id | No | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request. | |
| mojito_language_code | No | Show `sub_directories` and `matched_sessions` for this language version of the directory (one of its `languages`) instead of the default one - how you verify a translation lists the right sessions. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Directory id — also the catalogue URL segment. | |
| name | Yes | Display name. | |
| status | Yes | Lifecycle status. | |
| tags_sub | Yes | Ids of the directories nested under this one, in display order. Replaces the whole list — send the full set, not just the additions. A referenced directory only appears if it exists and is visible to the viewer. | |
| languages | Yes | Every language the directory has, the default (`mojito_language_code`) first. `matched_sessions` and `sub_directories` describe the default language unless the request names another one in `mojito_language_code`. | |
| coach_plan | Yes | Coaching-plan stage, when the directory belongs to one. | |
| content_md | Yes | Markdown for a custom directory page. When set (even as an empty string) the markdown replaces the default grid and decides the layout itself; null renders the plain grid of sub-directories and sessions. Alongside normal Markdown you can place these directives, each ALONE on its own line: `[plan-progress]` (the learner's coaching-plan progress), `[directory:<tag-id>]` (a card for one sub-directory), `[session:<interview-id>]` (a card for one session), `[sessions]` (every session in this directory), `[sessions:<term>]` (sessions matching a term), `[sessions:filter=<term>,limit=<n>]` (a filtered, capped list). A directive on a line with other text is rendered as ordinary text. Chips, callouts, cards, columns and buttons are available here too — full vocabulary: https://developer.jobmojito.com/cookbooks/format-content-with-markdown | |
| created_at | Yes | Creation timestamp (ISO 8601). | |
| updated_at | Yes | Last update timestamp (ISO 8601). | |
| visibility | Yes | Who can see it. | |
| description | Yes | Short description shown on the directory card. | |
| merchant_id | Yes | Owning merchant id. Null for a platform-wide directory. | |
| merged_into | Yes | Set when this directory was folded into another as one of its language versions: the directory to edit instead. Its old URL redirects there. | |
| translations | Yes | The directory's OTHER language versions, keyed by mojito language code. The top-level fields are the default language (`mojito_language_code`); each version here is a page of its own with its own name, Markdown, session filter and sub-directories, shown to learners who pick that language in the catalogue (falling back to English, then the default). A key may not equal `mojito_language_code`. | |
| catalogue_url | Yes | Public URL of this directory page, when the merchant has a coaching-portal domain configured. | |
| cover_image_url | Yes | Cover image URL. | |
| sub_directories | Yes | The directories listed in `tags_sub`, resolved and in display order. An id in `tags_sub` that does not resolve (deleted, or not visible to you) is simply absent here — compare the two to spot a broken link. | |
| viewed_language | Yes | The language version `sub_directories` and `matched_sessions` were resolved for: the requested `mojito_language_code`, else the default. | |
| matched_sessions | Yes | The coaching/persona sessions this directory currently lists, applying the same rules as the live portal: `active`, type `coaching` or `persona`, visibility `public` or `merchant_public` for this merchant, and `tags` containing every tag of `tags_interview_set_filter`. Empty when the filter is null. Capped at 200. | |
| _mcp_instructions | No | Server-issued metadata for this conversation. | |
| is_start_directory | Yes | True when this is the directory the merchant's catalogue opens on. | |
| mojito_language_code | Yes | Directory language. | |
| tags_interview_set_filter | Yes | Tag filter selecting which coaching sessions this directory lists: a session appears when its own `tags` contain EVERY tag here (an AND, not an OR). Only `active` coaching/persona sessions with visibility `public` or `merchant_public` are listed. Set the matching tags on the session with the create-interview / job-interview-update `tags` field. | |
| matched_sessions_truncated | Yes | True when more sessions match than the 200 returned — narrow `tags_interview_set_filter` if you see this. |