cloudstudio* academy
← Construir con LLMs: API, herramientas y MCP

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