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

# GCP Plugin

> Google Cloud Platform — Compute Engine, Cloud Storage, BigQuery, IAM, and project management.

**Plugin ID:** `gcp` | **Auth:** OAuth2 (with PKCE) | **Scopes:** `compute.readonly`, `devstorage.read_only`, `bigquery.readonly`, `iam.readonly`, `cloudplatformprojects.readonly`

<Note>
  The GCP plugin uses a dedicated `gcp` OAuth provider (separate from the `google` provider used by Google Workspace) to keep cloud-platform scopes isolated.
</Note>

## Tools

### gcp.projects.list

**Name:** List Projects

List GCP projects accessible to the authenticated user.

**Input:**

| Parameter   | Type      | Required | Default | Description                                  |
| ----------- | --------- | -------- | ------- | -------------------------------------------- |
| `filter`    | `string`  | No       | --      | Filter expression (e.g. `"name:my-project"`) |
| `pageSize`  | `integer` | No       | `50`    | Max results                                  |
| `pageToken` | `string`  | No       | --      | Pagination token                             |

**Output:**

```json theme={null}
{
  "projects": [
    { "projectId": "my-project-123", "name": "My Project", "projectNumber": "123456789", "lifecycleState": "ACTIVE" }
  ],
  "nextPageToken": null
}
```

***

### gcp.compute.instances.list

**Name:** List VM Instances

List Compute Engine VM instances in a project and zone.

**Input:**

| Parameter    | Type      | Required | Default | Description                           |
| ------------ | --------- | -------- | ------- | ------------------------------------- |
| `project`    | `string`  | Yes      | --      | GCP project ID                        |
| `zone`       | `string`  | Yes      | --      | Compute zone (e.g. `"us-central1-a"`) |
| `maxResults` | `integer` | No       | `50`    | Max results                           |
| `pageToken`  | `string`  | No       | --      | Pagination token                      |

**Output:**

```json theme={null}
{
  "instances": [
    { "id": "123", "name": "web-server-1", "status": "RUNNING", "machineType": "e2-medium", "zone": "us-central1-a" }
  ],
  "nextPageToken": null
}
```

***

### gcp.compute.instances.get

**Name:** Get VM Instance

Get details of a specific Compute Engine VM instance.

**Input:**

| Parameter  | Type     | Required | Description    |
| ---------- | -------- | -------- | -------------- |
| `project`  | `string` | Yes      | GCP project ID |
| `zone`     | `string` | Yes      | Compute zone   |
| `instance` | `string` | Yes      | Instance name  |

**Output:**

```json theme={null}
{
  "id": "123", "name": "web-server-1", "status": "RUNNING", "machineType": "e2-medium",
  "networkInterfaces": [{}], "disks": [{}], "creationTimestamp": "2026-01-01T00:00:00Z"
}
```

***

### gcp.compute.instances.start

**Name:** Start VM Instance | **Destructive:** Yes

Start a stopped Compute Engine VM instance. Returns a long-running operation. Requires user approval.

**Input:**

| Parameter  | Type     | Required | Description    |
| ---------- | -------- | -------- | -------------- |
| `project`  | `string` | Yes      | GCP project ID |
| `zone`     | `string` | Yes      | Compute zone   |
| `instance` | `string` | Yes      | Instance name  |

**Output:**

```json theme={null}
{ "operation": "op-123", "status": "RUNNING", "targetLink": "https://..." }
```

***

### gcp.compute.instances.stop

**Name:** Stop VM Instance | **Destructive:** Yes

Stop a running Compute Engine VM instance. Requires user approval.

**Input:**

| Parameter  | Type     | Required | Description    |
| ---------- | -------- | -------- | -------------- |
| `project`  | `string` | Yes      | GCP project ID |
| `zone`     | `string` | Yes      | Compute zone   |
| `instance` | `string` | Yes      | Instance name  |

**Output:**

```json theme={null}
{ "operation": "op-456", "status": "RUNNING", "targetLink": "https://..." }
```

***

### gcp.storage.buckets.list

**Name:** List Buckets

List Cloud Storage buckets in a project.

**Input:**

| Parameter    | Type      | Required | Default | Description      |
| ------------ | --------- | -------- | ------- | ---------------- |
| `project`    | `string`  | Yes      | --      | GCP project ID   |
| `maxResults` | `integer` | No       | `50`    | Max results      |
| `pageToken`  | `string`  | No       | --      | Pagination token |

**Output:**

```json theme={null}
{
  "buckets": [
    { "id": "my-bucket", "name": "my-bucket", "location": "US", "storageClass": "STANDARD", "timeCreated": "2026-01-01T00:00:00Z" }
  ],
  "nextPageToken": null
}
```

***

### gcp.storage.objects.list

**Name:** List Objects

List objects in a Cloud Storage bucket.

**Input:**

| Parameter    | Type      | Required | Default | Description                             |
| ------------ | --------- | -------- | ------- | --------------------------------------- |
| `bucket`     | `string`  | Yes      | --      | Bucket name                             |
| `prefix`     | `string`  | No       | --      | Object name prefix filter               |
| `delimiter`  | `string`  | No       | --      | Delimiter for hierarchy (usually `"/"`) |
| `maxResults` | `integer` | No       | `100`   | Max results                             |
| `pageToken`  | `string`  | No       | --      | Pagination token                        |

**Output:**

```json theme={null}
{
  "objects": [
    { "name": "data/file.csv", "size": "1024", "contentType": "text/csv", "updated": "2026-04-01T00:00:00Z" }
  ],
  "prefixes": ["data/subdir/"],
  "nextPageToken": null
}
```

***

### gcp.storage.objects.get\_metadata

**Name:** Get Object Metadata

Get metadata for a Cloud Storage object (does not download the content).

**Input:**

| Parameter | Type     | Required | Description                      |
| --------- | -------- | -------- | -------------------------------- |
| `bucket`  | `string` | Yes      | Bucket name                      |
| `object`  | `string` | Yes      | Object name (path within bucket) |

**Output:**

```json theme={null}
{ "name": "data/file.csv", "bucket": "my-bucket", "size": "1024", "contentType": "text/csv", "md5Hash": "abc123", "updated": "2026-04-01T00:00:00Z", "metadata": null }
```

***

### gcp.bigquery.datasets.list

**Name:** List Datasets

List BigQuery datasets in a project.

**Input:**

| Parameter    | Type      | Required | Default | Description      |
| ------------ | --------- | -------- | ------- | ---------------- |
| `project`    | `string`  | Yes      | --      | GCP project ID   |
| `maxResults` | `integer` | No       | `50`    | Max results      |
| `pageToken`  | `string`  | No       | --      | Pagination token |

**Output:**

```json theme={null}
{
  "datasets": [
    { "datasetId": "analytics", "projectId": "my-project", "location": "US" }
  ],
  "nextPageToken": null
}
```

***

### gcp.bigquery.tables.list

**Name:** List Tables

List tables in a BigQuery dataset.

**Input:**

| Parameter    | Type      | Required | Default | Description         |
| ------------ | --------- | -------- | ------- | ------------------- |
| `project`    | `string`  | Yes      | --      | GCP project ID      |
| `datasetId`  | `string`  | Yes      | --      | BigQuery dataset ID |
| `maxResults` | `integer` | No       | `50`    | Max results         |
| `pageToken`  | `string`  | No       | --      | Pagination token    |

**Output:**

```json theme={null}
{
  "tables": [
    { "tableId": "events", "type": "TABLE", "creationTime": "1700000000000" }
  ],
  "nextPageToken": null
}
```

***

### gcp.bigquery.query

**Name:** Run Query

Run a read-only SQL query against BigQuery.

**Input:**

| Parameter      | Type      | Required | Default | Description           |
| -------------- | --------- | -------- | ------- | --------------------- |
| `project`      | `string`  | Yes      | --      | GCP project ID        |
| `query`        | `string`  | Yes      | --      | Standard SQL query    |
| `maxResults`   | `integer` | No       | `100`   | Max rows              |
| `useLegacySql` | `boolean` | No       | `false` | Use legacy SQL syntax |

**Output:**

```json theme={null}
{
  "totalRows": "42",
  "schema": [{ "name": "user_id", "type": "STRING" }],
  "rows": [["user_123"]],
  "jobComplete": true
}
```

***

### gcp.iam.service\_accounts.list

**Name:** List Service Accounts

List service accounts in a GCP project.

**Input:**

| Parameter   | Type      | Required | Default | Description      |
| ----------- | --------- | -------- | ------- | ---------------- |
| `project`   | `string`  | Yes      | --      | GCP project ID   |
| `pageSize`  | `integer` | No       | `50`    | Max results      |
| `pageToken` | `string`  | No       | --      | Pagination token |

**Output:**

```json theme={null}
{
  "accounts": [
    { "email": "sa@my-project.iam.gserviceaccount.com", "displayName": "My SA", "disabled": false, "uniqueId": "123" }
  ],
  "nextPageToken": null
}
```
