GitHub - yujonglee/openrouter-toolkit

GitHub

1 min read Original article ↗

Compile-time checked OpenRouter model ids.

model_supports! validates a model id and its required capabilities against a vendored OpenRouter index, then expands to the model id string.

use openrouter_toolkit::model_supports;

const MODEL: &str = model_supports!(
    "openai/gpt-5.4",
    param::tools,
    input::image,
    output::text,
);

Dynamic variants work too:

const MODEL: &str = model_supports!("moonshotai/kimi-k2-0905:exacto", param::tools);

Capabilities

  • param::* — request parameters (e.g. param::tools)
  • input::* — input modalities (e.g. input::image)
  • output::* — output modalities (e.g. output::text)

Errors at compile time

Unknown capability:

const MODEL: &str = model_supports!("qwen/qwen3.7-max", param::toolz);
error: unknown OpenRouter capability `param::toolz`; did you mean `param::tools`?

Capability not supported by the model:

const MODEL: &str = model_supports!("qwen/qwen3.7-max", input::image);
error: OpenRouter model `qwen/qwen3.7-max` does not support required capability(s): input::image