---
title: "ai.advisor@1 · OpenVibe.Services"
canonical: "https://openvibe.services/docs/contracts/ai.advisor"
updated: null
---

# ai.advisor@1 · OpenVibe.Services

HTML: [ai.advisor@1 · OpenVibe.Services](https://openvibe.services/docs/contracts/ai.advisor)

# AiAdvisor `ai.advisor@1`

Generated at 2026-11-13 06:25:48 UTC from [`openvibe-contracts v0.419.0`](https://github.com/OpenVibers/OpenVibe.Contracts/tree/v0.419.0) and [`openvibe-sdk v0.161.0`](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.161.0).

- Version: 1.0.0
- Owner: ai
- Visibility: public
- Status: active
- Compatibility: backward
- Schema: [`https://openvibe.network/contracts/ai/advisor.v1.json`](/docs/contracts/ai.advisor.json)

How a run may ask a stronger model for advice. Off unless the caller asks; at most 3 uses and at most 100 words of advice come back, and each use is on the run's receipt with its cost. The executor stays in charge: advice is guidance in the run's transcript, never an answer or a tool the advisor runs.

## Fields

| Field | Type | Required | Description | Constraints |
| --- | --- | --- | --- | --- |
| `model` | string |  | The stronger model to consult, as provider/model from GET /api/v1/routes. Omitted: the owner's reviewer role default, then the strongest offer the run's route can serve. | - `pattern ^[A-Za-z0-9][A-Za-z0-9._:-]*/[A-Za-z0-9][A-Za-z0-9._:/@+-]{0,199}$` |
| `effort` | [ai.effort](/docs/contracts/ai.effort) |  | The advice call's effort. auto is refused: it resolves to a concrete level before the call (high when omitted). |  |
| `max_uses` | integer | yes | How many times this run may ask for advice. 1 to 3; the default is 3. | - `minimum 1`<br>- `maximum 3`<br>- `default 3` |
| `max_words` | integer | yes | The longest advice the advisor may return. 10 to 100 words; the default is 100 and longer advice is cut to it. | - `minimum 10`<br>- `maximum 100`<br>- `default 100` |

## Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

 Valid: example

~~~~
{
  "model": "deepseek/deepseek-v4-pro",
  "effort": "high",
  "max_uses": 3,
  "max_words": 100
}
~~~~

Rejected: too-many

~~~~
{
  "model": "deepseek/deepseek-v4-pro",
  "effort": "high",
  "max_uses": 4,
  "max_words": 100
}
~~~~

## Validate

~~~~
const contracts = require('openvibe-contracts');
contracts.validate('ai.advisor@1', value);   // { valid, errors: [{ path, message }] }
~~~~
