> ## Documentation Index
> Fetch the complete documentation index at: https://veryfront.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get inference policy

> Read which models a project allows and denies, its default model, and what it inherits from its account; returns the served defaults when the project stores no policy.

`veryfront__get_inference_policy`

Requires project.settings.manage.

## Access

No external-service connection is required. Use a Veryfront credential with access to the requested resources.

**Call type:** Read-only.

## Arguments

| Field | Type | Required | Description and constraints |
| - | - | - | - |
| `project_reference` | `string` | No | Project ID or slug Minimum length: `1`. |

## Example request

Send this JSON-RPC request through an initialized MCP client. Replace sample identifiers and values before calling the tool. See [MCP client setup](https://veryfront.com/docs/cloud/getting-started/connect-mcp.md).

```json title="request.json" theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "veryfront__get_inference_policy",
    "arguments": {}
  }
}
```

## Result

The published output shape is summarized below. Inspect both the MCP response content and `isError` when handling a call.

| Field | Type | Required | Description and constraints |
| - | - | - | - |
| `project_id` | `string` | Yes | Project identifier associated with this result. Format: `uuid`. |
| `configured` | `boolean` | Yes | Whether the project states a policy. False returns the defaults the project is served under: EU-only, with an `eu-resident` minimum tier, while the EU default is on; every allowed model once it has ended. A row that constrains nothing is routed exactly like no row; routing changes begin at the first non-null constraint. |
| `enforced` | `boolean` | Yes | Whether the gateway can apply this stored policy. True for every readable policy: each stated constraint is enforced, and so is the default "eu-resident" tier floor while the EU default is on. False only when a stored value (a tier or precision) is one this build cannot read, because the gateway then refuses every request for the project instead of applying it. |
| `created_at` | `string or null` | Yes | Records policy creation in ISO 8601 format, or null when no policy row exists. |
| `updated_at` | `string or null` | Yes | Records the last policy update in ISO 8601 format, or null when no policy row exists. |
| `updated_by` | `string or null` | Yes | Records the user ID responsible for the last policy update, or null when no actor is recorded. |
| `models` | `object` | Yes | Models the project itself allows and denies. They only narrow its account. |
| `default_model` | `string or null` | Yes | The project's own default model. Null uses the account default, then the built-in default. |
| `account` | `object or null` | Yes | The policy the project inherits from its account: its models and `default_model`. Null for a project without an account. |
| `effective` | `object` | Yes | What applies to the project: its own and its account's rules composed (allowed lists intersect, denied lists combine), and the default model a call naming none gets. |

## Full schemas

```json title="input-schema.json" theme={null}
{
  "type": "object",
  "properties": {
    "project_reference": {
      "type": "string",
      "minLength": 1,
      "description": "Project ID or slug"
    }
  },
  "additionalProperties": false,
  "description": "Requires a signed-in project administrator. API keys are rejected regardless of their scopes, including project-scoped keys.",
  "$schema": "http://json-schema.org/draft-07/schema#"
}
```

```json title="output-schema.json" theme={null}
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "format": "uuid",
      "description": "Project identifier associated with this result."
    },
    "configured": {
      "type": "boolean",
      "description": "Whether the project states a policy. False returns the defaults the project is served under: EU-only, with an `eu-resident` minimum tier, while the EU default is on; every allowed model once it has ended. A row that constrains nothing is routed exactly like no row; routing changes begin at the first non-null constraint."
    },
    "enforced": {
      "type": "boolean",
      "description": "Whether the gateway can apply this stored policy. True for every readable policy: each stated constraint is enforced, and so is the default \"eu-resident\" tier floor while the EU default is on. False only when a stored value (a tier or precision) is one this build cannot read, because the gateway then refuses every request for the project instead of applying it."
    },
    "created_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "Records policy creation in ISO 8601 format, or null when no policy row exists."
    },
    "updated_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "Records the last policy update in ISO 8601 format, or null when no policy row exists."
    },
    "updated_by": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid"
        },
        {
          "type": "null",
          "description": "The updated by returned by the tool."
        }
      ],
      "description": "Records the user ID responsible for the last policy update, or null when no actor is recorded."
    },
    "models": {
      "type": "object",
      "properties": {
        "allowed": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "List of allowed associated with this tool result."
            },
            {
              "type": "null",
              "description": "The allowed returned by the tool."
            }
          ],
          "description": "Canonical model IDs that may be used. Null means no restriction; an empty list allows nothing."
        },
        "denied": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Canonical model IDs that may not be used. A denial overrides an allowance; an empty list denies nothing."
        }
      },
      "required": [
        "allowed",
        "denied"
      ],
      "additionalProperties": false,
      "description": "Models the project itself allows and denies. They only narrow its account."
    },
    "default_model": {
      "type": [
        "string",
        "null"
      ],
      "description": "The project's own default model. Null uses the account default, then the built-in default."
    },
    "account": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "models": {
              "type": "object",
              "properties": {
                "allowed": {
                  "$ref": "#/properties/models/properties/allowed",
                  "description": "The allowed returned by the tool."
                },
                "denied": {
                  "$ref": "#/properties/models/properties/denied",
                  "description": "The denied returned by the tool."
                }
              },
              "required": [
                "allowed",
                "denied"
              ],
              "additionalProperties": false,
              "description": "Structured models details associated with this tool result."
            },
            "default_model": {
              "type": [
                "string",
                "null"
              ],
              "description": "Default model ID. Null uses the built-in default, mistral/mistral-small-2503. A project default wins over the account default."
            }
          },
          "required": [
            "models",
            "default_model"
          ],
          "additionalProperties": false,
          "description": "Structured account details associated with this tool result."
        },
        {
          "type": "null",
          "description": "The account returned by the tool."
        }
      ],
      "description": "The policy the project inherits from its account: its models and default_model. Null for a project without an account."
    },
    "effective": {
      "type": "object",
      "properties": {
        "models": {
          "$ref": "#/properties/account/anyOf/0/properties/models",
          "description": "The models returned by the tool."
        },
        "default_model": {
          "type": [
            "string",
            "null"
          ],
          "description": "The model a call naming none gets: the project default, then the account default, then the built-in default, the first one allowed and served under the project's whole policy. Null when none is."
        }
      },
      "required": [
        "models",
        "default_model"
      ],
      "additionalProperties": false,
      "description": "What applies to the project: its own and its account's rules composed (allowed lists intersect, denied lists combine), and the default model a call naming none gets."
    }
  },
  "required": [
    "project_id",
    "configured",
    "enforced",
    "created_at",
    "updated_at",
    "updated_by",
    "models",
    "default_model",
    "account",
    "effective"
  ],
  "additionalProperties": false,
  "description": "Structured result returned by the get_inference_policy tool.",
  "$schema": "http://json-schema.org/draft-07/schema#"
}
```

<details>
  <summary>Try this tool</summary>

  Replace sample arguments with values for your project or connected account. Calls run only when you select Run tool.

  MCP tool call

  Call `veryfront__get_inference_policy` against the Veryfront MCP endpoint.

  Bearer token or API key

  Arguments (JSON)

  Run tool

  Output JSON

  <pre />
</details>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.