> For the complete documentation index, see [llms.txt](https://docs.interactive.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.interactive.ai/agents/reference/manifest.md).

# Manifest & content schemas

> **Context** — This page is the navigational map of the manifest as of **manifest schema 6.1.1**: every block, what it does, where it's explained. The manifest shape is schema-versioned — which schema version applies to your runtime is the compatibility matrix's row for your image tag, and shapes differ across versions. The **exact field-level reference** (types, defaults, patterns, validation rules) is the generated Schemas reference — published per schema version alongside these docs, with machine-readable JSON Schemas (Draft 2020-12) in the artifact bucket (see [Versioning & compatibility](/agents/operations/versioning.md#machine-readable-artifacts)).

## The full shape, annotated

```yaml
# ── Identity ────────────────────────────────────────────────────────────
name: DriveAway Production          # display name (UI, logs)
id: driveaway-prod                  # immutable URL-safe slug
version: "12"                       # your revision label (logs, traces)
endpoint: false                     # platform flag: provision a public URL?
secrets:                            # platform secret bundles to inject as env vars
  - secret_name: driveaway-agent-secrets

agent_config:
  # ── Process & engine knobs ───────────────────── concepts/architecture.md
  runtime:
    api_key: ${AGENT_API_KEY}       # shared bearer token (inbound + callbacks)
    log_level: INFO                 # TRACE|DEBUG|INFO|WARNING|ERROR|CRITICAL
    max_engine_iterations: 5        # per-turn tool/think chain cap
    policy_batch_size: 5            # policies per matcher call

  # ── Platform connection ──────────────────────── concepts/architecture.md
  interactive_platform:
    base_url: https://app.interactive.ai   # also derives router + traces URLs
    public_key: ${INTERACTIVEAI_PUBLIC_KEY}
    secret_key: ${INTERACTIVEAI_SECRET_KEY}

  # ── Models ───────────────────────────────────── concepts/models.md
  llms:
    default: anthropic/claude-haiku-4.5    # chat primary (required)
    api_key: ${ROUTER_API_KEY}             # router credential (required)
    fallback:                              # chat fallbacks, ordered
      - anthropic/claude-sonnet-4-6
    evaluation: google/gemini-3-flash-preview          # evaluation primary
    evaluation_fallback: google/gemini-3.1-pro-preview # evaluation backup

  # ── Behavioural context ──────────────────────── concepts/prompts.md
  context:
    system_prompt:                  # persona & ground rules (versioned ref)
      id: driveaway-system-prompt
      version: 7
    language: match_user            # or "French", or "French, Spanish"
    greeting: "Hi! I'm Mercedes from DriveAway — how can I help?"
    preamble:                       # mid-turn filler
      examples:
        - "Let me check."
        - "One moment."
      announce_tools: false         # true → status message after each tool batch
    routines:                       # ─────────── concepts/routines.md
      - id: car-search
        version: 4
      - id: book-a-car
        version: 9
    policies:                       # ─────────── concepts/policies.md
      - id: stay-on-topic
        version: 2
    glossaries:                     # ─────────── concepts/glossaries-and-macros.md
      - id: rental-terms
        version: 2
    macros:                         # ─────────── concepts/glossaries-and-macros.md
      - id: cancellation-wording    #   interpolated via ${macro-id} in chat_state
        version: 3
    reevaluation_tools:             # ─────────── concepts/tools.md
      - id: crm:authenticate_customer
    relationships:                  # ─────────── concepts/priorities.md
      priorities:
        - higher: policy:incident-handoff
          over_all_routines: true
      entailments:
        - when: policy:self-exclusion-request
          also_apply:
            - policy:rg-tone

  # ── Tool servers ─────────────────────────────── concepts/tools.md
  mcps:
    - id: cars
      hostname: http://cars-mcp.agents.svc.cluster.local
      port: 8765
      transport: streamable-http
      api_key: ${CARS_MCP_KEY}

  # ── Retrieval grounding (one of two types) ───── concepts/knowledge-base.md
  search:
    type: pgvector                  # or: type: external
    hostname: kb-postgres.internal.example.com
    port: 5432
    password: ${KB_PG_PASSWORD}
    collection: support_articles
    embedding_model: openai/text-embedding-3-small
    embedding_dimensions: 1536
    top_k: 5

  # ── Conversation storage ─────────────────────── concepts/memory-and-state.md
  database:
    hostname: agent-postgres.internal.example.com
    port: 5432
    user: postgres
    password: ${DB_PASSWORD}
    dbname: postgres
    sslmode: require

  # ── Traces ───────────────────────────────────── guides/observability.md
  traces:
    deployment_environment: production
    trace_id_field: customer_id     # names autonomous traces by input field
    backend:                        # omit for the platform default backend
      url: https://otel.your-provider.com/v1/traces
      api_key: ${OTEL_API_KEY}
      api_key_scheme: bearer

  # ── Third-party webhook fan-out ──────────────── concepts/autonomous-routines.md
  webhooks:
    - name: kyc-events
      secret_env: ${KYC_WEBHOOK_SECRET}
      header: X-Payload-Digest
      algorithm: sha256
      prefix: ""
      routines:
        - kyc-decision
```

Required blocks: `runtime`, `interactive_platform`, `llms`, `context` (within it, `system_prompt` and `language`). Everything else is optional with the defaults documented on each concept page and aggregated in [Limits & defaults](/agents/reference/limits-and-defaults.md).

## Content document schemas

The documents the manifest references are validated against their own schemas, summarised on their concept pages:

| Document        | Shape defined in                                                        | Schema name (JSON Schema artifact) |
| --------------- | ----------------------------------------------------------------------- | ---------------------------------- |
| Routine         | [Routines](/agents/concepts/routines.md)                                | `routines`                         |
| Policy          | [Policies](/agents/concepts/policies.md)                                | `policies`                         |
| Glossary        | [Glossaries & macros](/agents/concepts/glossaries-and-macros.md)        | `glossaries`                       |
| Macro           | [Glossaries & macros](/agents/concepts/glossaries-and-macros.md#macros) | `macros`                           |
| Variable set¹   | [Sessions, memory & state](/agents/concepts/memory-and-state.md)        | `variables`                        |
| Manifest itself | this page                                                               | `agent-manifest`, `agent-config`   |

¹ Variable sets are platform-catalog documents but are **not referenced from the manifest** — variable values are written per customer at runtime through the SDK.

The JSON Schemas include the cross-field rules prose can't keep honest — step-field mutual exclusions, "exactly one of `over`/`over_all_routines`", at-least-one-of `action`/`tools` — so validating in CI catches authoring errors before deploy.

## Universal validation rules

* Credential-bearing fields accept only `${VAR_NAME}` env-refs (uppercase letters, digits, underscores; not starting with a digit) — literals are rejected at validation time.
* String fields with a minimum length reject whitespace-only values.
* `id` (manifest): URL-safe — letters, digits, hyphens, underscores only.
* Hostname fields: MCP hostnames require a scheme; database/KB hostnames forbid one; none accept paths, ports, or query strings inline (ports are separate fields).
* Ports: 1–65535. Versions in refs: integers ≥ 1.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.interactive.ai/agents/reference/manifest.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
