Manage tests
tuqui_evalsThe tests of an agent or a project: cases that run through the real agent and say, case by case, whether it still answers as expected. Cases are written as YAML (see 'yaml'). Name what is tested with 'agent_id' or 'project_id' (exactly one). action='list' returns its cases; 'get' one by 'case_id', with its YAML; 'export' the whole set as one YAML text; 'save' loads 'yaml' into the set (the name identifies a case: a known name replaces it, keeping its runs; up to 50 per agent or project and 500000 characters of text) or, with 'case_id', rewrites that case from 'yaml'; 'delete' removes 'case_id'. 'run' starts a run of the active cases in the background, or of only 'case_id' (writes are held back and recorded, never executed); 'runs' lists the latest runs and the conditions each ran under; 'report' reads one run case by case ('run_id', or the latest), with which checks failed and how it did in the previous run under the same conditions, and what each case answered only for whoever launched the run; 'cancel' stops 'run_id'; 'history' lists every run of 'case_id'. Only someone who can edit the agent or the project manages its tests, and the agent never sees them.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"action": "<action>"
},
"name": "tuqui_evals"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| yaml | No | The case(s) as YAML, one per document, several separated by '---'. A case: 'name'; 'input' (the message) or 'trigger' (a record that fires it, as the webhook does: "res.partner #43" quoted, since unquoted YAML reads #43 as a comment, or {model, id}); 'expect' with any of: contains / not_contains (texts the reply must or must not contain; a value between slashes, /like this/, is a regex), equals, tools / no_tools (tools it must or must not call; an entry may be {tool, args} to require those arguments), writes (a list of {tool, args}: writes it must try, with those arguments as a subset; an argument may be '/regex/' or {$ne: x} instead of a fixed value; writes are never executed in a test, they are recorded), judge (a yes/no question a judgment model answers about the reply, or {criterion, threshold} to pass from another probability than 0.7; prefer the exact checks, the judge is for free text); optional 'active: false'. Comments are kept. Example: name: Teléfono de Acme input: ¿Cuál es el teléfono de Acme? expect: contains: ['996-3829'] tools: [odoo_search_read] | |
| action | Yes | REQUIRED. What to do with the tests. | |
| run_id | No | report / cancel: the run. report without it reads the latest. | |
| case_id | No | get / delete / history; save to rewrite one case; run to run only that case. | |
| agent_id | No | The agent whose tests these are. | |
| project_id | No | The project whose tests these are. |