# Show HN: Compile-time model-id validation with declared capability

> Source: <https://github.com/yujonglee/openrouter-toolkit>
> Published: 2026-05-26 14:20:07+00:00

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.

``` js
use openrouter_toolkit::model_supports;

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

Dynamic variants work too:

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

`param::*`

— request parameters (e.g.`param::tools`

)`input::*`

— input modalities (e.g.`input::image`

)`output::*`

— output modalities (e.g.`output::text`

)

Unknown capability:

``` js
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:

``` js
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
```


