Tool: create_snapshot
Create a new Cloud Pub/Sub snapshot from a given subscription.
Parameters
name: The name of the snapshot in the formatprojects/{project_id}/snapshots/{name}.subscription: The name of the subscription to create the snapshot from, in the formatprojects/{project_id}/subscriptions/{name}.
Returns
The created snapshot configuration if successful.
An
ALREADY_EXISTSerror if the snapshot already exists.A
NOT_FOUNDerror if the requested subscription doesn't exist.A
FAILED_PRECONDITIONerror if the backlog in the subscription is too old (snapshot would expire in less than 1 hour).
Important Notes
A snapshot is a named resource that captures the acknowledgment state of messages in an existing subscription to allow for managing acknowledgments in bulk.
A project ID, subscription name, and snapshot name must be provided.
Snapshots are used in Seek operations to manage message acknowledgments in bulk.
The following sample demonstrate how to use curl to invoke the create_snapshot MCP tool.
| Curl Request |
|---|
curl --location 'https://pubsub.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "create_snapshot", "arguments": { // provide these details according to the tool's MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
Input Schema
Request for the CreateSnapshot method.
CreateSnapshotRequest
| JSON representation |
|---|
{ "name": string, "subscription": string, "labels": { string: string, ... }, "tags": { string: string, ... } } |
| Fields | |
|---|---|
name |
Required. User-provided name for this snapshot. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription. Note that for REST API requests, you must specify a name. See the resource name rules. Format is |
subscription |
Required. The subscription whose backlog the snapshot retains. Specifically, the created snapshot is guaranteed to retain: (a) The existing backlog on the subscription. More precisely, this is defined as the messages in the subscription's backlog that are unacknowledged upon the successful completion of the |
labels |
Optional. See Creating and managing labels. An object containing a list of |
tags |
Optional. Input only. Immutable. Tag keys/values directly bound to this resource. For example: "123/environment": "production", "123/costCenter": "marketing" An object containing a list of |
LabelsEntry
| JSON representation |
|---|
{ "key": string, "value": string } |
| Fields | |
|---|---|
key |
|
value |
|
TagsEntry
| JSON representation |
|---|
{ "key": string, "value": string } |
| Fields | |
|---|---|
key |
|
value |
|
Output Schema
A snapshot resource. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.
Snapshot
| JSON representation |
|---|
{ "name": string, "topic": string, "expireTime": string, "labels": { string: string, ... } } |
| Fields | |
|---|---|
name |
Optional. The name of the snapshot. |
topic |
Optional. The name of the topic from which this snapshot is retaining messages. |
expireTime |
Optional. The snapshot is guaranteed to exist up until this time. A newly-created snapshot expires no later than 7 days from the time of its creation. Its exact lifetime is determined at creation by the existing backlog in the source subscription. Specifically, the lifetime of the snapshot is Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
labels |
Optional. See Creating and managing labels. An object containing a list of |
Timestamp
| JSON representation |
|---|
{ "seconds": string, "nanos": integer } |
| Fields | |
|---|---|
seconds |
Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be between -62135596800 and 253402300799 inclusive (which corresponds to 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z). |
nanos |
Non-negative fractions of a second at nanosecond resolution. This field is the nanosecond portion of the duration, not an alternative to seconds. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be between 0 and 999,999,999 inclusive. |
LabelsEntry
| JSON representation |
|---|
{ "key": string, "value": string } |
| Fields | |
|---|---|
key |
|
value |
|
Tool Annotations
Destructive Hint: ❌ | Idempotent Hint: ✅ | Read Only Hint: ❌ | Open World Hint: ✅