Problem
Compatible model discovery rejects the documented output_modalities=text,image query. External clients cannot discover the union of authorized output capabilities in one request.
Expected behavior
Support one to nine distinct exact documented output modalities as a single comma-separated query value on GET /api/v1/models. Match any listed output against captured administrator metadata after model and final-provider IAM. Keep all as a standalone sentinel, preserve omitted-filter behavior, existing cross-filter conjunction, search/order/paging and safe relative continuations. Reject empty/duplicate/unknown/whitespace/case-variant items, mixed all and repeated query keys before catalog reads. Keep input_modalities and supported_parameters singleton until their list semantics are established.
Acceptance
Public and installed OpenRouter/OpenAI SDK regression tests cover union semantics, bounds, paging, fresh Deny, authentication, invalid syntax, required audit/catalog failures and privacy. Whole catalog validation and no inference/secret/limit/usage calls remain enforced. Record an English plan before coding and red/green evidence; run npm run check.
Refs #116; unresolved #7 and complete compatibility remain open. Assisted-by: Codex.
Problem
Compatible model discovery rejects the documented output_modalities=text,image query. External clients cannot discover the union of authorized output capabilities in one request.
Expected behavior
Support one to nine distinct exact documented output modalities as a single comma-separated query value on GET /api/v1/models. Match any listed output against captured administrator metadata after model and final-provider IAM. Keep all as a standalone sentinel, preserve omitted-filter behavior, existing cross-filter conjunction, search/order/paging and safe relative continuations. Reject empty/duplicate/unknown/whitespace/case-variant items, mixed all and repeated query keys before catalog reads. Keep input_modalities and supported_parameters singleton until their list semantics are established.
Acceptance
Public and installed OpenRouter/OpenAI SDK regression tests cover union semantics, bounds, paging, fresh Deny, authentication, invalid syntax, required audit/catalog failures and privacy. Whole catalog validation and no inference/secret/limit/usage calls remain enforced. Record an English plan before coding and red/green evidence; run npm run check.
Refs #116; unresolved #7 and complete compatibility remain open. Assisted-by: Codex.