> For the complete documentation index, see [llms.txt](https://docs.kinesis.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kinesis.network/mcp/tools/organizations.md).

# Organizations

Discover organizations, manage their settings and audit log, and answer invitations to join.

Discover organizations, manage their settings and audit log, and answer invitations to join.

These are action names. In default compact mode, call the indicated group tool with `{"action":"<action-name>","params":{...}}`; the arguments below go inside `params`. In `?mode=all`, call the action name directly with those arguments. `browse_github` and `read_docs` are direct tools in both modes. Expand each schema for nested fields, enum values and validation constraints. Successful results are JSON in both text content and `structuredContent`; failures use `isError` and `structuredContent.error`.

These actions use `account` and `account_write` in compact mode. `audit:read` is a separate permission: `org:write` does not imply it. Credentials limited to organizations or projects cannot create an organization or answer a received invitation.

The [OpenAI profile](/mcp/openai-profile.md) calls individual actions, omits `get_byod_token`, and restricts credential inputs and environment outputs. The input schemas below describe the standard catalog; profile-specific schemas are included where they differ.

## `list_orgs`

The organizations the caller can act in, by name, with their role in each. Calls in an organization take its slug as org when there is more than one

**Group:** `account` · **Behavior:** Read

**Compact tool:** `account` · **Action:** `list_orgs`

**MCP annotations:** `readOnlyHint: true` · `destructiveHint: false` · `idempotentHint: true` · `openWorldHint: false`

### Permissions and REST equivalents

| Operation   | REST        | Required scopes                                                             |
| ----------- | ----------- | --------------------------------------------------------------------------- |
| `orgs.list` | `GET /orgs` | Authenticated connection; organization and resource permissions still apply |

### Arguments

No arguments. Send an empty object.

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
```

</details>

### Result

* `orgs` (`array<object>`): See the complete response schema below.

<details>

<summary>Response schema: orgs.list</summary>

```json
{
  "type": "object",
  "properties": {
    "orgs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "slug": {
            "type": "string",
            "description": "What calls in an organization take as org"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "admin",
              "developer",
              "viewer"
            ],
            "description": "The caller's role there, which bounds what they can do in it"
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "role"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "orgs"
  ],
  "additionalProperties": false
}
```

</details>

## `get_org`

An organization's settings, whether it is frozen, and the caller's role in it

**Group:** `account` · **Behavior:** Read

**Compact tool:** `account` · **Action:** `get_org`

**MCP annotations:** `readOnlyHint: true` · `destructiveHint: false` · `idempotentHint: true` · `openWorldHint: false`

### Permissions and REST equivalents

| Operation  | REST       | Required scopes                                                             |
| ---------- | ---------- | --------------------------------------------------------------------------- |
| `orgs.get` | `GET /org` | Authenticated connection; organization and resource permissions still apply |

### Arguments

| Argument | Type     | Required | Description                                                                                      |
| -------- | -------- | -------- | ------------------------------------------------------------------------------------------------ |
| `org`    | `string` | No       | Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "org": {
      "description": "Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one",
      "type": "string",
      "minLength": 3,
      "maxLength": 39
    }
  },
  "additionalProperties": false
}
```

</details>

### Result

* `id` (`string`): See the complete response schema below.
* `slug` (`string`): What calls in an organization take as org
* `name` (`string`): See the complete response schema below.
* `role` (`"admin" / "developer" / "viewer"`): The caller's role there, which bounds what they can do in it
* `isOwner` (`boolean`): The caller owns it (members.list names the owner)
* `settings` (`object`): See the complete response schema below.
* `frozen` (`boolean`): Frozen over a payment problem: it can't start apps, add servers or pay
* `createdAt` (`string`): ISO 8601 timestamp (UTC)

<details>

<summary>Response schema: orgs.get</summary>

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "slug": {
      "type": "string",
      "description": "What calls in an organization take as org"
    },
    "name": {
      "type": "string"
    },
    "role": {
      "type": "string",
      "enum": [
        "admin",
        "developer",
        "viewer"
      ],
      "description": "The caller's role there, which bounds what they can do in it"
    },
    "isOwner": {
      "type": "boolean",
      "description": "The caller owns it (members.list names the owner)"
    },
    "settings": {
      "type": "object",
      "properties": {
        "serverlessEnabled": {
          "type": "boolean",
          "description": "Developers may run apps on Kinesis serverless capacity, billed to the organization; admins always can"
        },
        "membersCanInvite": {
          "type": "boolean",
          "description": "Developers may invite people, as developers or viewers; admins always can"
        }
      },
      "required": [
        "serverlessEnabled",
        "membersCanInvite"
      ],
      "additionalProperties": false
    },
    "frozen": {
      "type": "boolean",
      "description": "Frozen over a payment problem: it can't start apps, add servers or pay"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "ISO 8601 timestamp (UTC)"
    }
  },
  "required": [
    "id",
    "slug",
    "name",
    "role",
    "isOwner",
    "settings",
    "frozen",
    "createdAt"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `400 org_required`.

## `create_org`

Create an organization; the caller becomes its owner and admin. A person owns up to 5. A key or connection limited to some organizations or projects can't, since it would not reach the new one.

**Group:** `account` · **Behavior:** Write

**Compact tool:** `account_write` · **Action:** `create_org`

**MCP annotations:** `readOnlyHint: false` · `destructiveHint: false` · `idempotentHint: false` · `openWorldHint: false`

### Permissions and REST equivalents

| Operation     | REST         | Required scopes |
| ------------- | ------------ | --------------- |
| `orgs.create` | `POST /orgs` | `org:write`     |

### Arguments

| Argument         | Type     | Required | Description                                                                                                                                                           |
| ---------------- | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`           | `string` | Yes      | The organization's name                                                                                                                                               |
| `slug`           | `string` | No       | Its name in URLs and as org; lowercase letters, digits and dashes. Made from the name when omitted                                                                    |
| `idempotencyKey` | `string` | No       | Unique string without whitespace; send the same one with the same arguments when retrying after a timeout, and the original result comes back instead of acting twice |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "The organization's name"
    },
    "slug": {
      "type": "string",
      "minLength": 3,
      "maxLength": 39,
      "description": "Its name in URLs and as org; lowercase letters, digits and dashes. Made from the name when omitted"
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "^\\S+$",
      "description": "Unique string without whitespace; send the same one with the same arguments when retrying after a timeout, and the original result comes back instead of acting twice"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `id` (`string`): See the complete response schema below.
* `slug` (`string`): What calls in an organization take as org
* `name` (`string`): See the complete response schema below.
* `role` (`"admin" / "developer" / "viewer"`): The caller's role there, which bounds what they can do in it
* `isOwner` (`boolean`): The caller owns it (members.list names the owner)
* `settings` (`object`): See the complete response schema below.
* `frozen` (`boolean`): Frozen over a payment problem: it can't start apps, add servers or pay
* `createdAt` (`string`): ISO 8601 timestamp (UTC)

<details>

<summary>Response schema: orgs.create</summary>

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "slug": {
      "type": "string",
      "description": "What calls in an organization take as org"
    },
    "name": {
      "type": "string"
    },
    "role": {
      "type": "string",
      "enum": [
        "admin",
        "developer",
        "viewer"
      ],
      "description": "The caller's role there, which bounds what they can do in it"
    },
    "isOwner": {
      "type": "boolean",
      "description": "The caller owns it (members.list names the owner)"
    },
    "settings": {
      "type": "object",
      "properties": {
        "serverlessEnabled": {
          "type": "boolean",
          "description": "Developers may run apps on Kinesis serverless capacity, billed to the organization; admins always can"
        },
        "membersCanInvite": {
          "type": "boolean",
          "description": "Developers may invite people, as developers or viewers; admins always can"
        }
      },
      "required": [
        "serverlessEnabled",
        "membersCanInvite"
      ],
      "additionalProperties": false
    },
    "frozen": {
      "type": "boolean",
      "description": "Frozen over a payment problem: it can't start apps, add servers or pay"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "ISO 8601 timestamp (UTC)"
    }
  },
  "required": [
    "id",
    "slug",
    "name",
    "role",
    "isOwner",
    "settings",
    "frozen",
    "createdAt"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `400 invalid_slug`, `409 slug_taken`, `409 org_limit_reached`, `403 key_project_restricted`.

## `update_org`

Rename an organization or change its settings (admins). Its slug never changes

**Group:** `account` · **Behavior:** Write

**Compact tool:** `account_write` · **Action:** `update_org`

**MCP annotations:** `readOnlyHint: false` · `destructiveHint: true` · `idempotentHint: true` · `openWorldHint: false`

### Permissions and REST equivalents

| Operation     | REST         | Required scopes |
| ------------- | ------------ | --------------- |
| `orgs.update` | `PATCH /org` | `org:write`     |

### Arguments

| Argument            | Type      | Required | Description                                                                                           |
| ------------------- | --------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `name`              | `string`  | No       | The organization's name                                                                               |
| `serverlessEnabled` | `boolean` | No       | Developers may run apps on Kinesis serverless capacity, billed to the organization; admins always can |
| `membersCanInvite`  | `boolean` | No       | Developers may invite people, as developers or viewers; admins always can                             |
| `org`               | `string`  | No       | Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one      |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "The organization's name"
    },
    "serverlessEnabled": {
      "type": "boolean",
      "description": "Developers may run apps on Kinesis serverless capacity, billed to the organization; admins always can"
    },
    "membersCanInvite": {
      "type": "boolean",
      "description": "Developers may invite people, as developers or viewers; admins always can"
    },
    "org": {
      "description": "Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one",
      "type": "string",
      "minLength": 3,
      "maxLength": 39
    }
  },
  "additionalProperties": false
}
```

</details>

### Result

* `id` (`string`): See the complete response schema below.
* `slug` (`string`): What calls in an organization take as org
* `name` (`string`): See the complete response schema below.
* `role` (`"admin" / "developer" / "viewer"`): The caller's role there, which bounds what they can do in it
* `isOwner` (`boolean`): The caller owns it (members.list names the owner)
* `settings` (`object`): See the complete response schema below.
* `frozen` (`boolean`): Frozen over a payment problem: it can't start apps, add servers or pay
* `createdAt` (`string`): ISO 8601 timestamp (UTC)

<details>

<summary>Response schema: orgs.update</summary>

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "slug": {
      "type": "string",
      "description": "What calls in an organization take as org"
    },
    "name": {
      "type": "string"
    },
    "role": {
      "type": "string",
      "enum": [
        "admin",
        "developer",
        "viewer"
      ],
      "description": "The caller's role there, which bounds what they can do in it"
    },
    "isOwner": {
      "type": "boolean",
      "description": "The caller owns it (members.list names the owner)"
    },
    "settings": {
      "type": "object",
      "properties": {
        "serverlessEnabled": {
          "type": "boolean",
          "description": "Developers may run apps on Kinesis serverless capacity, billed to the organization; admins always can"
        },
        "membersCanInvite": {
          "type": "boolean",
          "description": "Developers may invite people, as developers or viewers; admins always can"
        }
      },
      "required": [
        "serverlessEnabled",
        "membersCanInvite"
      ],
      "additionalProperties": false
    },
    "frozen": {
      "type": "boolean",
      "description": "Frozen over a payment problem: it can't start apps, add servers or pay"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "ISO 8601 timestamp (UTC)"
    }
  },
  "required": [
    "id",
    "slug",
    "name",
    "role",
    "isOwner",
    "settings",
    "frozen",
    "createdAt"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `400 org_required`, `403 key_project_restricted`.

## `list_audit_log`

The organization's audit log, latest recorded first (admins). Who did what to its projects, apps, grids, servers, members and settings, kept for a year

**Group:** `account` · **Behavior:** Read

**Compact tool:** `account` · **Action:** `list_audit_log`

**MCP annotations:** `readOnlyHint: true` · `destructiveHint: false` · `idempotentHint: true` · `openWorldHint: false`

### Permissions and REST equivalents

| Operation         | REST             | Required scopes |
| ----------------- | ---------------- | --------------- |
| `orgs.audit.list` | `GET /org/audit` | `audit:read`    |

### Arguments

| Argument | Type      | Required | Description                                                                                      |
| -------- | --------- | -------- | ------------------------------------------------------------------------------------------------ |
| `limit`  | `integer` | No       | Items per page, 1 to 200 (default 50)                                                            |
| `cursor` | `string`  | No       | nextCursor from the previous page; omit for the first page                                       |
| `org`    | `string`  | No       | Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Items per page, 1 to 200 (default 50)"
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "description": "nextCursor from the previous page; omit for the first page"
    },
    "org": {
      "description": "Slug of the organization to act in (see orgs.list); needed when the caller reaches more than one",
      "type": "string",
      "minLength": 3,
      "maxLength": 39
    }
  },
  "additionalProperties": false
}
```

</details>

### Result

* `entries` (`array<object>`): See the complete response schema below.
* `nextCursor` (`string or null`): Pass as cursor to fetch the next page; null on the last page

<details>

<summary>Response schema: orgs.audit.list</summary>

```json
{
  "type": "object",
  "properties": {
    "entries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "at": {
            "type": "string",
            "format": "date-time",
            "description": "When it happened"
          },
          "actor": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "userId": {
                    "type": "string",
                    "description": "User id, as members.list and the sharing calls use it"
                  },
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "email": {
                    "type": "string"
                  }
                },
                "required": [
                  "userId",
                  "name",
                  "email"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Who did it; null for the platform, or an account that is gone"
          },
          "viaSupport": {
            "type": "boolean",
            "description": "Kinesis support did it while signed in as the actor"
          },
          "role": {
            "description": "The actor's role at the time",
            "type": [
              "string",
              "null"
            ]
          },
          "resourceType": {
            "type": "string",
            "description": "project, app, pool (a grid) or org (its members, settings and servers)"
          },
          "resourceId": {
            "description": "Project or app id, grid id, or the organization's id",
            "type": [
              "string",
              "null"
            ]
          },
          "resourceName": {
            "description": "The project's or app's name, while it exists",
            "type": [
              "string",
              "null"
            ]
          },
          "action": {
            "type": "string",
            "description": "What was done, e.g. appCreate, appStop, memberInvite, serverProvision"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "success",
              "error"
            ]
          },
          "errorCode": {
            "description": "Why it failed, as a code; the stored message can name internals",
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "anyOf": [
              {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              },
              {
                "type": "null"
              }
            ],
            "description": "What the action concerned: an app's name, a member's email and role, server addresses, ..."
          },
          "changes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string",
                  "description": "The field, e.g. name or envVars.API_KEY"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "added",
                    "removed",
                    "changed"
                  ]
                },
                "before": {},
                "after": {},
                "redacted": {
                  "description": "A secret: its values are not kept",
                  "type": "boolean"
                }
              },
              "required": [
                "path",
                "kind"
              ],
              "additionalProperties": false
            },
            "description": "Field-level changes, for actions that edit fields"
          },
          "message": {
            "description": "For something the platform did: what it reported",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "at",
          "actor",
          "viaSupport",
          "role",
          "resourceType",
          "resourceId",
          "resourceName",
          "action",
          "outcome",
          "errorCode",
          "details",
          "changes",
          "message"
        ],
        "additionalProperties": false
      }
    },
    "nextCursor": {
      "description": "Pass as cursor to fetch the next page; null on the last page",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "entries",
    "nextCursor"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `400 org_required`, `403 key_project_restricted`.

## `list_org_invitations`

Open invitations to join an organization, addressed to the caller's email

**Group:** `account` · **Behavior:** Read

**Compact tool:** `account` · **Action:** `list_org_invitations`

**MCP annotations:** `readOnlyHint: true` · `destructiveHint: false` · `idempotentHint: true` · `openWorldHint: false`

### Permissions and REST equivalents

| Operation                   | REST                    | Required scopes |
| --------------------------- | ----------------------- | --------------- |
| `orgs.invitations.received` | `GET /orgs/invitations` | `account:read`  |

### Arguments

No arguments. Send an empty object.

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
```

</details>

### Result

* `invitations` (`array<object>`): See the complete response schema below.

<details>

<summary>Response schema: orgs.invitations.received</summary>

```json
{
  "type": "object",
  "properties": {
    "invitations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Invitation id"
          },
          "org": {
            "type": "object",
            "properties": {
              "slug": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "slug",
              "name"
            ],
            "additionalProperties": false
          },
          "role": {
            "type": "string",
            "enum": [
              "admin",
              "developer",
              "viewer"
            ],
            "description": "The role the caller would join with"
          },
          "invitedBy": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "userId": {
                    "type": "string",
                    "description": "User id, as members.list and the sharing calls use it"
                  },
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "email": {
                    "type": "string"
                  }
                },
                "required": [
                  "userId",
                  "name",
                  "email"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp (UTC)"
          }
        },
        "required": [
          "id",
          "org",
          "role",
          "invitedBy",
          "expiresAt"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "invitations"
  ],
  "additionalProperties": false
}
```

</details>

## `answer_org_invitation`

Answer an invitation to an organization. action=accept joins it with the invited role; action=decline closes the invitation.

**Group:** `account` · **Behavior:** Write

**Compact tool:** `account_write` · **Action:** `answer_org_invitation`

**MCP annotations:** `readOnlyHint: false` · `destructiveHint: true` · `idempotentHint: false` · `openWorldHint: false`

### Permissions and REST equivalents

| Operation                  | REST                                            | Required scopes |
| -------------------------- | ----------------------------------------------- | --------------- |
| `orgs.invitations.accept`  | `POST /orgs/invitations/{invitationId}/accept`  | `account:write` |
| `orgs.invitations.decline` | `POST /orgs/invitations/{invitationId}/decline` | `account:write` |

### Arguments

| Argument       | Type                   | Required | Description                                   |
| -------------- | ---------------------- | -------- | --------------------------------------------- |
| `action`       | `"accept" / "decline"` | Yes      | Join, or turn it down                         |
| `invitationId` | `string`               | Yes      | Invitation id, from orgs.invitations.received |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "accept",
        "decline"
      ],
      "description": "Join, or turn it down"
    },
    "invitationId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Invitation id, from orgs.invitations.received"
    }
  },
  "required": [
    "action",
    "invitationId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

**`orgs.invitations.accept`**

* `org` (`object`): See the complete response schema below.
* `joined` (`boolean`): False when the caller was a member already and keeps their role

<details>

<summary>Response schema: orgs.invitations.accept</summary>

```json
{
  "type": "object",
  "properties": {
    "org": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "slug": {
          "type": "string",
          "description": "What calls in an organization take as org"
        },
        "name": {
          "type": "string"
        },
        "role": {
          "type": "string",
          "enum": [
            "admin",
            "developer",
            "viewer"
          ],
          "description": "The caller's role there, which bounds what they can do in it"
        }
      },
      "required": [
        "id",
        "slug",
        "name",
        "role"
      ],
      "additionalProperties": false
    },
    "joined": {
      "type": "boolean",
      "description": "False when the caller was a member already and keeps their role"
    }
  },
  "required": [
    "org",
    "joined"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `409 invitation_closed`, `403 key_project_restricted`. **`orgs.invitations.decline`**

* `declined` (`true`): See the complete response schema below.

<details>

<summary>Response schema: orgs.invitations.decline</summary>

```json
{
  "type": "object",
  "properties": {
    "declined": {
      "type": "boolean",
      "const": true
    }
  },
  "required": [
    "declined"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `409 invitation_closed`, `403 key_project_restricted`.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.kinesis.network/mcp/tools/organizations.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
