Datos con fecha
Lo que cambia con el tiempo: precios, versiones, valores por defecto y fechas legales. Cada dato lleva su fuente. Comprobados el 15-11-2026. Si ves uno que ya no cuadra, manda lo que dice la fuente.
Los precios van en dólares sin impuestos, como los publica Anthropic. «MTok» es un millón de tokens. La fecha de arriba es la de la última revisión. Las filas que se revisaron por separado lo dicen en su fuente.
Claude y sus planes
| Dato | Valor | Fuente | Lo usan |
|---|---|---|---|
claude -p con la sesión de tu plan |
Gasta del uso de tu suscripción, sin clave de API. El cambio anunciado para junio de 2026 quedó en pausa | support.claude.com, artículo 15036540 | 1.1, 1.5, 1.6, 1.8, 3.8, 5.7 |
| La API con clave | Se paga aparte del plan | support.claude.com, artículo 17154008 | 1.8 |
| Créditos de API incluidos cada mes | Max 100 $, Ultra 200 $, Team 20 $ por puesto Standard y 100 $ por puesto Premium, juntos hasta 500 $. Free, Pro y Enterprise no los traen | support.claude.com, artículo 17154008 | 1.8 |
Claude Code
| Dato | Valor | Fuente | Lo usan |
|---|---|---|---|
| Versión de las pasadas grabadas | 2.1.325, publicada el 13-11-2026. Claude Code saca versiones casi a diario: mira la tuya con claude --version y compárala con la de cada grabación |
Changelog de Claude Code | 1.5, 2.4, 5.7, 6.9 |
Opciones de claude -p que usan los scripts |
--safe-mode, --strict-mcp-config, --mcp-config, --no-chrome, --disable-slash-commands, --no-session-persistence, --include-partial-messages, --json-schema, --max-budget-usd, --tools, --allowedTools, --restricted, --permission-prompts none y --setting-sources salen en claude --help de la 2.1.325. llm-fundamentals aísla cada pasada con --safe-mode; minimal-mcp y remote-mcp, con --setting-sources project y --strict-mcp-config, porque necesitan cargar su servidor MCP |
Referencia de la CLI | 1.5, 1.6, 2.4, 3.8 |
--max-turns |
Solo con -p. No sale en claude --help de la 2.1.325, pero está en la referencia |
Referencia de la CLI | 1.5, 2.4, 3.8 |
--setting-sources project |
Carga los ajustes del proyecto y deja fuera los de usuario, también tu ~/.claude/CLAUDE.md. El CLAUDE.md de la carpeta sí se carga: los scripts salen de una carpeta temporal vacía |
Referencia de la CLI y memoria de Claude Code. Comprobado con la 2.1.325 el 15-11-2026: en una carpeta con un CLAUDE.md propio, claude -p --setting-sources project,local vio ese fichero y no el de usuario |
3.8, 5.7, 6.6, 6.9 |
Servidores del .mcp.json de un proyecto en claude -p |
Se cargan sin preguntar: en modo no interactivo no hay diálogo de aprobación. Para dejarlos fuera, --strict-mcp-config, --setting-sources sin project o disabledMcpjsonServers |
Claude Code y MCP, apartado del modo no interactivo, revisado el 15-11-2026 | 3.3 |
total_cost_usd en una sesión de varios turnos |
Cada result trae el acumulado de la sesión, no lo del turno: el del último turno es el total |
Grabaciones de remote-mcp: 2026-11-14-live-session.json (0,035, 0,042 y 0,056) y 2026-11-15-live-session-solucion.json (0,035, 0,041 y 0,054). Lo que sube de un turno a otro cuadra con los tokens de ese turno a precio de Sonnet 5.5 |
5.7, 6.6 |
--bare |
Solo autentica con ANTHROPIC_API_KEY o apiKeyHelper. No lee la sesión del plan |
Modo sin interfaz y claude --help de la 2.1.325 |
1.5, 1.6, 3.8 |
--permission-mode manual |
Válido. manual es el alias de default |
Modos de permisos | 2.4, 3.8 |
Salida de --output-format json y --json-schema |
La respuesta con forma fija llega en structured_output. La salida trae total_cost_usd, una estimación a precio de API |
Modo sin interfaz | 1.6, 3.8 |
claude auth status con sesión iniciada |
Devuelve "loggedIn": true |
Comprobado con Claude Code 2.1.325 | 1.8, 3.8 |
claude mcp add con --header |
--header admite varios valores: va al final de la orden |
Claude Code y MCP, comprobado en la 2.1.325 | 5.7 |
| Revisión de MCP que habla Claude Code | 2026-07-28: empieza con server/discover, sin initialize |
Grabación del proyecto remote-mcp, evidencia/live/2026-11-14-live-session.json, con la 2.1.325 |
5.7, 6.6 |
La API y sus modelos
| Dato | Valor | Fuente | Lo usan |
|---|---|---|---|
| Cambios dentro de una misma versión de la API | Anthropic conserva los parámetros de entrada y salida, pero puede añadir entradas opcionales, valores nuevos a la salida y variantes nuevas a los campos con una lista cerrada de valores, como los tipos de evento del streaming | Versiones de la API, revisado el 15-11-2026 | 1.3 |
| Versión de API que manda el SDK actual | 2026-10-21 (desde @anthropic-ai/sdk 1.0.0) |
Migración a 2026-10-21 | 1.1 |
temperature, top_p y top_k |
Con 2026-10-21 dan 400 en todos los modelos, con cualquier valor |
Migración a 2026-10-21 | 1.1 |
| Thinking en los modelos 5.x | Activado por defecto. Cuenta dentro de max_tokens y se cobra como salida. Con display: "omitted", el valor por defecto, el bloque llega con el texto vacío y la firma |
Thinking | 1.1, 2.5 |
max_tokens sin streaming |
El proyecto usa 16.000. Sin streaming, el SDK de TypeScript lanza un error si calcula que la petición pasará de unos 10 minutos: su fórmula da 60 × 60 × max_tokens ÷ 128.000 segundos, así que por encima de 21.333 pide streaming (o un timeout propio) |
SDK de TypeScript, apartados «Timeouts» y «Long requests», revisado el 15-11-2026 | 1.1, 1.8 |
Claude Haiku 5.5 (claude-haiku-5-5) |
0,10 $ / 0,50 $ por MTok, y 0,50 $ / 2,50 $ si el prompt pasa de 100.000 tokens. Esfuerzo por defecto medium |
Precios para el precio y Effort para el esfuerzo (esta, revisada el 15-11-2026) | 1.5, 1.7 |
Claude Sonnet 5.5 (claude-sonnet-5-5) |
2 $ / 10 $ por MTok. Esfuerzo por defecto high |
Precios para el precio y Effort para el esfuerzo (esta, revisada el 15-11-2026) | 1.7, 2.8 |
Claude Opus 5.5 (claude-opus-5-5) |
4 $ / 20 $ por MTok. Esfuerzo por defecto medium |
Precios para el precio y Effort para el esfuerzo (esta, revisada el 15-11-2026) | 1.7 |
Claude Fable 5.2 (claude-fable-5-2) |
8 $ / 40 $ por MTok | Precios | 1.7 |
| Ventana de contexto | Un millón de tokens en Haiku 5.5, Sonnet 5.5 y Opus 5.5 | Modelos | 1.7 |
| Esfuerzo de partida para Sonnet 5.5 con herramientas | medium para agentes y uso de herramientas en varios pasos bien especificados; high para lo más largo o difícil. El valor por defecto es high |
Effort, recomendaciones por modelo, revisado el 15-11-2026 | 1.1, 2.4 |
| Caché en Sonnet 5.5 | Escritura 2,50 $ por MTok (5 minutos) o 4 $ (una hora). Lectura 0,10 $, la vigésima parte de la entrada | Precios | 1.6, 2.8 |
| Mínimo de tokens para cachear | 512 en Sonnet 5.5, Haiku 5.5, Opus 5.5, Opus 5 y Fable. 1.024 en Sonnet 5, Opus 4.8 y Sonnet 4.6. 2.048 en Opus 4.7. 4.096 en Opus 4.6, Opus 4.5 y Haiku 4.5. Por debajo no se cachea y no da error | Prompt caching | 2.8 |
| Reintentos automáticos del SDK | Dos por defecto, en errores de conexión, 408, 409, 429 y 5xx | Errores | 1.4 |
| 429 por el tope de gasto del mes | Sin retry-after y con error.details.error_code: "enforced_spend_limit_reached". No vuelve hasta el mes siguiente |
Rate limits | 1.4, 1.8, 1.9 |
| Límites por minuto | RPM, ITPM, OTPM y el límite de rampa (ramp_limit_exceeded) |
Rate limits | 1.4 |
529 overloaded_error |
Puede llegar después del 200, como evento de error dentro del stream | Errores | 1.4, 1.8 |
Valores de stop_reason |
end_turn, max_tokens, stop_sequence, tool_use, pause_turn, refusal y model_context_window_exceeded. Con refusal llega stop_details |
Stop reasons | 1.1 |
| Salidas estructuradas | Van en output_config.format. No admiten minimum, maximum, multipleOf, minLength ni maxLength. pattern se admite con restricciones. No garantizan las mayúsculas de enum y const: la documentación pide compararlos sin distinguir mayúsculas. Una negativa o un corte por max_tokens pueden no seguir el schema |
Structured outputs, revisado el 15-11-2026 | 1.6, 1.9 |
zodOutputFormat y messages.parse |
En @anthropic-ai/sdk 1.8, zodOutputFormat() (de @anthropic-ai/sdk/helpers/zod) convierte un schema de Zod: quita las reglas que la API no admite y las apunta en la descripción. client.messages.parse() valida la respuesta contra el schema entero y la devuelve en parsed_output |
Structured outputs y el paquete 1.8.0 de npm, revisados el 15-11-2026 | 1.6 |
| Texto parcial como principio de la respuesta (prefill) | Da 400 en los modelos 4.6 y posteriores | Errores | 1.5 |
| Conteo de tokens | Gratis, con su propio límite de peticiones | Token counting | 1.8 |
| Nombre de una herramienta | Tiene que cumplir ^[a-zA-Z0-9_-]{1,128}$ |
Define tools | 2.4 |
tool_choice con any o tool |
Da 400 en Sonnet 5.5, Opus 5.5, Fable 5.1 y 5.2 y Mythos 5.1 y 5.2. Se usa auto con strict: true |
Define tools | 2.4 |
| Comprobación del prefijo (prefix check) | Cada bloque de thinking queda ligado a system, tools y cada mensaje anterior. Si cambian, puede dar 400 «The block is bound to a different conversation». Con Fable 5.2 y Mythos 5.2 es siempre el 400; con Opus 5.5, Sonnet 5.5 y Haiku 5.5, unas veces el 400 y otras ningún error. thinking.block_binding.prefix_mismatch_behavior: "error", con la cabecera beta thinking-binding-controls-2026-08-01, da el 400 siempre |
Prefix checks, revisado el 15-11-2026 | 2.5, 2.11 |
Mensaje system a mitad de conversación |
Un mensaje con role: "system" al final de messages, detrás del último mensaje de usuario. Justo después de un turno del asistente da 400. En la API de Claude lo aceptan todos los modelos con preserved thinking, los 5.5 incluidos, sin cabecera beta. Un dato que cambia, como la fecha, va en un bloque de texto propio del siguiente mensaje de usuario |
Change tools or instructions, revisado el 15-11-2026 | 2.5, 2.11 |
redacted_thinking |
Aparece cuando parte del razonamiento se oculta por seguridad. Va cifrado en data y se reenvía sin tocar |
Thinking | 2.5 |
| Texto entre llamadas a herramientas en Sonnet 5.5 | El modelo puede escribir una nota de progreso antes de cada llamada. Llega como un bloque thinking propio, con el texto vacío con display: "omitted" (el valor por defecto), en vez de como text |
Thinking, «Progress updates between tool calls», revisado el 15-11-2026 | 2.5 |
| Búsqueda de herramientas | Tipos tool_search_tool_bm25_20251119 y tool_search_tool_regex_20251119 |
Tool search | 5.6 |
MCP
| Dato | Valor | Fuente | Lo usan |
|---|---|---|---|
| Revisión vigente de la especificación | 2026-07-28. La anterior, con handshake, es 2025-11-25 |
Versionado de MCP | 3.1, 4.2, 5.1, 5.3 |
Qué cambió en 2026-07-28 |
Sin initialize/initialized ni sesiones (Mcp-Session-Id). Cada petición declara su versión en _meta y, por HTTP, en MCP-Protocol-Version |
Versionado de MCP y anuncio del 28-07-2026 | 4.2, 5.3 |
| Annotations de una tool | Los clientes deben tratarlas como no fiables salvo que vengan de un servidor de confianza | Tools, revisión 2026-07-28, revisado el 15-11-2026 | 3.3 |
| Errores de validación de entrada | Se devuelven como error de ejecución de la tool, con isError: true, no como error de JSON-RPC. Lo aclaró la revisión 2025-11-25 (SEP-1303) |
Changelog de 2025-11-25 y Tools, revisión 2026-07-28, revisados el 15-11-2026 | 3.5 |
server/discover |
Obligatorio en el servidor. Llamarlo es opcional para el cliente | Versionado de MCP | 4.2, 4.6 |
| Servidor del SDK v2 por stdio | server.connect(new StdioServerTransport()) solo atiende la era 2025. serveStdio atiende las dos |
SDK de TypeScript: soporte de 2026-07-28 | 4.2, 4.6 |
| Cliente del SDK v2 | Sin versionNegotiation hace el handshake de 2025. pin exige una revisión y no cae a la antigua. auto pregunta con server/discover y cae a initialize si hace falta |
SDK de TypeScript: soporte de 2026-07-28 | 4.2, 4.6 |
createMcpHandler |
Construye un servidor nuevo por petición. legacy: "stateless" por defecto (atiende también la era 2025) y legacy: "reject" la rechaza |
SDK de TypeScript: soporte de 2026-07-28 y el paquete 2.4.0 de npm | 5.3, 5.7 |
| Un servidor ya conectado | Rechaza otra conexión con AlreadyConnected: «Use a separate Server instance per connection» |
Código de @modelcontextprotocol/server 2.4.0 en npm |
5.3 |
Autorización en 2026-07-28 |
El servidor comprueba que el token es para él (RFC 8707). Token inválido o caducado: 401. Scope insuficiente: 403. No acepta ni reenvía tokens ajenos | Autorización de MCP | 5.4 |
| Code Mode de Cloudflare | La API de Cloudflare tiene más de 2.500 endpoints. Dos tools, search() y execute(), con unos 1.000 tokens. Publicado el 20-02-2026 |
Blog de Cloudflare | 5.6, 5.8 |
Librerías y versiones
| Dato | Valor | Fuente | Lo usan |
|---|---|---|---|
| Node.js que piden los proyectos | 22.12 o posterior (engines >=22.12; .nvmrc con 22 en minimal-mcp y remote-mcp) |
package.json de llm-fundamentals, minimal-mcp y remote-mcp |
1.1, 1.8, 2.1, 3.1, 4.1, 5.1 |
@anthropic-ai/sdk |
1.8.0, del 10-11-2026, la última al revisar. Trae toolset_name en los bloques tool_use |
npm | 1.1, 2.5 |
@modelcontextprotocol/server y @modelcontextprotocol/client |
2.4.0, del 23-10-2026, la última al revisar. La 2.0.0 salió el 27-07-2026, y después la 2.1.0, la 2.2.0, la 2.3.0 (con la 2.3.1) y la 2.4.0 | npm | 3.1, 3.9, 4.2, 5.1, 5.3 |
zod |
4.6.7, del 12-10-2026 | npm | 3.1 |
typescript, vitest y tsx |
7.0.2, 5.1.0 y 4.23.15, las que fija el package-lock.json de los tres proyectos y las últimas estables al revisar |
npm | 1.1, 3.1 |
node:sqlite |
Viene con Node, en estado experimental (estabilidad 1.1). Sin bandera desde la 22.13; en la 22.12 necesita --experimental-sqlite. La opción timeout de DatabaseSync llegó en la 22.16, así que el proyecto pone la espera con PRAGMA busy_timeout |
Node.js 22, SQLite, revisado el 15-11-2026 | 6.9 |
Salidas de los proyectos
Solo las cifras que la lección necesita, porque describe cada test o cada caso.
| Dato | Valor | Fuente | Lo usan |
|---|---|---|---|
minimal-mcp, npm test -- stdio |
2 tests: el recorrido por stdio y el desbordamiento del buffer | tests/stdio.test.ts del proyecto |
4.8 |
remote-mcp, tests/gateway.test.ts |
5 tests | tests/gateway.test.ts del proyecto |
6.4 |
remote-mcp, tests/benchmark.test.ts |
4 tests | tests/benchmark.test.ts del proyecto |
6.9 |
remote-mcp, tu frontera |
npm run student:verify, 20 casos; npm run student:http:verify, 14 comprobaciones por HTTP |
starter/verify.ts y starter/verify-http.ts del proyecto |
5.7, 6.9 |
minimal-mcp, tu cliente stdio |
npm run student:client, 7 comprobaciones con procesos de verdad |
starter/verify-client.ts del proyecto |
4.8 |
llm-fundamentals, tu llamada a la API |
npm run student:api, 12 casos contra un transporte falso |
starter/verify-api.ts del proyecto |
1.8 |
llm-fundamentals, tu aprobación y tu recibo |
npm run student:effect, 18 casos; el starter sale con 14 fallos |
starter/verify-effect.ts del proyecto |
2.10 |
remote-mcp, tests/write-safety.test.ts |
4 tests | tests/write-safety.test.ts del proyecto |
6.6 |
remote-mcp, dos instancias |
npm run demo:instancias y tests/two-instances.test.ts, 2 tests: con los efectos en memoria, un efecto y APPROVAL_REPLAYED en el segundo clic; con SQLite, un efecto y el recibo repetido |
demos/parte-2/05-two-instances/ y src/sqlite-store.ts del proyecto |
6.6, 6.9 |
llm-fundamentals, campaña adversarial |
32 casos, { passed: 32, failed: 0, verdict: 'gate verde' } |
src/adversarial-campaign.ts del proyecto |
2.9, 2.10 |
Glosario
Los términos que el curso deja en inglés, porque son los que vas a ver en la documentación, en el código y en los errores. Cada uno se explica en su lección; aquí tienes la definición corta y dónde está.
| Término | Qué es | Dónde se explica |
|---|---|---|
| adapter | La pieza de tu código que habla con un sistema externo (el CRM, una base de datos) y traduce lo que devuelve | 3.2, 6.3 |
| allowlist | Lista cerrada de lo permitido. Lo que no está en ella no pasa | 2.7 |
| audience | El recurso para el que se emitió un token. Un token emitido para otro recurso se rechaza | 5.4 |
| bearer | Un token que da acceso a quien lo lleva, en la cabecera Authorization: Bearer … |
5.4 |
| canary | Un valor trampa que metes a propósito para comprobar después si se ha filtrado | 2.7 |
| capability | Una operación concreta que el sistema sabe hacer y que se autoriza por su nombre, como customer.prepare_renewal |
2.3, 6.1 |
| commit | El paso que deja el resultado por bueno o la escritura hecha. En una escritura del gateway, el mode: "commit" que escribe de verdad |
1.5, 6.6 |
| control plane | El plano de control: la parte del sistema que decide qué existe, quién puede usarlo y con qué reglas | 6.3 |
| deadline | El plazo total de una tarea: cuenta todo lo que pasa desde que empieza, no solo la llamada al modelo | 1.4, 6.5 |
| discovery | Cómo encuentra el cliente las operaciones que puede usar | 5.5 |
| DTO | Un objeto de datos con una forma fija y cerrada, sin campos de más | 2.7 |
| dry_run | El ensayo sin efectos de una escritura: calcula qué pasaría y deja pendiente la aprobación | 6.6 |
| effort | El parámetro de la API que decide cuánto trabaja el modelo en una respuesta, pensar incluido | 1.1 |
| gateway | El servidor que se pone delante de tus sistemas y solo publica search y execute |
5.6, 6.1 |
| golden set | Un conjunto fijo de casos con la respuesta esperada, para medir siempre contra lo mismo | 5.5, 6.8 |
| handler | La función que atiende una llamada a una herramienta: recibe los argumentos ya validados y devuelve el resultado | módulos 3 y 4 |
| handshake | El saludo inicial entre cliente y servidor en la era 2025 de MCP (initialize) |
4.2 |
| hit-rate@k, precision@k, MRR | Las tres medidas del routing: si la operación correcta sale entre las k primeras (hit-rate), qué parte de esas k es la correcta (precision) y, de media, lo arriba que sale (MRR) | 5.5, 6.8 |
| ledger | El registro de operaciones: una entrada por clave, con su estado | 2.6 |
| loop (bucle) | La vuelta que da tu código: pide al modelo, ejecuta la herramienta que pide, le devuelve el resultado y repite hasta que termina | 2.4 |
| nonce | Un número de un solo uso. Una aprobación con un nonce ya gastado no vale | 2.3 |
| payload | Los datos de una operación, como { customerId, discountPct } |
2.3 |
| policy | Las reglas que deciden quién puede hacer qué. En remote-mcp, las tres preguntas de GatewayPolicy |
5.4 |
| preview | La vista previa de un efecto antes de aprobarlo: qué se va a escribir, dónde y con qué clave | módulo 6 |
| prompt caching | Guardar el principio del prompt para que la siguiente llamada idéntica lo pague más barato | 1.6, 2.8 |
| registry | El catálogo interno de capabilities: qué existe, con qué permiso y con qué contrato | 6.3 |
| resource | Una primitiva de MCP que decide leer la aplicación; la herramienta la decide el modelo | 4.4 |
| routing | Elegir qué operación atiende una petición | 6.8 |
| runbook | El procedimiento escrito que sigue el equipo de guardia cuando algo falla | 6.5 |
| runtime | La capa de tu código que llama al modelo y decide qué hacer con lo que vuelve | 1.1 |
| schema | La descripción formal de la forma de unos datos: qué campos hay, de qué tipo y cuáles son obligatorios | 1.3, 3.5 |
| scope | Un permiso con nombre que lleva un token, como customer:read |
5.4, 6.2 |
| selection token | El token firmado que devuelve search. Liga identidad, capabilities y clientes, y caduca |
6.2 |
| server tool | Una herramienta que ejecuta Anthropic en sus servidores, como la búsqueda web | 2.5 |
| stateless | El servidor no guarda nada entre una petición y otra. El estado vive en otro sitio | 5.3 |
| stdio | La entrada y la salida estándar de un proceso. En MCP local, el canal por el que viajan los mensajes | 3.3, 4.3 |
| streaming | La respuesta llega a trozos mientras se genera | 1.5 |
| structured output | Una salida con forma fija, según un JSON Schema que le das a la API | 1.6 |
| tenant | Cada empresa cliente del sistema, con sus datos separados de los de las demás | 2.3, 5.4 |
| thinking | El razonamiento del modelo antes de responder. Viaja de vuelta en cada turno | 1.1, 2.5 |
| tool call | La petición del modelo para que tu aplicación ejecute una función | 2.1, 2.4 |
| wire | Los mensajes tal y como viajan entre cliente y servidor | 3.5 |