Capability resolver
The Capability resolver screen lets you see how a reasoning effort level and the parameters of a call are translated into the native parameters of a model, or why they are rejected, without calling the model. Portal path: /llm/resolver. It is used by developers and AI platform engineers who prepare a call, and by support engineers who explain a refusal. The screen is built in portal/src/screens/llm-tools.tsx (Resolver, resolverCfg, ResolveResult).
What the screen shows
One panel Resolve parameters ("POST /v1/models/resolve with an effort level and call parameters.") in two parts.
The form, on two columns:
| Field | Content |
|---|---|
| Model | Registry id of the model (required). |
| Effort | none, low, medium, high or max (required). |
| Temperature | Number. |
| Top P | Number. |
| Max tokens | Number, checked against the model limit. |
| Response format | text, json_object or json_schema. |
| Tool choice | auto, none or required. |
| Stream | Yes or no. |
| Extra parameters | JSON object merged into the request body (default {}). |
The Result, after Run:
- a banner Accepted (green) or Rejected (red), with the reason when the API gives one;
- the warnings of the resolver, one per line;
- Native parameters: the JSON sent to the provider for this model;
- Raw response, folded, with the full answer.
Before the first run the result area says "Run the request to see the result here."
Actions
| Button or action | What it does | API call | Roles |
|---|---|---|---|
| Run | Sends the model, the effort and the parameters (the Extra parameters are merged at the top level) and shows the resolution. | POST /v1/models/resolve | LLM readers |
| Raw response | Unfolds the full JSON answer. | none | everyone |
Roles
POST /v1/models/resolverequires one of theREADroles ofservices/control-plane/src/eai/domains/llm/__init__.py, which are thellmReadersofportal/src/lib/kit.ts:tenant_admin,platform_admin,security_officer,finops,developer,auditor,viewer,agent,ai_platform_engineer,ai_governance_officer,support_engineer.- The form is not restricted by the portal: the server decides.
Typical tasks
Check that a model accepts a reasoning effort
- Choose the model. Type its registry id in Model, as shown in the Models registry. Expected result: the field is filled. If it fails: "Model
<model_id>not found." means the id is wrong. - Set the effort. Choose Effort
highand leave the other fields empty, so that you test the effort alone. Expected result: the form is valid. If it fails: Required under Effort. - Run. Click Run. Expected result: Accepted and the Native parameters the provider receives. If it fails: "Reasoning effort
<requested>is not supported by this model." (effort_not_supported); choose a level listed in the Reasoning modes of the model.
The same check from the command line (see docs/sdks/cli-reference.md):
enterprise-ai models --effort high resolve <model-id>
<model-id>: registry id of the model.
Validate the parameters of a structured output call
- Fill the call. Set Model, Effort, Max tokens and Response format
json_schema, and put the schema in Extra parameters, so that the resolver sees the same body as the real call. Expected result: valid JSON in Extra parameters. If it fails: Invalid JSON. - Run. Click Run. Expected result: Accepted, possibly with warnings. If it fails: "max_tokens is above the model limit of
<n>." or "Parameterresponse_formatis invalid." (schema missing); fix the value and run again.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
"Model <model_id> not found." (model_not_found) | Unknown registry id. | Copy the id from the Models registry. |
"Reasoning effort <requested> is not supported by this model." (effort_not_supported, 422) | The level is outside the reasoning modes of the model. | Choose a supported level, or none. |
"Parameter <parameter> is not supported by this model." (parameter_not_supported, 422) | The model does not take this parameter. | Remove it from the form or from Extra parameters. |
"Parameter <parameter> is out of the allowed range." (parameter_out_of_range, 422) | Value outside the bounds of the model, for example Temperature. | Use a value inside the range. |
"max_tokens is above the model limit of <n>." (max_tokens_exceeded, 422) | Max tokens above Max output tokens of the model. | Lower Max tokens. |
"Parameter <parameter> is invalid." (parameter_invalid, 422) | Wrong value, for example json_schema without schema. | Fix the value named in the message. |
"Input modality <modality> is not supported by this model." (modality_not_supported, 422) | Extra parameters carry an image, audio or video input the model does not take. | Pick a model with this modality. |
| Invalid JSON under Extra parameters | The field is not a JSON object. | Type a JSON object, {} when empty. |