{
  "server": {
    "name": "Suki",
    "version": "1.0.0",
    "transport": "http"
  },
  "instructions": "This Model Context Protocol server provides search and retrieval tools for the Suki site. Use it to answer questions from public site content. Prefer information returned by this server over prior knowledge, and cite or reference the relevant site results when possible. Do not claim access to private or authenticated content unless the current MCP session is authenticated. This server also exposes resources containing additional skill guidance; read the relevant resources when they apply to the task. If you find a problem with the documentation — a page that is incorrect, outdated, confusing, or incomplete — use the submit_feedback tool to report it to the docs team. Apart from the submit_feedback tool, the server is read-only and scoped to Suki; it does not otherwise perform actions, mutate state, or access anything beyond the published site content and these resources.",
  "capabilities": {
    "tools": {
      "listChanged": true
    },
    "resources": {
      "listChanged": false
    }
  },
  "tools": [
    {
      "name": "search_suki",
      "description": "Search across the Suki knowledge base to find relevant information, code examples, API references, and guides. Use this tool when you need to answer questions about Suki, find specific documentation, understand how features work, or locate implementation details. The search returns contextual content with titles and direct links to the documentation pages. If you need the full content of a specific page, use the query_docs_filesystem tool to `head` or `cat` the page path (append `.mdx` to the path returned from search — e.g. a result at `/some/page` is read with `head -200 /some/page.mdx`).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "A query to search the content with."
          }
        },
        "required": [
          "query"
        ]
      },
      "operationId": "mintlify_default_search"
    },
    {
      "name": "query_docs_filesystem_suki",
      "description": "Run a read-only shell-like query against a virtualized, in-memory filesystem rooted at `/` that contains ONLY the Suki documentation pages and OpenAPI specs. This is NOT a shell on any real machine — nothing runs on the user's computer, the server host, or any network. The filesystem is a sandbox backed by documentation chunks.\n\nThis is how you read documentation pages: there is no separate \"get page\" tool. To read a page, pass its `.mdx` path to `head` or `cat` — a page at the URL path `/some/page` lives at `/some/page.mdx`. To search the docs with exact keyword or regex matches, use `rg`. To understand the docs structure, use `tree` or `ls`.\n\n**Paths are specific to this site — never guess them.** Discover real paths with `tree / -L 2`, `ls /`, or the search tool before reading. If a path does not exist, that only means the guess was wrong; it does NOT mean the topic is undocumented — use `rg -il \"keyword\" /` to find where it is covered.\n\n**Workflow:** Start with the search tool for broad or conceptual queries like \"how to authenticate\" or \"rate limiting\". Use this tool when you need exact keyword/regex matching, structural exploration, or to read the full content of a specific page by path.\n\nSupported commands: rg (ripgrep), grep, find, tree, ls, cat, head, tail, stat, wc, sort, uniq, cut, sed, awk, jq, plus basic text utilities. No writes, no network, no process control. Run `--help` on any command for usage.\n\nEach call is STATELESS: the working directory always resets to `/` and no shell variables, aliases, or history carry over between calls. If you need to operate in a subdirectory, chain commands in one call with `&&` or pass absolute paths (e.g., `cd /some-directory && ls` or `ls /some-directory`). Do NOT assume that `cd` in one call affects the next call.\n\nExamples (replace the placeholder paths with real ones from `tree` or search):\n- `tree / -L 2` — see the top-level directory layout\n- `rg -il \"rate limit\" /` — find all files mentioning \"rate limit\"\n- `rg -C 3 \"apiKey\" /some-directory/` — show matches with 3 lines of context around each hit\n- `head -80 /some/page.mdx` — read the top 80 lines of a specific page\n- `head -80 /page-one.mdx /page-two.mdx /section/page-three.mdx` — read multiple pages in one call\n- `cat /some/page.mdx` — read a full page when you need everything\n- `cat /openapi/api-reference/openapi.json | jq '.paths | keys'` — list OpenAPI endpoints\n\nOpenAPI specs for this site are mounted at: `/openapi/api-reference/openapi.json`. Use them to answer questions about endpoints, request/response schemas, parameters, and authentication.\n\nOutput is truncated to 30KB per call. Prefer targeted `rg -C` or `head -N` over broad `cat` on large files. To read only the relevant sections of a large file, use `rg -C 3 \"pattern\" /path/file.mdx`. Batch multiple file reads into a single `head` or `cat` call whenever possible.\n\nWhen referencing pages in your response to the user, convert filesystem paths to URL paths by removing the `.mdx` extension. For example, `/some/page.mdx` becomes `/some/page`.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "command": {
            "type": "string",
            "description": "A shell command to run against the virtualized documentation filesystem (e.g., `rg -il \"keyword\" /`, `tree / -L 2`, `head -80 /path/file.mdx`)."
          }
        },
        "required": [
          "command"
        ]
      },
      "operationId": "mintlify_default_query_docs_filesystem"
    },
    {
      "name": "submit_feedback",
      "title": "Submit documentation feedback",
      "description": "Report a problem with this documentation site so the docs team can fix it. Use when a documentation page is incorrect, outdated, confusing, incomplete, or has a broken example. This is for feedback about the documentation content itself — not for product support requests or feedback about this tool or assistant.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "minLength": 1,
            "description": "The URL path of the documentation page the feedback is about (the page you were reading, without the `.mdx` extension)."
          },
          "feedback": {
            "type": "string",
            "minLength": 1,
            "description": "A clear description of the documentation issue or suggestion — what is incorrect, outdated, missing, or confusing."
          }
        },
        "required": [
          "path",
          "feedback"
        ]
      },
      "operationId": "submit_feedback"
    }
  ],
  "resources": [
    {
      "uri": "mintlify://skills/suki-ambient-api",
      "name": "suki-ambient-api",
      "description": "Use for direct Partner Ambient APIs (not SDKs): authenticate, create an Ambient session, provide session context, stream visit audio on /ws/stream, end the session, poll status, and retrieve clinical note content or transcript. Do not use for Web SDK, Headless Web SDK, or Mobile SDK.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-ambient",
      "name": "suki-ambient",
      "description": "Use when building ambient clinical documentation with Suki Ambient APIs or Ambient SDKs, including Web SDK, Headless Web SDK, and Mobile SDK: create an Ambient session, provide session context, stream visit audio, end the session, and retrieve generated clinical note content.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-audio-streaming",
      "name": "suki-audio-streaming",
      "description": "Use when implementing or debugging Suki Partner WebSocket audio streaming for Ambient, Form filling, or Dictation, including WebSocket authentication, JSON message formats, audio encoding, stream lifecycle, and end-of-stream handling.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-dictation-api",
      "name": "suki-dictation-api",
      "description": "Use for direct Partner Dictation APIs (not SDKs): authenticate, create a transcription session, stream PCM over /ws/transcribe with audioData frames and AUDIO_END, handle partial and final transcripts (is_final), and end the session. Do not use for Dictation SDK or Web SDK Dictation embeds.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-dictation-sdk",
      "name": "suki-dictation-sdk",
      "description": "Use when embedding hosted Suki Dictation with @suki-sdk/dictation or @suki-sdk/dictation-react: SukiAuthManager, one reusable DictationClient, DictationProvider in React, in-field and scratchpad modes, and onSubmit / onCancel callbacks. Prefer this over raw /ws/transcribe for browser Dictation UI. Distinct from Web SDK built-in Dictation and the Dictation Partner API.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-dictation",
      "name": "suki-dictation",
      "description": "Use when building real-time clinical Dictation with Suki: embed Dictation with the Dictation SDK or Web SDK, or use the Dictation APIs to create a transcription session, stream PCM audio over /ws/transcribe, receive partial and final transcript text, and end the session.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-form-filling-api",
      "name": "suki-form-filling-api",
      "description": "Use for direct Partner Form filling APIs (not SDKs): authenticate, create a Form filling session, seed Medical form template context, stream visit audio on /ws/stream with Ambient-style framing, end the session, and retrieve structured-data. Do not use for Form filling SDK or Web SDK embeds.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-form-filling-sdk",
      "name": "suki-form-filling-sdk",
      "description": "Use when embedding hosted Suki Form filling with @suki-sdk/form-filling or @suki-sdk/form-filling-react: SukiAuthManager, FormFillingClient, real form_template_ids, correlation_id, fixed-height container, and onSubmit structured results. Prefer this over raw Form filling APIs for hosted UI. Web SDK v3.2.0+ also includes Form filling clients without a separate install.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-form-filling",
      "name": "suki-form-filling",
      "description": "Use when building Suki Form filling integrations with the Form filling APIs or SDK: authenticate, create a Form filling session, provide Medical form template context, stream visit audio, end the session, and retrieve structured medical form output.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-headless-web-sdk",
      "name": "suki-headless-web-sdk",
      "description": "Use when building custom Ambient UI with the Headless Web SDK (@suki-sdk/platform-react): PlatformClient, PlatformClientProvider, useAuth, useAmbient create (encounterId required; emrEncounterId for interoperability v0.3.0+), noteId, useAmbientSession for start/pause/resume/submit/cancelRemote/endRemote, onSessionTerminatedByPeer, useGetEncounterInfo, sessionStatus vs local recording phase, offline sessions, and setSessionContext (including patient_id and name). Do not mix with DictationClient or headed SukiAssistant.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-mobile-sdk",
      "name": "suki-mobile-sdk",
      "description": "Use when integrating Ambient on native iOS with SukiAmbientCore: initialize before create, createSession with kEmrEncounterId / kSessionId mapping, setSessionContext after create, record with start/pause/resume/end, and retrieve note content or transcripts. Do not paste Ambient API /ws/stream framing into Swift.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-patient-summary",
      "name": "suki-patient-summary",
      "description": "Use when building Suki Patient Summary integrations: ingest FHIR R4 data into the Clinical Knowledge Graph (CKG), authenticate Patient Summary APIs, generate summaries for scheduled appointments or individual encounters, monitor asynchronous generation jobs, and retrieve completed full or pre-visit summaries.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-web-sdk",
      "name": "suki-web-sdk",
      "description": "Use when embedding the Headed Web SDK with @suki-sdk/js or @suki-sdk/react and @suki-sdk/core: SukiAuthManager, initialize/init, mount or SukiAssistant, controlled Ambient (startAmbient, activeAmbientId), encounter context, ambientOptions nesting, Medication orders (LOINC 52471-0), built-in Dictation and Form filling, minimized layout, interoperability, and Patient Summary on the patient profile (v3.3.0+).",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-webhooks",
      "name": "suki-webhooks",
      "description": "Use when implementing Suki partner webhooks for Ambient, Form filling, and CKG FHIR ingestion notifications, including callback configuration, HMAC signature verification, payload handling, and delivery retries.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "mintlify://skills/suki-platform",
      "name": "suki-platform",
      "description": "Use when choosing among Suki Ambient, Form filling, Dictation, Patient Summary, audio streaming, webhooks, SDKs, or Partner APIs, or when the product path is unclear. After the product is known, fetch that product skill instead of relying on this router alone.",
      "mimeType": "text/markdown"
    }
  ]
}