Skip to main content
Glama

Get portal configuration

get_portal_configuration
Read-onlyIdempotent

[Admin] Read the company's portal configuration as editable documents: branding (portal name, style, colours, logos, e-mail sender name), interview-portal (languages, home texts), coaching-portal (vertical, feature toggles, labels, languages, home blocks), brands (sub-brands, when switched on) and one jobmojito.portal-site document per portal (every page's draft content and the theme CSS, plus style_settings and css_files when switched on). Narrow with sections (branding, interview-portal, coaching-portal, interview-pages, coaching-pages, brands): the page documents are the large ones. With page documents the answer also has block_types: every block a page can hold, what it is for, when to use it and its fields; a page holds only these block types. The documents are in the format update_portal_configuration takes, and fields a document leaves out keep their value there.

Every argument in full, with examples: get_tool_reference.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_portal_configuration"
  }
}

Input Schema

NameRequiredDescriptionDefault
sectionsNoComma-separated sections to return (default: all): branding, interview-portal, coaching-portal, interview-pages, coaching-pages, brands. A portal the company does not use is left out of the default; name its sections to read them anyway.
llm_modelNoYour model id, e.g. "claude-opus-4-8"; "unknown" if unsure. For analytics.
merchant_idNoOptional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.
conversation_idNoThe conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.

Output Schema

NameRequiredDescriptionDefault
documentsYes
block_typesNo
merchant_idYes
_mcp_instructionsNoServer-issued metadata for this conversation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed22 schema fields changed
    • addedInput schema / properties / llm_model
      Added value: +{
      +  "description": "Your model id, e.g. \"claude-opus-4-8\"; \"unknown\" if unsure. For analytics.",
      +  "type": "string"
      +}
    • removedInput schema / properties / merchant_id / example
      Removed value: -"28106cba-1c27-4e53-b149-32113e5e8e31"
    • removedInput schema / properties / sections / example
      Removed value: -"branding,interview-pages"
    • removedOutput schema / properties / block_types / description
      Removed value: -"With page documents (interview-pages, coaching-pages): every block type a page can hold, what it is for and its fields, in the order the editor offers them. Choose blocks from this list."
    • removedOutput schema / properties / block_types / items / properties / fields / description
      Removed value: -"Its own fields; every block also takes enabled, tone, anchor and className. Field details: the portal pages cookbook."
    • removedOutput schema / properties / block_types / items / properties / name / description
      Removed value: -"What the page editor calls it."
    • removedOutput schema / properties / block_types / items / properties / name / example
      Removed value: -"Testimonials"
    • removedOutput schema / properties / block_types / items / properties / portals / description
      Removed value: -"The portals whose pages offer it."
    • removedOutput schema / properties / block_types / items / properties / purpose / description
      Removed value: -"What it is."
    • removedOutput schema / properties / block_types / items / properties / type / description
      Removed value: -"The block `type` in page content."
    • removedOutput schema / properties / block_types / items / properties / type / example
      Removed value: -"testimonials"
    • removedOutput schema / properties / block_types / items / properties / use_for / description
      Removed value: -"When to choose it, with an example."
    • removedOutput schema / properties / documents / description
      Removed value: -"One document per section, each a valid input for portal-configuration-update: `kind: \"branding\"`, `kind: \"interview-portal\"`, `kind: \"coaching-portal\"`, one `format: \"jobmojito.portal-site\"` per portal (`portal: \"interview\"` for interview-pages, `\"consumer\"` for coaching-pages) with every page's DRAFT content and the theme CSS draft, and `kind: \"brands\"` when the company's brands are switched on. With style settings switched on, a site document also holds `style_settings` and `css_files` (each file with the `version` to send back), and a page of a sub-brand holds `brand`. Pages also carry `published_at` (read-only, ignored on import; null = never published). The support / application-tracking / interview-completed / signed-in home texts are built-in pages (\"_support\", \"_tracking\", \"_completion\", \"_signed_in_home\") and appear only in the portal-site documents."
    • removedOutput schema / properties / documents / items / description
      Removed value: -"One configuration document: declares either `kind` (branding, interview-portal, coaching-portal, brands) or `format` (jobmojito.portal-site, jobmojito.portal-page), plus that type's fields. Field reference: branding https://developer.jobmojito.com/cookbooks/portal-branding/branding, interview portal https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, coaching portal https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, portal pages https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Unknown fields are ignored with a warning; wrong types and enum values are errors."
    • removedOutput schema / properties / documents / items / properties / format / description
      Removed value: -"Portal site document type. `jobmojito.portal-site`: `{ portal, theme: { css }, style_settings, css_files: [{ path, brand, content, sort_order, version }], pages: [Page] }`, a whole site (pages in every language, the menu, the footer and the theme CSS). `jobmojito.portal-page`: `{ page: Page }`, one page. Page = `{ slug, brand, show_in_menu, sort_order, languages: [{ mojito_language_code, title, description, blocks }] }`; slug \"\" is the home page, \"_footer\", \"_support\", \"_jobs\" etc. are the built-in pages. A page's `brand` is the tag of a sub-brand, null for the main brand; a brand page can have any slug except the home page \"\" and the built-in pages, which belong to the main brand. `style_settings` are the main brand's colours, fonts, spacing steps, page width, corners and headings; a sub-brand's are in the brands document. `css_files` are matched by brand and path and never removed; send the `version` you read and a file changed since is refused. These parts are refused with 422 while the company's `portal_styles` or `brands` switch is off."
    • removedOutput schema / properties / documents / items / properties / format / example
      Removed value: -"jobmojito.portal-site"
    • removedOutput schema / properties / documents / items / properties / kind / description
      Removed value: -"Portal configuration document type. `branding`: portal name, style, colours, logos, e-mail sender name, speech term boosting. `interview-portal`: interview portal languages and the per-language home texts. `coaching-portal`: coaching portal vertical (`use_case`), feature toggles, label overrides, coaching plan, catalogue start directory, languages and per-language home blocks. `brands`: `{ brands: [{ name, tag, slug, logo_url, logo_dark_url, icon_url, privacy_notice_url, style_settings, sort_order, status }] }`, the sub-brands. A brand is matched by `tag`, which never changes; the main brand is the company itself and has no entry. A new brand needs `name`; `slug` is optional, a short name kept for older links that decides no page address (two brands cannot share one). A brand left out stays as it is; `status: \"deleted\"` retires one, and null clears a field. Refused with 422 while the company's `brands` switch is off. A portal site document declares `format` instead."
    • removedOutput schema / properties / documents / items / properties / kind / example
      Removed value: -"branding"
    • removedOutput schema / properties / documents / items / properties / version / description
      Removed value: -"Document format version. Always 1."
    • removedOutput schema / properties / documents / items / properties / version / example
      Removed value: -1
    • removedOutput schema / properties / merchant_id / description
      Removed value: -"Merchant the configuration belongs to."
    • removedOutput schema / properties / merchant_id / example
      Removed value: -"28106cba-1c27-4e53-b149-32113e5e8e31"
  2. Changed1 schema field changed
    • addedOutput schema / properties / block_types
      Added value: +{
      +  "description": "With page documents (interview-pages, coaching-pages): every block type a page can hold, what it is for and its fields, in the order the editor offers them. Choose blocks from this list.",
      +  "items": {
      +    "properties": {
      +      "fields": {
      +        "description": "Its own fields; every block also takes enabled, tone, anchor and className. Field details: the portal pages cookbook.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": [
      +          "array",
      +          "null"
      +        ]
      +      },
      +      "name": {
      +        "description": "What the page editor calls it.",
      +        "example": "Testimonials",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "portals": {
      +        "description": "The portals whose pages offer it.",
      +        "items": {
      +          "enum": [
      +            "interview",
      +            "consumer"
      +          ],
      +          "type": "string"
      +        },
      +        "type": [
      +          "array",
      +          "null"
      +        ]
      +      },
      +      "purpose": {
      +        "description": "What it is.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "type": {
      +        "description": "The block `type` in page content.",
      +        "example": "testimonials",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "use_for": {
      +        "description": "When to choose it, with an example.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "name",
      +      "purpose",
      +      "use_for",
      +      "fields",
      +      "portals"
      +    ],
      +    "type": "object"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
  3. Changed2 schema fields changed
    • changedOutput schema / properties / documents / items / properties / format / description
      Previous value: -"Portal site document type. `jobmojito.portal-site`: `{ portal, theme: { css }, style_settings, css_files: [{ path, brand, content, sort_order, version }], pages: [Page] }`, a whole site (pages in every language, the menu, the footer and the theme CSS). `jobmojito.portal-page`: `{ page: Page }`, one page. Page = `{ slug, brand, show_in_menu, sort_order, languages: [{ mojito_language_code, title, description, blocks }] }`; slug \"\" is the home page, \"_footer\", \"_support\", \"_jobs\" etc. are the built-in pages. A page's `brand` is the tag of a sub-brand, null for the main brand; its slug must sit under the brand's slug. `style_settings` are the main brand's colours, fonts, spacing steps, page width, corners and headings; a sub-brand's are in the brands document. `css_files` are matched by brand and path and never removed; send the `version` you read and a file changed since is refused. These parts are refused with 422 while the company's `portal_styles` or `brands` switch is off."New value: +"Portal site document type. `jobmojito.portal-site`: `{ portal, theme: { css }, style_settings, css_files: [{ path, brand, content, sort_order, version }], pages: [Page] }`, a whole site (pages in every language, the menu, the footer and the theme CSS). `jobmojito.portal-page`: `{ page: Page }`, one page. Page = `{ slug, brand, show_in_menu, sort_order, languages: [{ mojito_language_code, title, description, blocks }] }`; slug \"\" is the home page, \"_footer\", \"_support\", \"_jobs\" etc. are the built-in pages. A page's `brand` is the tag of a sub-brand, null for the main brand; a brand page can have any slug except the home page \"\" and the built-in pages, which belong to the main brand. `style_settings` are the main brand's colours, fonts, spacing steps, page width, corners and headings; a sub-brand's are in the brands document. `css_files` are matched by brand and path and never removed; send the `version` you read and a file changed since is refused. These parts are refused with 422 while the company's `portal_styles` or `brands` switch is off."
    • changedOutput schema / properties / documents / items / properties / kind / description
      Previous value: -"Portal configuration document type. `branding`: portal name, style, colours, logos, e-mail sender name, speech term boosting. `interview-portal`: interview portal languages and the per-language home texts. `coaching-portal`: coaching portal vertical (`use_case`), feature toggles, label overrides, coaching plan, catalogue start directory, languages and per-language home blocks. `brands`: `{ brands: [{ name, tag, slug, logo_url, logo_dark_url, icon_url, privacy_notice_url, style_settings, sort_order, status }] }`, the sub-brands. A brand is matched by `tag`, which never changes; the main brand is the company itself and has no entry. A brand left out stays as it is; `status: \"deleted\"` retires one, and null clears a field. Refused with 422 while the company's `brands` switch is off. A portal site document declares `format` instead."New value: +"Portal configuration document type. `branding`: portal name, style, colours, logos, e-mail sender name, speech term boosting. `interview-portal`: interview portal languages and the per-language home texts. `coaching-portal`: coaching portal vertical (`use_case`), feature toggles, label overrides, coaching plan, catalogue start directory, languages and per-language home blocks. `brands`: `{ brands: [{ name, tag, slug, logo_url, logo_dark_url, icon_url, privacy_notice_url, style_settings, sort_order, status }] }`, the sub-brands. A brand is matched by `tag`, which never changes; the main brand is the company itself and has no entry. A new brand needs `name`; `slug` is optional, a short name kept for older links that decides no page address (two brands cannot share one). A brand left out stays as it is; `status: \"deleted\"` retires one, and null clears a field. Refused with 422 while the company's `brands` switch is off. A portal site document declares `format` instead."
  4. Changed6 schema fields changed
    • changedInput schema / properties / sections / description
      Previous value: -"Comma-separated sections to return (default: all): branding, interview-portal, coaching-portal, interview-pages, coaching-pages. A portal the company does not use is left out of the default; name its sections to read them anyway."New value: +"Comma-separated sections to return (default: all): branding, interview-portal, coaching-portal, interview-pages, coaching-pages, brands. A portal the company does not use is left out of the default; name its sections to read them anyway."
    • changedOutput schema / properties / documents / description
      Previous value: -"One document per section, each a valid input for portal-configuration-update: `kind: \"branding\"`, `kind: \"interview-portal\"`, `kind: \"coaching-portal\"`, and one `format: \"jobmojito.portal-site\"` per portal (`portal: \"interview\"` for interview-pages, `\"consumer\"` for coaching-pages) with every page's DRAFT content and the theme CSS draft. Pages also carry `published_at` (read-only, ignored on import; null = never published). The support / application-tracking / interview-completed / signed-in home texts are built-in pages (\"_support\", \"_tracking\", \"_completion\", \"_signed_in_home\") and appear only in the portal-site documents."New value: +"One document per section, each a valid input for portal-configuration-update: `kind: \"branding\"`, `kind: \"interview-portal\"`, `kind: \"coaching-portal\"`, one `format: \"jobmojito.portal-site\"` per portal (`portal: \"interview\"` for interview-pages, `\"consumer\"` for coaching-pages) with every page's DRAFT content and the theme CSS draft, and `kind: \"brands\"` when the company's brands are switched on. With style settings switched on, a site document also holds `style_settings` and `css_files` (each file with the `version` to send back), and a page of a sub-brand holds `brand`. Pages also carry `published_at` (read-only, ignored on import; null = never published). The support / application-tracking / interview-completed / signed-in home texts are built-in pages (\"_support\", \"_tracking\", \"_completion\", \"_signed_in_home\") and appear only in the portal-site documents."
    • changedOutput schema / properties / documents / items / description
      Previous value: -"One configuration document: declares either `kind` (branding, interview-portal, coaching-portal) or `format` (jobmojito.portal-site, jobmojito.portal-page), plus that type's fields. Field reference: branding https://developer.jobmojito.com/cookbooks/portal-branding/branding, interview portal https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, coaching portal https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, portal pages https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Unknown fields are ignored with a warning; wrong types and enum values are errors."New value: +"One configuration document: declares either `kind` (branding, interview-portal, coaching-portal, brands) or `format` (jobmojito.portal-site, jobmojito.portal-page), plus that type's fields. Field reference: branding https://developer.jobmojito.com/cookbooks/portal-branding/branding, interview portal https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, coaching portal https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, portal pages https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Unknown fields are ignored with a warning; wrong types and enum values are errors."
    • changedOutput schema / properties / documents / items / properties / format / description
      Previous value: -"Portal site document type. `jobmojito.portal-site`: `{ portal, theme: { css }, pages: [Page] }`, a whole site (pages in every language, the menu, the footer and the theme CSS). `jobmojito.portal-page`: `{ page: Page }`, one page. Page = `{ slug, show_in_menu, sort_order, languages: [{ mojito_language_code, title, description, blocks }] }`; slug \"\" is the home page, \"_footer\", \"_support\", \"_jobs\" etc. are the built-in pages."New value: +"Portal site document type. `jobmojito.portal-site`: `{ portal, theme: { css }, style_settings, css_files: [{ path, brand, content, sort_order, version }], pages: [Page] }`, a whole site (pages in every language, the menu, the footer and the theme CSS). `jobmojito.portal-page`: `{ page: Page }`, one page. Page = `{ slug, brand, show_in_menu, sort_order, languages: [{ mojito_language_code, title, description, blocks }] }`; slug \"\" is the home page, \"_footer\", \"_support\", \"_jobs\" etc. are the built-in pages. A page's `brand` is the tag of a sub-brand, null for the main brand; its slug must sit under the brand's slug. `style_settings` are the main brand's colours, fonts, spacing steps, page width, corners and headings; a sub-brand's are in the brands document. `css_files` are matched by brand and path and never removed; send the `version` you read and a file changed since is refused. These parts are refused with 422 while the company's `portal_styles` or `brands` switch is off."
    • changedOutput schema / properties / documents / items / properties / kind / description
      Previous value: -"Portal configuration document type. `branding`: portal name, style, colours, logos, e-mail sender name, speech term boosting. `interview-portal`: interview portal languages and the per-language home texts. `coaching-portal`: coaching portal vertical (`use_case`), feature toggles, label overrides, coaching plan, catalogue start directory, languages and per-language home blocks. A portal site document declares `format` instead."New value: +"Portal configuration document type. `branding`: portal name, style, colours, logos, e-mail sender name, speech term boosting. `interview-portal`: interview portal languages and the per-language home texts. `coaching-portal`: coaching portal vertical (`use_case`), feature toggles, label overrides, coaching plan, catalogue start directory, languages and per-language home blocks. `brands`: `{ brands: [{ name, tag, slug, logo_url, logo_dark_url, icon_url, privacy_notice_url, style_settings, sort_order, status }] }`, the sub-brands. A brand is matched by `tag`, which never changes; the main brand is the company itself and has no entry. A brand left out stays as it is; `status: \"deleted\"` retires one, and null clears a field. Refused with 422 while the company's `brands` switch is off. A portal site document declares `format` instead."
    • changedOutput schema / properties / documents / items / properties / kind / enum
      Previous value: -[
      -  "branding",
      -  "interview-portal",
      -  "coaching-portal",
      -  null
      -]New value: +[
      +  "branding",
      +  "interview-portal",
      +  "coaching-portal",
      +  "brands",
      +  null
      +]
  5. Changed1 schema field changed
    • changedInput schema / properties / conversation_id / description
      Previous 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."New value: +"The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
  6. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld, but the description adds real context beyond them: admin-only scope, that unused portals are omitted from the default, that size differs sharply by section, that page documents carry `block_types` guidance, and that omitted fields retain their value on update (merge semantics). It lacks any guidance on response size limits or rate/performance costs beyond the vague "large ones" hint.

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

Conciseness5/5

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

Purpose and admin scope are front-loaded, the document enumeration is dense but every item is load-bearing for section selection, and the closing pointer to get_tool_reference keeps detailed argument docs out of the definition. No filler sentences.

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 the description need not explain return values, yet it still describes document contents, block_types, and merge semantics, which is more than enough for a read-only tool. The only gap is the absence of a disambiguation against the jobmojito_configuration and update_portal_configuration siblings.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: the size/cost tradeoff of page documents, the default-inclusion behavior for unused portals, and the fact that the returned document format is the input format for the update tool. It says nothing extra about merchant_id scoping or the analytics parameters.

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 the company's portal configuration as editable documents") and then enumerates the exact documents returned (branding, interview-portal, coaching-portal, brands, jobmojito.portal-site). An agent can distinguish it from update_portal_configuration purely from the description.

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 clear usage context: narrow with `sections`, page documents are the large ones, and the output is in the shape update_portal_configuration accepts (implying a read-then-edit workflow). It does not explicitly rule out or point to the nearby jobmojito_configuration / get_tool_reference alternatives, so no explicit when-not guidance.

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.