What a model can read
Every model crucible offers reads text. Some also read pictures, PDFs, audio or video, and which ones do is not something crucible works out from a name. It is read from the same published table of model limits that holds each model's window, regenerated by a script and checked in, so the answer here is whatever that table said when this build was made.
| Provider | Model | Reads |
|---|---|---|
anthropic | claude-fable-5-1, claude-fable-5, claude-opus-5-5, claude-opus-5, claude-sonnet-5-5, claude-sonnet-5, claude-haiku-4-5 | text, pictures, PDFs |
deepseek | deepseek-flash | text, pictures |
deepseek | deepseek-v4-pro | text |
google | gemini-3.8-flash, gemini-3.7-flash, gemini-3.6-flash, gemini-3.1-pro-preview | text, pictures, PDFs, audio, video |
meta | muse-spark-1.3, muse-spark-1.3-contributor, muse-spark-1.2, muse-spark-1.2-contributor | text, pictures, PDFs, audio, video |
mimo | mimo-v2.6-pro, mimo-v2.6-flash | text, pictures, audio, video |
minimax | MiniMax-M3 | text, pictures, video |
minimax | MiniMax-M2.7 | text |
moonshot | k3, k3-256k, kimi-for-coding, kimi-for-coding-highspeed | text, pictures, video |
openai | gpt-6-astra, gpt-6.1-sol, gpt-6-sol, gpt-6-luna, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5 | text, pictures, PDFs |
qwen | qwen3.8-max | text, pictures, PDFs, video |
qwen | qwen3.8-flash, qwen3.7-plus, qwen3.6-plus | text, pictures, video |
xai | grok-4.7, grok-4.6 | text, pictures, PDFs |
zai | glm-5.3, glm-5.2 | text |
zai | glm-5.3-flash | text, pictures, PDFs, video |
What a model reads is not what crucible sends it: the seven providers new in this release are sent text alone, as the protocol's half below decides.
A model crucible has never heard of is not in that table and has no row here. crucible knows nothing about what it reads, which is a different answer from knowing that it reads nothing. That is the same distinction the window lookup makes, and for the same reason: a fact borrowed from a model one word away is wrong in a way nobody notices until a session has already gone wrong.
What crucible puts in a request
The table above is about the models. What a request actually carries is decided
by the protocol crucible speaks to that provider, and each has its own way of
spelling a picture: Anthropic Messages an image block, OpenAI Responses an
input_image part, Moonshot a data: URL inside an image_url, and Google
Interactions an image part with its mime_type beside the bytes. Google's
function results admit text and pictures; PDFs, audio and video that tools
return follow the whole batch of function results as labelled user-input
attachments, each naming the call it came from.
A model reading a kind that its provider's protocol has no shape for is a kind crucible does not send. Both halves have to agree, and the narrower of the two is the answer: a picture goes out only where the model reads pictures and the protocol has a way to write one.
Changing model in a session
A session's transcript outlives the model being asked. Switch with /model to a
model that reads less and the files already in the transcript stay behind: each
request goes out without them, and a row per file arrives with the answer saying
the model does not read it. Nothing is lost. Switch back and the next request
carries them again.
That is a different row from the one a request too full to carry everything draws. The full one offers the file again, because asking again is what makes room for it. This one does not, because neither the file nor its kind has changed and the only thing that would is the model.