> ## 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 projects

> List or fetch projects.

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

List or fetch projects. Pass `id` to fetch one project. Otherwise returns a page of projects you can access (those you created, open projects, and ones shared with you); narrow with `q` and page with `cursor`/`limit`. Always returns a `projects` array (empty when nothing matches) and a `next_cursor` (null on the last page).

## Input parameters

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

<ParamField body="q" type="string">
  Filter the accessible projects by a case-insensitive substring of the project 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="projects" type="object[]">
  <Expandable title="properties">
    <ResponseField name="id" type="string (uuid)" />

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

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

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

    <ResponseField name="is_access_controlled" type="boolean" />

    <ResponseField name="my_access_level" type="'read' | 'write' | 'admin' | null" />

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

    <ResponseField name="updated_at" type="string" />
  </Expandable>
</ResponseField>

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