Skip to main content
Glama

Get coaching catalogue directory

get_catalogue_directory
Read-onlyIdempotent

[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

NameRequiredDescriptionDefault
idYesId 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_idNoOptional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.
conversation_idNoPass 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_codeNoShow `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

NameRequiredDescriptionDefault
idYesDirectory id — also the catalogue URL segment.
nameYesDisplay name.
statusYesLifecycle status.
tags_subYesIds 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.
languagesYesEvery 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_planYesCoaching-plan stage, when the directory belongs to one.
content_mdYesMarkdown 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_atYesCreation timestamp (ISO 8601).
updated_atYesLast update timestamp (ISO 8601).
visibilityYesWho can see it.
descriptionYesShort description shown on the directory card.
merchant_idYesOwning merchant id. Null for a platform-wide directory.
merged_intoYesSet when this directory was folded into another as one of its language versions: the directory to edit instead. Its old URL redirects there.
translationsYesThe 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_urlYesPublic URL of this directory page, when the merchant has a coaching-portal domain configured.
cover_image_urlYesCover image URL.
sub_directoriesYesThe 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_languageYesThe language version `sub_directories` and `matched_sessions` were resolved for: the requested `mojito_language_code`, else the default.
matched_sessionsYesThe 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_instructionsNoServer-issued metadata for this conversation.
is_start_directoryYesTrue when this is the directory the merchant's catalogue opens on.
mojito_language_codeYesDirectory language.
tags_interview_set_filterYesTag 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_truncatedYesTrue when more sessions match than the 200 returned — narrow `tags_interview_set_filter` if you see this.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • changedInput schema / properties / id / description
      Previous value: -"Id of the catalogue directory to read (the catalogue URL segment)."New value: +"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`."
    • addedInput schema / properties / mojito_language_code
      Added value: +{
      +  "description": "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.",
      +  "enum": [
      +    "ar",
      +    "bg",
      +    "zh",
      +    "hr",
      +    "cs",
      +    "da",
      +    "nl",
      +    "en",
      +    "fil",
      +    "fi",
      +    "fr",
      +    "de",
      +    "el",
      +    "hi",
      +    "hu",
      +    "id",
      +    "it",
      +    "ja",
      +    "ko",
      +    "ms",
      +    "no",
      +    "pl",
      +    "pt",
      +    "br",
      +    "ro",
      +    "ru",
      +    "sk",
      +    "es",
      +    "sv",
      +    "ta",
      +    "th",
      +    "tr",
      +    "uk",
      +    "vi"
      +  ],
      +  "example": "en",
      +  "type": "string"
      +}
    • addedOutput schema / properties / languages
      Added value: +{
      +  "description": "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`.",
      +  "example": [
      +    "en",
      +    "sk"
      +  ],
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / merged_into
      Added value: +{
      +  "description": "Set when this directory was folded into another as one of its language versions: the directory to edit instead. Its old URL redirects there.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / translations
      Added value: +{
      +  "additionalProperties": {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  "description": "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`.",
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / viewed_language
      Added value: +{
      +  "description": "The language version `sub_directories` and `matched_sessions` were resolved for: the requested `mojito_language_code`, else the default.",
      +  "example": "sk",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "description",
      -  "mojito_language_code",
      -  "visibility",
      -  "status",
      -  "coach_plan",
      -  "cover_image_url",
      -  "merchant_id",
      -  "tags_sub",
      -  "tags_interview_set_filter",
      -  "content_md",
      -  "created_at",
      -  "updated_at",
      -  "catalogue_url",
      -  "is_start_directory",
      -  "sub_directories",
      -  "matched_sessions",
      -  "matched_sessions_truncated"
      -]New value: +[
      +  "id",
      +  "name",
      +  "description",
      +  "mojito_language_code",
      +  "visibility",
      +  "status",
      +  "coach_plan",
      +  "cover_image_url",
      +  "merchant_id",
      +  "tags_sub",
      +  "tags_interview_set_filter",
      +  "content_md",
      +  "translations",
      +  "languages",
      +  "viewed_language",
      +  "merged_into",
      +  "created_at",
      +  "updated_at",
      +  "catalogue_url",
      +  "is_start_directory",
      +  "sub_directories",
      +  "matched_sessions",
      +  "matched_sessions_truncated"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / conversation_id / description
      Previous value: -"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."New value: +"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."
  3. Changed2 schema fields changed
    • addedInput schema / properties / conversation_id
      Added value: +{
      +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / _mcp_instructions
      Added value: +{
      +  "description": "Server-issued metadata for this conversation.",
      +  "properties": {
      +    "conversation_id": {
      +      "description": "The server-issued conversation identifier.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  4. Changed2 schema fields changed
    • changedOutput schema / properties / content_md / description
      Previous value: -"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."New value: +"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"
    • changedOutput schema / properties / content_md / example
      Previous value: -"## Sales coaching\n\nPick a session to practise with.\n\n[sessions:filter=objection-handling,limit=6]\n"New value: +"## Sales coaching\n\nPick a session to practise with.\n\n[chip:6 sessions] [chip:Beginner,tone=accent]\n\n[sessions:filter=objection-handling,limit=6]\n"
  5. Added

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuine context beyond them: that updates replace content_md/tags_sub/tags_interview_set_filter wholesale (motivating the read), and that other language versions live in `translations` with `languages` defaulting first.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description contains two near-identical paragraphs restating the same purpose, return fields, and read-before-update rationale. This is pure duplication rather than earned length, though the first sentence is well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and annotations carry the safety profile. The description covers purpose, the read-before-write workflow, and language/translation handling, leaving little an agent needs missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents id, merchant_id, conversation_id and mojito_language_code in detail; baseline is 3. The description adds only marginal nuance (that `languages` lists translations with the default first) beyond the mechanical schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read one catalogue directory in full') and enumerates exactly what is returned: settings, content_md, resolved sub-directories, and matched sessions. This clearly distinguishes it from the sibling list_catalogue_directories (singular, full read vs. listing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance ('Read before updating') tied to the wholesale-replacement semantics of content_md, tags_sub and tags_interview_set_filter, and explains the verification use case for tags. It stops short of naming a specific alternative sibling or stating when not to use it, so it does not reach 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.