# MCP specification 2025-06-18: Sampling (model preferences) ## Metadata | Field | Value | |---|---| | Institute | Molodetz Institute — Research & Retrieval Division | | Subject | cap-protocol | | Document type | Source Dossier | | Tier | 1 | | Source title | MCP specification 2025-06-18: Sampling (model preferences) | | Source URL | https://modelcontextprotocol.io/specification/2025-06-18/client/sampling | | Source publisher / author | Model Context Protocol project | | Source type | standard | | Source date (published) | 2025-06-18 | | Date researched | 2026-10-25 | | Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor | | Research method | direct page fetch | | Confidence | High | | Status | Active | ## Summary The MCP feature by which a server asks the client's model for a completion, notable here for its model-selection abstraction. ## Key findings - A server cannot simply request a model by name because the client may not have that model or may prefer another provider's equivalent. - Preferences combine three normalized priorities, `costPriority`, `speedPriority`, `intelligencePriority` (0 to 1), with optional `hints`. - Hints are substrings that match model names flexibly, are evaluated in order, MAY map to equivalent models from other providers, and are advisory: 'clients make final model selection'. - Example: hints `claude-3-sonnet` then `claude`, with cost 0.3, speed 0.8, intelligence 0.5. - Humans in the loop: there SHOULD always be a way to deny sampling requests; clients SHOULD show requests and responses for review, rate-limit, and respect hints. ## Pros / strengths A finished, widely implemented answer to 'how does a caller name a model without knowing the callee's catalog': substring hints plus capability priorities, resolved by the owner of the models. ## Cons / limitations / caveats Priorities are unitless hints; the spec does not say how a client turns them into a choice. ## Relevance to tai Matches the shape of tai's fuzzy `@model` resolution (substring-style hints resolved by the side that knows the catalog). A tool input of `hints` plus optional priorities is a precedent for `ask_agent(model_hint=...)`. Human-in-the-loop rules inform the approval default. ## Changelog | Date | Change | |---|---| | 2026-10-25 | Initial dossier created. |