Skip to main content
Glama
GET-Technology-Inc

Jamf Docs MCP Server

Search Jamf Documentation

jamf_docs_search
Read-onlyIdempotent

Search Jamf product documentation to find articles matching keywords, with filters for product, topic, doc type, version, and language, returning titles, snippets, and links.

Instructions

Search Jamf documentation for articles matching your query.

This tool searches across all Jamf product documentation including Jamf Pro, Jamf School, Jamf Connect, Jamf Protect, Jamf Now, Jamf Safe Internet, and more. Results include article titles, snippets, and direct links.

Args:

  • query (string, required): Search keywords (2-200 characters, or one Chinese, Japanese or Korean character)

  • product (string, optional): Filter by product ID (use jamf_docs_list_products to see all)

  • topic (string, optional): Filter by topic. Common: enrollment, profiles, policies, packages, scripts, patch, apps, security, filevault, sso, identity-provider, inventory, reports, api, network. See jamf_docs_list_products for the full list of 40 topic IDs.

  • docType (string, optional): Filter by document type: documentation, release-notes, training, solution-guide, glossary, getting-started

  • version (string, optional): Filter by version (e.g., "11.13.0") or "current", at most 50 characters

  • language (string, optional): Documentation language/locale (default: en-US)

  • limit (number, optional): Maximum results per page 1-50 (default: 10)

  • page (number, optional): Page number for pagination 1-100 (default: 1)

  • maxTokens (number, optional): Maximum tokens in response 100-50000 (default: 5000)

  • outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for brief, token-efficient output

  • responseFormat ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON format: { "total": number, "query": string, "results": [...], "tokenInfo": { "tokenCount": number, "truncated": boolean, "maxTokens": number }, "pagination": { "page": number, "pageSize": number, "totalPages": number, "totalItems": number, "hasNext": boolean, "hasPrev": boolean }, // Set when a filter matched nothing and was removed, or could not be applied. "filterRelaxation"?: { "removed": [string], "original": { "": string }, "message": string }, // Set when a result is at a version other than the one asked for. "versionNote"?: string, // Set when no page has a phrase the query quotes in 「」, 『』, 「」 or « » as written: // the query was searched again with those marks read as no quotes, and "results" are // what that found. Also set, with no results, when that found nothing either. "queryNote"?: string, // Set when page was past the last page, and the last is shown instead, or when // limit and maxTokens make more pages than page accepts: it then says what // reaches the rest. "paginationNote"?: string, // How "results" are ordered, and by whom. Absent when "results" is empty. "relevanceNote"?: string, // Pages outside the product documentation, matched on title and ranked // separately from "results", which carry no score to rank them against. // Omitted when none matched. "otherSources"?: [{ "title": string, "url": string, "source": string }], // Queries to try instead, when "results" is empty. "suggestions"?: [string], // When "results" is empty and language is not en-US, as not all documentation is // in it, or the query has Chinese, Japanese, Korean or Thai words and the documentation in // language is not written in them: which documentation to search instead, and how. "localeNote"?: string, // Only on a page that is one result cut to fit; see the Note on paging. "truncatedResult"?: { "title": string, "estimatedTokens": number } }

For Markdown format: A formatted list of search results with pagination and token info.

Examples (common query → recommended filters):

  • "Configure SSO with Okta in Jamf Connect" → query="SSO Okta", product="jamf-connect", topic="sso"

  • "Set up FileVault encryption" → query="FileVault encryption", product="jamf-pro", topic="filevault"

  • "Patch macOS apps" → query="patch policy", product="jamf-pro", topic="patch"

  • "Smart group criteria" → query="smart group criteria", product="jamf-pro", topic="reports"

  • "Automated Device Enrollment workflow" → query="ADE prestage", product="jamf-pro", topic="enrollment"

  • "Shared iPad in a classroom" → query="shared iPad classroom", product="jamf-school", topic="education"

  • "Jamf Protect custom analytic" → query="custom analytic", product="jamf-protect", topic="protect-analytics"

  • "Jamf Pro REST API authentication" → query="API role bearer token", product="jamf-pro", topic="api"

  • "Extension attribute scripts" → query="extension attribute script", product="jamf-pro", topic="extension-attributes"

  • "Paginate through results" → query="policy", page=2

Errors:

  • "Search for "" failed: ..." (isError) if the search could not be completed: learn.jamf.com could not be reached, timed out or answered with an error, or a configured search backend failed. This is not a "no results": the search did not complete, so the reply cannot say whether anything matches. The message says whether trying again may help. Pages outside the product documentation that did match follow it, in a second text block.

  • "Invalid option: expected one of ..." (an input validation error) if product, topic, docType or language is not one of the values the input schema lists

Note: "No results found" is not an error. It means the search ran and nothing in the product documentation matched; in JSON that is "total": 0, with "suggestions" and any "otherSources".

Note: Results are ranked by relevance. Use filters and pagination to navigate large result sets. A page holds up to limit results, as many as fit maxTokens, and the next page starts at the first that did not fit. Every result is on exactly one page, but which page depends on limit and maxTokens, so keep both the same while paging; the markdown footer names them beside the next page when they are not the default, and structuredContent carries limit and maxTokens. A result larger than maxTokens on its own is alone on its page with its snippet cut to fit; only that page has tokenInfo.truncated, and truncatedResult.estimatedTokens is what the whole result costs. If limit and maxTokens make more pages than page accepts (100), page 100 offers no next page and paginationNote says what reaches the rest. Most results carry a mapId + contentId pair; pass both to jamf_docs_get_article to fetch that article directly instead of resolving its URL. The pair is omitted when a result comes from a source that does not resolve one — fall back to the URL in that case, unless the result is external (see the next Note).

Note: A result with "external": true is not a page of the documentation but one Jamf's search lists beside it, such as a course in the Jamf Training Catalog (trainingcatalog.jamf.com), at the rank the search gave it. jamf_docs_get_article cannot read it: open its url in a browser. It has no mapId + contentId pair. Jamf classifies a Training Catalog course as training content, so its docType is "training" and docType "training" returns it; any other docType, or a specific version, leaves it out.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (1-100, default: 1)
limitNoMaximum number of results per page (1-50)
queryYesSearch keywords to find in Jamf documentation: 2-200 characters, or one Chinese, Japanese or Korean character
topicNoFilter by topic. Common: enrollment, profiles, policies, packages, scripts, patch, apps, security, filevault, sso, identity-provider, inventory, reports, api, network. See jamf_docs_list_products for the full list of 40 topic IDs.
docTypeNoFilter by document type: documentation, release-notes, training, solution-guide, glossary, getting-started
productNoFilter by product: jamf-pro, jamf-school, jamf-connect, jamf-protect, jamf-now, jamf-safe-internet, jamf-insights, jamf-rapididentity, jamf-trust, jamf-routines, self-service-plus, jamf-app-catalog, jamf-account, jamf-security-cloud, elevate, composer, jamf-parent, jamf-teacher, jamf-setup-reset, jamf-assessment, title-editor, jamf-infrastructure-manager, jamf-adcs-connector, jamf-pki-proxy, jamf-migrate, jamf-remote-assist, jamf-cloud-distribution-service, healthcare-listener
versionNoFilter by version (e.g., "11.13.0") or "current", at most 50 characters
languageNoDocumentation language/locale (default: en-US). Options: en-US, ja-JP, zh-TW, de-DE, es-ES, fr-FR, nl-NL, th-TH, it-IT, pt-BR, zh-CN
maxTokensNoMaximum tokens in response (100-50000, default: 5000)
outputModeNoOutput detail level: "full" for detailed output or "compact" for brief outputfull
responseFormatNoOutput format: "markdown" for human-readable or "json" for machine-readablemarkdown

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageYes
limitNo
queryYes
filtersNo
hasMoreYes
resultsYes
maxTokensNo
queryNoteNo
totalPagesYes
suggestionsNo
versionNoteNo
otherSourcesNo
totalResultsYes
relevanceNoteNo
paginationNoteNo
truncatedResultNo
filterRelaxationNo
truncatedContentNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv6.0.14
    • changedInput schema / properties / query / description
      Previous value: -"Search keywords to find in Jamf documentation"New value: +"Search keywords to find in Jamf documentation: 2-200 characters, or one Chinese, Japanese or Korean character"
    • changedInput schema / properties / query / minLength
      Previous value: -2New value: +1
    • changedInput schema / properties / version / description
      Previous value: -"Filter by version (e.g., \"11.13.0\") or \"current\""New value: +"Filter by version (e.g., \"11.13.0\") or \"current\", at most 50 characters"
    • addedInput schema / properties / version / maxLength
      Added value: +50
    • addedOutput schema / properties / maxTokens
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / queryNote
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / external
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / truncatedResult
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "estimatedTokens": {
      +      "type": "number"
      +    },
      +    "title": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "title",
      +    "estimatedTokens"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changedv6.0.12
    • addedOutput schema / properties / results / items / properties / crossFiled
      Added value: +{
      +  "type": "boolean"
      +}
  3. Changed8 schema fields changedv5.10.1
    • changedInput schema / properties / language / description
      Previous value: -"Documentation language/locale (default: en-US). Options: en-US, ja-JP, zh-TW, de-DE, es-ES, fr-FR, nl-NL, th-TH"New value: +"Documentation language/locale (default: en-US). Options: en-US, ja-JP, zh-TW, de-DE, es-ES, fr-FR, nl-NL, th-TH, it-IT, pt-BR, zh-CN"
    • changedInput schema / properties / language / enum
      Previous value: -[
      -  "en-US",
      -  "ja-JP",
      -  "zh-TW",
      -  "de-DE",
      -  "es-ES",
      -  "fr-FR",
      -  "nl-NL",
      -  "th-TH"
      -]New value: +[
      +  "en-US",
      +  "ja-JP",
      +  "zh-TW",
      +  "de-DE",
      +  "es-ES",
      +  "fr-FR",
      +  "nl-NL",
      +  "th-TH",
      +  "it-IT",
      +  "pt-BR",
      +  "zh-CN"
      +]
    • changedInput schema / properties / product / description
      Previous value: -"Filter by product: jamf-pro, jamf-school, jamf-connect, jamf-protect, jamf-now, jamf-safe-internet, jamf-insights, jamf-rapididentity, jamf-trust, jamf-routines, self-service-plus, jamf-app-catalog"New value: +"Filter by product: jamf-pro, jamf-school, jamf-connect, jamf-protect, jamf-now, jamf-safe-internet, jamf-insights, jamf-rapididentity, jamf-trust, jamf-routines, self-service-plus, jamf-app-catalog, jamf-account, jamf-security-cloud, elevate, composer, jamf-parent, jamf-teacher, jamf-setup-reset, jamf-assessment, title-editor, jamf-infrastructure-manager, jamf-adcs-connector, jamf-pki-proxy, jamf-migrate, jamf-remote-assist, jamf-cloud-distribution-service, healthcare-listener"
    • changedInput schema / properties / product / enum
      Previous value: -[
      -  "jamf-pro",
      -  "jamf-school",
      -  "jamf-connect",
      -  "jamf-protect",
      -  "jamf-now",
      -  "jamf-safe-internet",
      -  "jamf-insights",
      -  "jamf-rapididentity",
      -  "jamf-trust",
      -  "jamf-routines",
      -  "self-service-plus",
      -  "jamf-app-catalog"
      -]New value: +[
      +  "jamf-pro",
      +  "jamf-school",
      +  "jamf-connect",
      +  "jamf-protect",
      +  "jamf-now",
      +  "jamf-safe-internet",
      +  "jamf-insights",
      +  "jamf-rapididentity",
      +  "jamf-trust",
      +  "jamf-routines",
      +  "self-service-plus",
      +  "jamf-app-catalog",
      +  "jamf-account",
      +  "jamf-security-cloud",
      +  "elevate",
      +  "composer",
      +  "jamf-parent",
      +  "jamf-teacher",
      +  "jamf-setup-reset",
      +  "jamf-assessment",
      +  "title-editor",
      +  "jamf-infrastructure-manager",
      +  "jamf-adcs-connector",
      +  "jamf-pki-proxy",
      +  "jamf-migrate",
      +  "jamf-remote-assist",
      +  "jamf-cloud-distribution-service",
      +  "healthcare-listener"
      +]
    • changedInput schema / properties / version / description
      Previous value: -"Filter by version (e.g., \"11.5.0\", \"10.x\")"New value: +"Filter by version (e.g., \"11.13.0\") or \"current\""
    • addedInput schema / properties / version / pattern
      Added value: +"^(?:current|\\d+(?:\\.\\d+)*)$"
    • addedOutput schema / properties / otherSources
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "source": {
      +        "type": "string"
      +      },
      +      "title": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "title",
      +      "url",
      +      "source"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / results / items / properties / otherVersions
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  4. Changed6 schema fields changedv4.0.6
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedInput schema / properties / product / description
      Previous value: -"Filter by product: jamf-pro, jamf-school, jamf-connect, jamf-protect"New value: +"Filter by product: jamf-pro, jamf-school, jamf-connect, jamf-protect, jamf-now, jamf-safe-internet, jamf-insights, jamf-rapididentity, jamf-trust, jamf-routines, self-service-plus, jamf-app-catalog"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / properties / filters
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "docType": {
      +      "type": "string"
      +    },
      +    "language": {
      +      "type": "string"
      +    },
      +    "product": {
      +      "type": "string"
      +    },
      +    "topic": {
      +      "type": "string"
      +    },
      +    "version": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / limit
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / paginationNote
      Added value: +{
      +  "type": "string"
      +}
  5. Addedv3.0.34
  6. Removedv3.0.30
  7. First observedv3.0.25

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds substantial behavioral detail beyond annotations: relevance ranking, pagination coupled to maxTokens, truncation behavior, filterRelaxation, queryNote, localeNote, external results, and the distinction between no-results and errors.

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

Conciseness3/5

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

The description is front-loaded and well structured, but it is very long and repeats parameter documentation and a large Returns schema that the output schema already supplies. Many notes are operationally useful for pagination and edge cases, but the overall length goes beyond concise.

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

Completeness5/5

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

For a complex 11-parameter search tool with rich annotations and an output schema, the description covers errors, pagination interactions, token limits, external results, locale fallbacks, and article retrieval handoff. It leaves almost no contextual gap for correct invocation.

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 description coverage is 100%, so the baseline is 3; the schema already documents all 11 parameters. The description adds value through recommended filter examples, product/topic lookup pointers, and pagination interaction notes, though much of its Args section repeats 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: 'Search Jamf documentation for articles matching your query,' and explains the product scope. It also distinguishes this from jamf_docs_get_article by describing how results lead to article retrieval, so an agent can select it correctly among siblings.

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?

Provides concrete query-to-filter examples and points to jamf_docs_list_products for product/topic IDs and jamf_docs_get_article for fetching an article. It does not explicitly state when not to use search versus batch retrieval, but the routing guidance is clear and practical.

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