> 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/sharing.md).

# Sharing and invitations

Manage access and invitations for projects, apps and grids.

Manage access and invitations for projects, apps and grids.

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`.

Add existing organization members with `add_grantees`; invite new members with `invite_member`. Resource-grant values remain `viewer` and `editor`: `editor` means Developer in the portal and is capped by the member’s organization role. Grids accept `viewer` for use only; developers can deploy and viewers only inspect. The older invitation actions below handle existing invitations only. They do not create new resource invitations.

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.

## `add_grantees`

Add members of the resource's organization to a project, app or grid. No invitation: access starts at once. Each role is at most theirs in the organization (a viewer is added as viewer; grids take viewer only), and someone already added gets the new role. People outside the organization can't be added

**Group:** `sharing` · **Behavior:** Write

**Compact tool:** `sharing_write` · **Action:** `add_grantees`

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

### Permissions and REST equivalents

| Operation              | REST                     | Required scopes      |
| ---------------------- | ------------------------ | -------------------- |
| `sharing.grantees.add` | `POST /sharing/grantees` | See conditions below |
| Conditional            | resourceType is project  | `projects:admin`     |
| Conditional            | resourceType is app      | `apps:admin`         |
| Conditional            | resourceType is grid     | `pools:admin`        |

### Arguments

| Argument       | Type                         | Required | Description                      |
| -------------- | ---------------------------- | -------- | -------------------------------- |
| `resourceType` | `"project" / "app" / "grid"` | Yes      | What is shared                   |
| `resourceId`   | `string`                     | Yes      | Project or app id, or grid id    |
| `people`       | `array<object>`              | Yes      | Members to add, each with a role |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "resourceType": {
      "type": "string",
      "enum": [
        "project",
        "app",
        "grid"
      ],
      "description": "What is shared"
    },
    "resourceId": {
      "type": "string",
      "minLength": 1,
      "description": "Project or app id, or grid id"
    },
    "people": {
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "pattern": "^[0-9a-fA-F]{24}$",
            "description": "A member's user id"
          },
          "role": {
            "type": "string",
            "enum": [
              "viewer",
              "editor"
            ],
            "description": "Resource grant values: viewer reads; editor means Developer. Grids take viewer for use only; organization developers may deploy and viewers only read"
          }
        },
        "required": [
          "userId",
          "role"
        ],
        "additionalProperties": {}
      },
      "description": "Members to add, each with a role"
    }
  },
  "required": [
    "resourceType",
    "resourceId",
    "people"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `resourceType` (`"project" / "app" / "grid"`): What is shared
* `resourceId` (`string`): See the complete response schema below.
* `resourceName` (`string`): See the complete response schema below.
* `callerRole` (`"viewer" / "editor" / "owner"`): Legacy permission values: owner means an organization admin; editor means the member who created the resource
* `grantees` (`array<object>`): See the complete response schema below.

<details>

<summary>Response schema: sharing.grantees.add</summary>

```json
{
  "type": "object",
  "properties": {
    "resourceType": {
      "type": "string",
      "enum": [
        "project",
        "app",
        "grid"
      ],
      "description": "What is shared"
    },
    "resourceId": {
      "type": "string"
    },
    "resourceName": {
      "type": "string"
    },
    "callerRole": {
      "type": "string",
      "enum": [
        "viewer",
        "editor",
        "owner"
      ],
      "description": "Legacy permission values: owner means an organization admin; editor means the member who created the resource"
    },
    "grantees": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "User id; what update and revoke take"
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "viewer",
              "editor"
            ],
            "description": "Resource grant values: viewer reads; editor means Developer. Grids take viewer for use only; organization developers may deploy and viewers only read"
          },
          "orgRole": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "admin",
                  "developer",
                  "viewer"
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Their role in the resource's organization; null for someone outside it"
          },
          "grantedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp (UTC)"
          }
        },
        "required": [
          "userId",
          "email",
          "name",
          "role",
          "orgRole",
          "grantedAt"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "resourceType",
    "resourceId",
    "resourceName",
    "callerRole",
    "grantees"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `400 not_member`.

## `list_grantees`

Who a project, app or grid is shared with, and as what

**Group:** `sharing` · **Behavior:** Read

**Compact tool:** `sharing` · **Action:** `list_grantees`

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

### Permissions and REST equivalents

| Operation               | REST                    | Required scopes      |
| ----------------------- | ----------------------- | -------------------- |
| `sharing.grantees.list` | `GET /sharing/grantees` | See conditions below |
| Conditional             | resourceType is project | `projects:admin`     |
| Conditional             | resourceType is app     | `apps:admin`         |
| Conditional             | resourceType is grid    | `pools:admin`        |

### Arguments

| Argument       | Type                         | Required | Description                   |
| -------------- | ---------------------------- | -------- | ----------------------------- |
| `resourceType` | `"project" / "app" / "grid"` | Yes      | What is shared                |
| `resourceId`   | `string`                     | Yes      | Project or app id, or grid id |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "resourceType": {
      "type": "string",
      "enum": [
        "project",
        "app",
        "grid"
      ],
      "description": "What is shared"
    },
    "resourceId": {
      "type": "string",
      "minLength": 1,
      "description": "Project or app id, or grid id"
    }
  },
  "required": [
    "resourceType",
    "resourceId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `resourceType` (`"project" / "app" / "grid"`): What is shared
* `resourceId` (`string`): See the complete response schema below.
* `resourceName` (`string`): See the complete response schema below.
* `callerRole` (`"viewer" / "editor" / "owner"`): Legacy permission values: owner means an organization admin; editor means the member who created the resource
* `grantees` (`array<object>`): See the complete response schema below.

<details>

<summary>Response schema: sharing.grantees.list</summary>

```json
{
  "type": "object",
  "properties": {
    "resourceType": {
      "type": "string",
      "enum": [
        "project",
        "app",
        "grid"
      ],
      "description": "What is shared"
    },
    "resourceId": {
      "type": "string"
    },
    "resourceName": {
      "type": "string"
    },
    "callerRole": {
      "type": "string",
      "enum": [
        "viewer",
        "editor",
        "owner"
      ],
      "description": "Legacy permission values: owner means an organization admin; editor means the member who created the resource"
    },
    "grantees": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "User id; what update and revoke take"
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "viewer",
              "editor"
            ],
            "description": "Resource grant values: viewer reads; editor means Developer. Grids take viewer for use only; organization developers may deploy and viewers only read"
          },
          "orgRole": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "admin",
                  "developer",
                  "viewer"
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Their role in the resource's organization; null for someone outside it"
          },
          "grantedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp (UTC)"
          }
        },
        "required": [
          "userId",
          "email",
          "name",
          "role",
          "orgRole",
          "grantedAt"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "resourceType",
    "resourceId",
    "resourceName",
    "callerRole",
    "grantees"
  ],
  "additionalProperties": false
}
```

</details>

## `set_grantee_role`

Change a grantee's role on a project or app (grids are shared as viewer only). On a grid, taking an old editor grant away also releases the machines and spot groups they added. Not on the caller's own grant.

**Group:** `sharing` · **Behavior:** Write

**Compact tool:** `sharing_write` · **Action:** `set_grantee_role`

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

### Permissions and REST equivalents

| Operation                 | REST                                      | Required scopes      |
| ------------------------- | ----------------------------------------- | -------------------- |
| `sharing.grantees.update` | `PATCH /sharing/grantees/{granteeUserId}` | See conditions below |
| Conditional               | resourceType is project                   | `projects:admin`     |
| Conditional               | resourceType is app                       | `apps:admin`         |
| Conditional               | resourceType is grid                      | `pools:admin`        |

### Arguments

| Argument        | Type                         | Required | Description                                                                                                                                           |
| --------------- | ---------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `resourceType`  | `"project" / "app" / "grid"` | Yes      | What is shared                                                                                                                                        |
| `resourceId`    | `string`                     | Yes      | Project or app id, or grid id                                                                                                                         |
| `role`          | `"viewer" / "editor"`        | Yes      | Resource grant values: viewer reads; editor means Developer. Grids take viewer for use only; organization developers may deploy and viewers only read |
| `granteeUserId` | `string`                     | Yes      | User id of the grantee, from the grantees list                                                                                                        |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "resourceType": {
      "type": "string",
      "enum": [
        "project",
        "app",
        "grid"
      ],
      "description": "What is shared"
    },
    "resourceId": {
      "type": "string",
      "minLength": 1,
      "description": "Project or app id, or grid id"
    },
    "role": {
      "type": "string",
      "enum": [
        "viewer",
        "editor"
      ],
      "description": "Resource grant values: viewer reads; editor means Developer. Grids take viewer for use only; organization developers may deploy and viewers only read"
    },
    "granteeUserId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "User id of the grantee, from the grantees list"
    }
  },
  "required": [
    "resourceType",
    "resourceId",
    "role",
    "granteeUserId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `resourceType` (`"project" / "app" / "grid"`): What is shared
* `resourceId` (`string`): See the complete response schema below.
* `resourceName` (`string`): See the complete response schema below.
* `callerRole` (`"viewer" / "editor" / "owner"`): Legacy permission values: owner means an organization admin; editor means the member who created the resource
* `grantees` (`array<object>`): See the complete response schema below.
* `warning` (`string or null`): Set when a grid could not release the grantee's machines or spot groups; the access change stands

<details>

<summary>Response schema: sharing.grantees.update</summary>

```json
{
  "type": "object",
  "properties": {
    "resourceType": {
      "type": "string",
      "enum": [
        "project",
        "app",
        "grid"
      ],
      "description": "What is shared"
    },
    "resourceId": {
      "type": "string"
    },
    "resourceName": {
      "type": "string"
    },
    "callerRole": {
      "type": "string",
      "enum": [
        "viewer",
        "editor",
        "owner"
      ],
      "description": "Legacy permission values: owner means an organization admin; editor means the member who created the resource"
    },
    "grantees": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "User id; what update and revoke take"
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "viewer",
              "editor"
            ],
            "description": "Resource grant values: viewer reads; editor means Developer. Grids take viewer for use only; organization developers may deploy and viewers only read"
          },
          "orgRole": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "admin",
                  "developer",
                  "viewer"
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Their role in the resource's organization; null for someone outside it"
          },
          "grantedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp (UTC)"
          }
        },
        "required": [
          "userId",
          "email",
          "name",
          "role",
          "orgRole",
          "grantedAt"
        ],
        "additionalProperties": false
      }
    },
    "warning": {
      "description": "Set when a grid could not release the grantee's machines or spot groups; the access change stands",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "resourceType",
    "resourceId",
    "resourceName",
    "callerRole",
    "grantees",
    "warning"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `403 forbidden`.

## `revoke_access`

Remove a grantee's access. On a grid, machines and spot groups a former co-manager added leave it too. Not on the caller's own grant (use leave).

**Group:** `sharing` · **Behavior:** Write

**Compact tool:** `sharing_write` · **Action:** `revoke_access`

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

### Permissions and REST equivalents

| Operation                 | REST                                       | Required scopes      |
| ------------------------- | ------------------------------------------ | -------------------- |
| `sharing.grantees.revoke` | `DELETE /sharing/grantees/{granteeUserId}` | See conditions below |
| Conditional               | resourceType is project                    | `projects:admin`     |
| Conditional               | resourceType is app                        | `apps:admin`         |
| Conditional               | resourceType is grid                       | `pools:admin`        |

### Arguments

| Argument        | Type                         | Required | Description                                    |
| --------------- | ---------------------------- | -------- | ---------------------------------------------- |
| `granteeUserId` | `string`                     | Yes      | User id of the grantee, from the grantees list |
| `resourceType`  | `"project" / "app" / "grid"` | Yes      | What is shared                                 |
| `resourceId`    | `string`                     | Yes      | Project or app id, or grid id                  |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "granteeUserId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "User id of the grantee, from the grantees list"
    },
    "resourceType": {
      "type": "string",
      "enum": [
        "project",
        "app",
        "grid"
      ],
      "description": "What is shared"
    },
    "resourceId": {
      "type": "string",
      "minLength": 1,
      "description": "Project or app id, or grid id"
    }
  },
  "required": [
    "granteeUserId",
    "resourceType",
    "resourceId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `warning` (`string or null`): Set when a grid could not release the grantee's machines or spot groups; the access change stands

<details>

<summary>Response schema: sharing.grantees.revoke</summary>

```json
{
  "type": "object",
  "properties": {
    "warning": {
      "description": "Set when a grid could not release the grantee's machines or spot groups; the access change stands",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "warning"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `403 forbidden`.

## `leave_shared_resource`

Give up the caller's own access to a shared project, app or grid. On a grid, their machines and spot groups leave with them.

**Group:** `sharing` · **Behavior:** Write

**Compact tool:** `sharing_write` · **Action:** `leave_shared_resource`

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

### Permissions and REST equivalents

| Operation       | REST                  | Required scopes |
| --------------- | --------------------- | --------------- |
| `sharing.leave` | `POST /sharing/leave` | `account:write` |

### Arguments

| Argument       | Type                         | Required | Description                   |
| -------------- | ---------------------------- | -------- | ----------------------------- |
| `resourceType` | `"project" / "app" / "grid"` | Yes      | What is shared                |
| `resourceId`   | `string`                     | Yes      | Project or app id, or grid id |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "resourceType": {
      "type": "string",
      "enum": [
        "project",
        "app",
        "grid"
      ],
      "description": "What is shared"
    },
    "resourceId": {
      "type": "string",
      "minLength": 1,
      "description": "Project or app id, or grid id"
    }
  },
  "required": [
    "resourceType",
    "resourceId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `warning` (`string or null`): Set when a grid could not release the grantee's machines or spot groups; the access change stands

<details>

<summary>Response schema: sharing.leave</summary>

```json
{
  "type": "object",
  "properties": {
    "warning": {
      "description": "Set when a grid could not release the grantee's machines or spot groups; the access change stands",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "warning"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `400 invalid_request`.

## `list_invitations`

Invitations on a resource the caller manages, or those the caller sent. Pending and accepted ones: by resourceType and resourceId, or the sent ones within the credential's admin scopes and project restrictions

**Group:** `sharing` · **Behavior:** Read

**Compact tool:** `sharing` · **Action:** `list_invitations`

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

### Permissions and REST equivalents

| Operation                  | REST                       | Required scopes      |
| -------------------------- | -------------------------- | -------------------- |
| `sharing.invitations.list` | `GET /sharing/invitations` | See conditions below |
| Conditional                | resourceType is project    | `projects:admin`     |
| Conditional                | resourceType is app        | `apps:admin`         |
| Conditional                | resourceType is grid       | `pools:admin`        |

### Arguments

| Argument       | Type                         | Required | Description                                               |
| -------------- | ---------------------------- | -------- | --------------------------------------------------------- |
| `resourceType` | `"project" / "app" / "grid"` | No       | What is shared                                            |
| `resourceId`   | `string`                     | No       | With resourceType: the resource whose invitations to list |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "resourceType": {
      "type": "string",
      "enum": [
        "project",
        "app",
        "grid"
      ],
      "description": "What is shared"
    },
    "resourceId": {
      "type": "string",
      "minLength": 1,
      "description": "With resourceType: the resource whose invitations to list"
    }
  },
  "additionalProperties": false
}
```

</details>

### Result

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

<details>

<summary>Response schema: sharing.invitations.list</summary>

```json
{
  "type": "object",
  "properties": {
    "invitations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Invitation id"
          },
          "resourceType": {
            "type": "string",
            "enum": [
              "project",
              "app",
              "grid"
            ],
            "description": "What is shared"
          },
          "resourceId": {
            "type": "string"
          },
          "resourceName": {
            "type": "string"
          },
          "inviteeEmail": {
            "type": "string"
          },
          "invitedByEmail": {
            "type": "string",
            "description": "Who sent it"
          },
          "role": {
            "type": "string",
            "enum": [
              "viewer",
              "editor"
            ],
            "description": "Resource grant values: viewer reads; editor means Developer. Grids take viewer for use only; organization developers may deploy and viewers only read"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "accepted",
              "rejected"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp (UTC)"
          },
          "acceptedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "description": "ISO 8601 timestamp (UTC)"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "resourceType",
          "resourceId",
          "resourceName",
          "inviteeEmail",
          "invitedByEmail",
          "role",
          "status",
          "createdAt",
          "acceptedAt"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "invitations"
  ],
  "additionalProperties": false
}
```

</details>

## `cancel_invitation`

Cancel an invitation the caller manages. Cancelling an accepted invitation revokes the access it granted. Needs the admin scope of the invitation's resource type.

**Group:** `sharing` · **Behavior:** Write

**Compact tool:** `sharing_write` · **Action:** `cancel_invitation`

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

### Permissions and REST equivalents

| Operation                    | REST                                         | Required scopes                                                                     |
| ---------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------- |
| `sharing.invitations.cancel` | `DELETE /sharing/invitations/{invitationId}` | Admin scope of the invitation’s resource: projects:admin, apps:admin or pools:admin |

### Arguments

| Argument       | Type     | Required | Description   |
| -------------- | -------- | -------- | ------------- |
| `invitationId` | `string` | Yes      | Invitation id |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "invitationId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Invitation id"
    }
  },
  "required": [
    "invitationId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `warning` (`string or null`): Set when a grid could not release the grantee's machines or spot groups; the access change stands

<details>

<summary>Response schema: sharing.invitations.cancel</summary>

```json
{
  "type": "object",
  "properties": {
    "warning": {
      "description": "Set when a grid could not release the grantee's machines or spot groups; the access change stands",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "warning"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `403 forbidden`.

## `list_received_invitations`

Pending invitations addressed to the caller

**Group:** `sharing` · **Behavior:** Read

**Compact tool:** `sharing` · **Action:** `list_received_invitations`

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

### Permissions and REST equivalents

| Operation                      | REST                                | Required scopes |
| ------------------------------ | ----------------------------------- | --------------- |
| `sharing.invitations.received` | `GET /sharing/invitations/received` | `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: sharing.invitations.received</summary>

```json
{
  "type": "object",
  "properties": {
    "invitations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Invitation id"
          },
          "resourceType": {
            "type": "string",
            "enum": [
              "project",
              "app",
              "grid"
            ],
            "description": "What is shared"
          },
          "resourceId": {
            "type": "string"
          },
          "resourceName": {
            "type": "string"
          },
          "inviteeEmail": {
            "type": "string"
          },
          "invitedByEmail": {
            "type": "string",
            "description": "Who sent it"
          },
          "role": {
            "type": "string",
            "enum": [
              "viewer",
              "editor"
            ],
            "description": "Resource grant values: viewer reads; editor means Developer. Grids take viewer for use only; organization developers may deploy and viewers only read"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "accepted",
              "rejected"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp (UTC)"
          },
          "acceptedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "description": "ISO 8601 timestamp (UTC)"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "resourceType",
          "resourceId",
          "resourceName",
          "inviteeEmail",
          "invitedByEmail",
          "role",
          "status",
          "createdAt",
          "acceptedAt"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "invitations"
  ],
  "additionalProperties": false
}
```

</details>

## `accept_invitation`

Accept an existing resource invitation addressed to the caller. For new team access, use organization invitations and add members to the resource

**Group:** `sharing` · **Behavior:** Write

**Compact tool:** `sharing_write` · **Action:** `accept_invitation`

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

### Permissions and REST equivalents

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

### Arguments

| Argument       | Type     | Required | Description   |
| -------------- | -------- | -------- | ------------- |
| `invitationId` | `string` | Yes      | Invitation id |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "invitationId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Invitation id"
    }
  },
  "required": [
    "invitationId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `resourceType` (`"project" / "app" / "grid"`): What is shared
* `resourceId` (`string`): See the complete response schema below.
* `resourceName` (`string`): See the complete response schema below.

<details>

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

```json
{
  "type": "object",
  "properties": {
    "resourceType": {
      "type": "string",
      "enum": [
        "project",
        "app",
        "grid"
      ],
      "description": "What is shared"
    },
    "resourceId": {
      "type": "string"
    },
    "resourceName": {
      "type": "string"
    }
  },
  "required": [
    "resourceType",
    "resourceId",
    "resourceName"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `409 no_org`.

## `decline_invitation`

Decline an invitation addressed to the caller

**Group:** `sharing` · **Behavior:** Write

**Compact tool:** `sharing_write` · **Action:** `decline_invitation`

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

### Permissions and REST equivalents

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

### Arguments

| Argument       | Type     | Required | Description   |
| -------------- | -------- | -------- | ------------- |
| `invitationId` | `string` | Yes      | Invitation id |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "invitationId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Invitation id"
    }
  },
  "required": [
    "invitationId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

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

<details>

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

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

</details>


---

# 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/sharing.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.
