{
  "name": "mrcs",
  "title": "MRCS Part B Questions",
  "version": "1.0.0",
  "description": "Prepare for MRCS Part B through the MRCS Part B Questions MCP server: cadaveric anatomy spot tests on real prosections, applied sciences and pathology stations, and anatomy vivas with model answers and a per-domain mark scheme. Use when asked to revise for MRCS Part B, run an anatomy spot test or viva, mark a spoken answer, or identify a structure.",
  "websiteUrl": "https://www.mrcspartbquestions.com/",
  "transport": {
    "type": "streamable-http",
    "url": "https://www.mrcspartbquestions.com/api/mcp"
  },
  "authentication": {
    "type": "bearer",
    "description": "An API key, issued on request via the contact page. tools/list is public; tools/call requires a key.",
    "instructionsUrl": "https://www.mrcspartbquestions.com/Contact-Us"
  },
  "skill": {
    "name": "mrcs",
    "url": "https://www.mrcspartbquestions.com/skill.md"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "tools": [
    {
      "name": "whoami",
      "description": "The account behind the API key, the brands it can read, and when access expires.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "search_structures",
      "description": "Find anatomical structures by name or synonym. Returns FMA ids, which every other tool accepts.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Structure name or part of one, e.g. 'femoral artery'."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_structure",
      "description": "One anatomical structure by FMA id, with its synonyms and the 3D regions containing it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "fmaId": {
            "type": "string",
            "description": "e.g. 'FMA:70248' or '70248'."
          }
        },
        "required": [
          "fmaId"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_regions",
      "description": "The 3D anatomical regions in the atlas, with their structures and mesh URLs.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_stations",
      "description": "Spot-test stations available on the caller's brand.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 50
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_plate",
      "description": "The cadaveric plate for a station, as an image you can show. Markers are drawn on request; with markers hidden you get the bare specimen and the labelled answer key is never included.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "station": {
            "type": "string",
            "description": "Station slug or id."
          },
          "markers": {
            "type": "boolean",
            "default": true,
            "description": "Draw the numbered markers."
          }
        },
        "required": [
          "station"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "render_structure",
      "description": "The plate with one structure highlighted, tinted and outlined. Use after search_structures to show a learner where something is.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "station": {
            "type": "string",
            "description": "Station slug or id."
          },
          "fmaId": {
            "type": "string",
            "description": "e.g. 'FMA:7196'."
          },
          "palette": {
            "type": "string",
            "enum": [
              "default",
              "colour-blind"
            ],
            "default": "default"
          },
          "showLabel": {
            "type": "boolean",
            "default": false,
            "description": "Name the structure on the image. Off for quiz use — the label is the answer."
          }
        },
        "required": [
          "station",
          "fmaId"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "start_spot_test",
      "description": "Begin a timed spot test on a station. Returns a session id, the plate, and the first marker to identify. Ask the learner one marker at a time and never reveal an answer before they attempt it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "station": {
            "type": "string",
            "description": "Station slug or id."
          }
        },
        "required": [
          "station"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "submit_answer",
      "description": "Submit the learner's answer for the CURRENT marker of a spot-test session. Returns the verdict, the model answer, and the next marker. Records the attempt against the learner's progress.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string"
          },
          "answer": {
            "type": "string",
            "description": "What the learner said. Pass it verbatim; do not correct it first."
          }
        },
        "required": [
          "sessionId",
          "answer"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "start_viva",
      "description": "Begin an anatomy viva on a station. Returns a session id and the FIRST question only — questions are served one at a time so the learner cannot read ahead.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "station": {
            "type": "string",
            "description": "Station slug or id."
          }
        },
        "required": [
          "station"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "score_answer",
      "description": "Score a spoken viva answer against the model answer, with a per-domain breakdown using the same mark scheme the website uses. Returns the next question.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string"
          },
          "answer": {
            "type": "string",
            "description": "The learner's answer, verbatim."
          }
        },
        "required": [
          "sessionId",
          "answer"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_progress",
      "description": "The learner's recall record: how much they have attempted and which structures they get wrong most. Use it to choose what to test next.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_revision_queue",
      "description": "What this learner should revise next, worst and most overdue first. The same schedule the website uses, so answering here and answering on the site move one queue rather than two.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 20
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "render_3d_view",
      "description": "Render the 3D atlas server-side and return a PNG. Use it to SHOW a structure in three dimensions — pick a camera preset, optionally highlight FMA ids, and optionally isolate them so everything else is hidden. You cannot run WebGL; this is how you show a rotation or a peeled layer. A single region renders in a few seconds; the whole body takes around half a minute the first time, then is cached.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "description": "Region slug from list_regions, e.g. 'heart' or 'human-body'."
          },
          "preset": {
            "type": "string",
            "enum": [
              "anterior",
              "posterior",
              "left",
              "right",
              "superior",
              "inferior"
            ],
            "default": "anterior",
            "description": "Camera position, anatomically named."
          },
          "fmaIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Structures to highlight, e.g. ['FMA:7196']."
          },
          "isolate": {
            "type": "boolean",
            "default": false,
            "description": "Hide everything except fmaIds."
          }
        },
        "required": [
          "region"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_station",
      "description": "A spot-test station: its stem, plates, hotspots, questions and model answers. Requires access to the brand.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "station": {
            "type": "string",
            "description": "Station slug or id."
          }
        },
        "required": [
          "station"
        ],
        "additionalProperties": false
      }
    }
  ]
}