casecraft
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| catalogA | List every case and drill category available, with counts. Safe to show the candidate — it contains titles and counts, never content. Use it to offer choices ("I have a profitability case in airlines and a market-entry case in consumer health — which would you like?"). |
| progressA | The candidate's history: weakest areas, repeated mistakes, recent attempts. Use it to recommend what to practise, and to open a session with something
specific ("last time you dropped the load factor twice — let's do capacity
math"). |
| start_caseA | Begin a full case interview. Opens the interview room in the browser. Returns a briefing: format, industry, difficulty, how many questions, and the topics of clarifying information available — never the facts themselves. Tell the candidate the room is open and confirm they can hear you before starting. |
| start_drillA | Begin a drill: loose questions pulled across cases, no full-case context. This is the "only hard math" mode. Each question carries its own standalone
framing so it makes sense out of case order. With |
| sayA | Speak in your own voice — greetings, probes, transitions, feedback. Keep it conversational and brief — in voice mode it is read aloud, and in text mode it appears as a chat line. Either way: no lists, no markdown, no long sentences. With |
| listenA | Hear whatever the candidate says next — not tied to any question. This is the conversational channel: clarifying questions, "can you repeat
that", "I'm ready", thinking out loud. If it returns |
| ask_case_promptA | Read the case prompt aloud to open the interview. Returns no content — the prompt reaches the candidate inside the room only, never through this tool result (which would land in the chat transcript). After this, expect clarifying questions before they start structuring. |
| next_questionA | Advance to the next question and read it aloud. Returns metadata only — type, difficulty, time target — never the text.
Use the type to calibrate: a |
| repeat_questionA | Deliver the current question again. Candidates are allowed to ask. |
| answer_clarificationA | Release one withheld fact, if the candidate asked for it. This is the only way case data reaches them, and it's deliberate: good
candidates ask, weak ones assume. If nothing matches, you get |
| release_clarificationA | Release a specific withheld fact by id, when keyword matching missed it. Use only when the candidate's question clearly maps to that topic. You are matching intent, not deciding generosity — if they didn't ask for it, don't release it. |
| collect_answerA | Listen for the candidate's spoken answer, then grade what can be graded. Call it right after asking a question. If it returns Math answers come back fully graded (deterministic, instant). Framework and
synthesis answers come back with the rubric's component labels and the
committed transcript — read them, decide which components the candidate
actually covered, and pass those ids to |
| scoreA | Record which rubric components the answer covered, and get the verdict. You supply the semantic matching; the pass/probe policy lives server-side so
it's identical for everyone. A PARTIAL verdict with a named gap is your cue
to |
| probeA | Get the next hint for the current question, escalating weakest-first. Real interviewers nudge before they explain. Speak the probe with |
| reveal_model_answerA | The casebook's own answer for the current question. Only after grading. Use it to explain what a strong answer sounds like — paraphrase it conversationally rather than reading it out verbatim. |
| show_exhibitA | Display a chart or table in the room. Exhibits are the one thing the candidate is meant to see — a real interviewer slides paper across the table. Speak the intro line, then give them a moment before asking what they make of it. |
| room_statusA | Inspect the interview room: state, page health, and a timestamped log. Use this the moment anything looks wrong — silence, a stall, an answer that never arrived. It reports what was spoken, whether the page acknowledged it, whether the mic is open and whether a tab is even connected, so you can diagnose without asking the candidate what they see on screen.
|
| room_actA | Drive the room as if you were the candidate. For testing, not for cheating. This lets you rehearse or diagnose the whole flow with nobody at the keyboard — press Start, submit an answer, confirm the loop advances. During a real interview, don't answer on the candidate's behalf. |
| finishA | End the session and return the scorecard. Four dimensions, rated 1–5, where 3 is the bar. Note |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Olivesz/casecraft'
If you have feedback or need assistance with the MCP directory API, please join our Discord server