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

# Get vaults

> List or fetch Contract Intelligence vaults.

<Note>
  The MCP server is in public beta. It is open to use and still being refined, so tools and behavior may change.
</Note>

<Info>
  **Tool** `get_vaults` · **Behavior** Read-only
</Info>

List or fetch Contract Intelligence vaults. A vault holds a set of contracts that GC AI has read, with the extracted fields the team tracks. Pass `id` to fetch one vault. Otherwise returns a page of the vaults you can access; narrow with `q` and page with `cursor`/`limit`. Always returns a `vaults` array (empty when nothing matches) and a `next_cursor` (null on the last page). Use a returned `id` as `vault_id` when adding a document with `upload_file` or `start_file_upload`, or to ground `ask_gcai` in that vault's documents. Archived vaults are not listed. `document_count` is the number of documents that have finished scanning and can lag a fresh upload; confirm an upload with `get_files({ id })`, not with this count.

## Input parameters

<ParamField body="id" type="string (uuid)">
  Fetch one vault by id. Provide either `id` or a list query (`q`/`cursor`), not both.
</ParamField>

<ParamField body="q" type="string">
  Filter the accessible vaults by a case-insensitive substring of the vault name. Omit to list everything accessible.
</ParamField>

<ParamField body="cursor" type="string">
  Opaque pagination cursor from a previous response's `next_cursor`. Omit for the first page; repeat any filters (e.g. `q`) alongside it.
</ParamField>

<ParamField body="limit" type="integer">
  Max items to return (default 25, max 100). Defaults to `25`.
</ParamField>

## Response

<ResponseField name="vaults" type="object[]">
  <Expandable title="properties">
    <ResponseField name="id" type="string (uuid)">
      Unique vault identifier
    </ResponseField>

    <ResponseField name="name" type="string">
      Vault name
    </ResponseField>

    <ResponseField name="description" type="string | null">
      Vault description, or null if unset
    </ResponseField>

    <ResponseField name="my_role" type="'owner' | 'editor' | 'viewer'">
      Caller's role in this vault: `owner` (manage members and settings), `editor` (add documents and edit extracted data), or `viewer` (read and annotate). A vault the caller reaches only through organization-wide visibility reports `viewer`. The role is not the whole story for writes: adding documents also needs the organization-level permission to manage vaults, so a caller can hold `editor` here and still receive `403` from `POST /vaults/{id}/documents`.
    </ResponseField>

    <ResponseField name="is_access_controlled" type="boolean">
      When true, only vault members can see the vault. When false, any member of the organization with organization-wide vault read can see it.
    </ResponseField>

    <ResponseField name="document_count" type="number">
      Documents that have finished scanning in this vault. Documents still being read are not counted yet.
    </ResponseField>

    <ResponseField name="setup_completed_at" type="string | null">
      ISO 8601 timestamp when guided setup finished, or null while the vault is still in setup. Documents added to a vault in setup are stored but not scanned until setup finishes.
    </ResponseField>

    <ResponseField name="created_at" type="string">
      ISO 8601 creation timestamp
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      ISO 8601 last-update timestamp
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="next_cursor" type="string | null" />
