com.googleapis.firestore/mcp
REMOTE · FIRESTORE.GOOGLEAPIS.COM · SCANNED AUG 3
Interact with your Google Cloud Firestore resources using natural language commands.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security46
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_document). See how to fix → View diagnostics → Fail
- HTTPS not yet verified: we couldn't determine whether a plaintext access path exists. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability64
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2017 tokens (~134/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · firestore.googleapis.com
claude mcp add --transport http com-googleapis-firestore-mcp https://firestore.googleapis.com/mcp
[mcp_servers.com-googleapis-firestore-mcp] url = "https://firestore.googleapis.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-googleapis-firestore-mcp": {
"type": "remote",
"url": "https://firestore.googleapis.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-googleapis-firestore-mcp --url https://firestore.googleapis.com/mcp --transport streamable-http
mcp_servers:
com-googleapis-firestore-mcp:
url: "https://firestore.googleapis.com/mcp" {
"mcpServers": {
"com-googleapis-firestore-mcp": {
"type": "http",
"url": "https://firestore.googleapis.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 −1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 58
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://firestore.googleapis.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_256_GCM_SHA384 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=edgecert.googleapis.com | CN=WR2,O=Google Trust Services,C=US | 29 Jun 2026 | 21 Sept 2026 | ECDSA 256 | SHA256-RSA | ba12c5d603744ace10f5aabb9a4d111d |
| SANs: edgecert.googleapis.com, android.googleapis.com, bigtable.googleapis.com, clouderrorreporting.googleapis.com, cloudtrace.googleapis.com, container.googleapis.com, dataflow.googleapis.com, datastore.googleapis.com, dlp.googleapis.com, firestore.googleapis.com, iamcredentials.googleapis.com, logging.googleapis.com and 5 more | ||||||
| CN=WR2,O=Google Trust Services,C=US (CA) | CN=GTS Root R1,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | RSA 2048 | SHA256-RSA | 7ff005a07c4cded100ad9d66a5107b98 |
| CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 19 Jun 2020 | 28 Jan 2028 | RSA 4096 | SHA256-RSA | 77bd0d6cdb36f91aea210fc4f058d30d |
DNSSEC insecure
Validation of firestore.googleapis.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| googleapis.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://firestore.googleapis.com/mcp | Verified | 200 | |
| http (plaintext) | http://firestore.googleapis.com/mcp | Inconclusive | 405 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
add_document ~189
Create a document from a Firestore database.
| Name | Type | Req | Description |
|---|---|---|---|
| collectionId | string | yes | Required. The collection ID, relative to `parent`, to list. For example: `chatrooms`. |
| document | — | yes | Required. The document to create. `name` must not be set. |
| documentId | string | — | The client-assigned document ID to use for this document. Optional. If not specified, an ID will be assigned by the service. |
| mask | — | — | The fields to return. If not set, returns all fields. If the document has a field that is not present in this mask, that field will not be returned in the response. |
| parent | string | yes | Required. The parent resource. For example: `projects/{project_id}/databases/{database_id}/documents` or `projects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}` |
| Name | Type | Req | Description |
|---|---|---|---|
| createTime | string | — | Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `… |
| fields | object | — | The document's fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts.… |
| name | string | — | The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`. |
| updateTime | string | — | Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared t… |
No examples provided.
create_database ~159
Create a Firestore database.
| Name | Type | Req | Description |
|---|---|---|---|
| database | — | yes | Required. The Database to create. |
| databaseId | string | yes | Required. The ID to use for the database, which will become the final component of the database's resource name. This value should be 4-63 characters. Valid characters are /a-z-/ with first character… |
| parent | string | yes | Required. A parent name of the form `projects/{project_id}` |
| Name | Type | Req | Description |
|---|---|---|---|
| done | boolean | — | If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available. |
| error | — | — | The error result of the operation in case of failure or cancellation. |
| metadata | object | — | Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method… |
| name | string | — | The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{u… |
| response | object | — | The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get… |
No examples provided.
create_index ~57
Create a composite index.
| Name | Type | Req | Description |
|---|---|---|---|
| index | — | yes | Required. The composite index to create. |
| parent | string | yes | Required. A parent name of the form `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}` |
| Name | Type | Req | Description |
|---|---|---|---|
| done | boolean | — | If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available. |
| error | — | — | The error result of the operation in case of failure or cancellation. |
| metadata | object | — | Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method… |
| name | string | — | The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{u… |
| response | object | — | The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get… |
No examples provided.
delete_database ~87
Delete a Firestore database.
| Name | Type | Req | Description |
|---|---|---|---|
| etag | string | — | The current etag of the Database. If an etag is provided and does not match the current etag of the database, deletion will be blocked and a FAILED_PRECONDITION error will be returned. |
| name | string | yes | Required. A name of the form `projects/{project_id}/databases/{database_id}` |
| Name | Type | Req | Description |
|---|---|---|---|
| done | boolean | — | If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available. |
| error | — | — | The error result of the operation in case of failure or cancellation. |
| metadata | object | — | Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method… |
| name | string | — | The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{u… |
| response | object | — | The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get… |
No examples provided.
delete_document ~85
Delete a document from a Firestore database.
| Name | Type | Req | Description |
|---|---|---|---|
| currentDocument | — | — | An optional precondition on the document. The request will fail if this is set and not met by the target document. |
| name | string | yes | Required. The resource name of the Document to delete. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`. |
Structured output declared, but exposes no named fields.
No examples provided.
delete_index ~50
Delete a Firestore index.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Required. A name of the form `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}` |
Structured output declared, but exposes no named fields.
No examples provided.
get_database ~39
Get a Firestore database.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Required. A name of the form `projects/{project_id}/databases/{database_id}` |
| Name | Type | Req | Description |
|---|---|---|---|
| appEngineIntegrationMode | string | — | The App Engine integration mode to use for this database. |
| cmekConfig | — | — | Optional. Presence indicates CMEK is enabled for this database. |
| concurrencyMode | string | — | The default concurrency control mode to use for this database. If unspecified in a CreateDatabase request, this will default based on the database edition: Optimistic for Enterprise and Pessimistic f… |
| createTime | string | — | Output only. The timestamp at which this database was created. Databases created before 2016 do not populate create_time. |
| databaseEdition | string | — | Immutable. The edition of the database. |
| deleteProtectionState | string | — | State of delete protection for the database. |
| deleteTime | string | — | Output only. The timestamp at which this database was deleted. Only set if the database has been deleted. |
| earliestVersionTime | string | — | Output only. The earliest timestamp at which older versions of the data can be read from the database. See [version_retention_period] above; this field is populated with `now - version_retention_peri… |
| etag | string | — | This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. |
| firestoreDataAccessMode | string | — | Optional. The Firestore API data access mode to use for this database. If not set on write: - the default value is DATA_ACCESS_MODE_DISABLED for Enterprise Edition. - the default value is DATA_ACCESS… |
| freeTier | boolean | — | Output only. Background: Free tier is the ability of a Firestore database to use a small amount of resources every day without being charged. Once usage exceeds the free tier limit further usage is c… |
| keyPrefix | string | — | Output only. The key_prefix for this database. This key_prefix is used, in combination with the project ID ("~") to construct the application ID that is returned from the Cloud Datastore APIs in Goog… |
| locationId | string | — | Required. The location of the database. Available locations are listed at https://cloud.google.com/firestore/docs/locations. |
| mongodbCompatibleDataAccessMode | string | — | Optional. The MongoDB compatible API data access mode to use for this database. If not set on write, the default value is DATA_ACCESS_MODE_ENABLED for Enterprise Edition. The value is always DATA_ACC… |
| name | string | — | The resource name of the Database. Format: `projects/{project}/databases/{database}` |
| pointInTimeRecoveryEnablement | string | — | Whether to enable the PITR feature on this database. |
| previousId | string | — | Output only. The database resource's prior database ID. This field is only populated for deleted databases. |
| realtimeUpdatesMode | string | — | Immutable. The default Realtime Updates mode to use for this database. |
| sourceInfo | — | — | Output only. Information about the provenance of this database. |
| tags | object | — | Optional. Input only. Immutable. Tag keys/values directly bound to this resource. For example: "123/environment": "production", "123/costCenter": "marketing" |
| type | string | — | Required. The type of the database. See https://cloud.google.com/datastore/docs/firestore-or-datastore for information about how to choose. |
| uid | string | — | Output only. The system-generated UUID4 for this Database. |
| updateTime | string | — | Output only. The timestamp at which this database was most recently updated. Note this only includes updates to the database resource and not data contained by the database. |
| versionRetentionPeriod | string | — | Output only. The period during which past versions of data are retained in the database. Any read or query can specify a `read_time` within this window, and will read the state of the database at tha… |
No examples provided.
get_document ~165
Get a document from a Firestore database.
| Name | Type | Req | Description |
|---|---|---|---|
| mask | — | — | The fields to return. If not set, returns all fields. If the document has a field that is not present in this mask, that field will not be returned in the response. |
| name | string | yes | Required. The resource name of the Document to get. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`. |
| readTime | string | — | Reads the version of the document at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minu… |
| transaction | string | — | Reads the document in a transaction. |
| Name | Type | Req | Description |
|---|---|---|---|
| createTime | string | — | Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `… |
| fields | object | — | The document's fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts.… |
| name | string | — | The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`. |
| updateTime | string | — | Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared t… |
No examples provided.
get_index ~50
Get a Firestore index.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Required. A name of the form `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}` |
| Name | Type | Req | Description |
|---|---|---|---|
| apiScope | string | — | The API scope supported by this index. |
| density | string | — | Immutable. The density configuration of the index. |
| fields | array | — | The fields supported by this index. For composite indexes, this requires a minimum of 2 and a maximum of 100 fields. The last field entry is always for the field path `__name__`. If, on creation, `__… |
| multikey | boolean | — | Optional. Whether the index is multikey. By default, the index is not multikey. For non-multikey indexes, none of the paths in the index definition reach or traverse an array, except via an explicit… |
| name | string | — | Output only. A server defined name for this index. The form of this name for composite indexes will be: `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{compos… |
| queryScope | string | — | Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection ID. Indexes with… |
| searchIndexOptions | — | — | Optional. Options for search indexes that are at the index definition level. This field is only currently supported for indexes with MONGODB_COMPATIBLE_API ApiScope. |
| shardCount | integer | — | Optional. The number of shards for the index. |
| state | string | — | Output only. The serving state of the index. |
| unique | boolean | — | Optional. Whether it is an unique index. Unique index ensures all values for the indexed field(s) are unique across documents. |
No examples provided.
list_collections ~183
List all the collection IDs underneath a document.
| Name | Type | Req | Description |
|---|---|---|---|
| pageSize | integer | — | The maximum number of results to return. |
| pageToken | string | — | A page token. Must be a value from ListCollectionIdsResponse. |
| parent | string | yes | Required. The parent document. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`. For example: `projects/my-project/databases/my-database/documents/chatrooms/my… |
| readTime | string | — | Reads documents as they were at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute ti… |
| Name | Type | Req | Description |
|---|---|---|---|
| collectionIds | array | — | The collection ids. |
| nextPageToken | string | — | A page token that may be used to continue the list. |
No examples provided.
list_databases ~49
List Firestore databases.
| Name | Type | Req | Description |
|---|---|---|---|
| parent | string | yes | Required. A parent name of the form `projects/{project_id}` |
| showDeleted | boolean | — | If true, also returns deleted resources. |
| Name | Type | Req | Description |
|---|---|---|---|
| databases | array | — | The databases in the project. |
| unreachable | array | — | In the event that data about individual databases cannot be listed they will be recorded here. An example entry might be: projects/some_project/locations/some_location This can happen if the Cloud Re… |
No examples provided.
list_documents ~581
List documents from a Firestore database.
| Name | Type | Req | Description |
|---|---|---|---|
| collectionId | string | — | Optional. The collection ID, relative to `parent`, to list. For example: `chatrooms` or `messages`. This is optional, and when not provided, Firestore will list documents from all collections under t… |
| mask | — | — | Optional. The fields to return. If not set, returns all fields. If a document has a field that is not present in this mask, that field will not be returned in the response. |
| orderBy | string | — | Optional. The optional ordering of the documents to return. For example: `priority desc, __name__ desc`. This mirrors the `ORDER BY` used in Firestore queries but in a string representation. When abs… |
| pageSize | integer | — | Optional. The maximum number of documents to return in a single response. Firestore may return fewer than this value. |
| pageToken | string | — | Optional. A page token, received from a previous `ListDocuments` response. Provide this to retrieve the subsequent page. When paginating, all other parameters (with the exception of `page_size`) must… |
| parent | string | yes | Required. The parent resource name. In the format: `projects/{project_id}/databases/{database_id}/documents` or `projects/{project_id}/databases/{database_id}/documents/{document_path}`. For example:… |
| readTime | string | — | Perform the read at the provided time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp w… |
| recursive | boolean | — | Optional. If the list should recursively include all documents nested under the parent at any level. If the request specifies a `collection_id`, then the list will include all nested documents in the… |
| showMissing | boolean | — | If the list should show missing documents. A document is missing if it does not exist, but there are sub-documents nested underneath it. When true, such missing documents will be returned with a key… |
| transaction | string | — | Perform the read as part of an already active transaction. |
| Name | Type | Req | Description |
|---|---|---|---|
| documents | array | — | The Documents found. |
| nextPageToken | string | — | A token to retrieve the next page of documents. If this field is omitted, there are no subsequent pages. |
No examples provided.
list_indexes ~108
List Firestore indexes.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | — | The filter to apply to list results. |
| pageSize | integer | — | The number of results to return. |
| pageToken | string | — | A page token, returned from a previous call to FirestoreAdmin.ListIndexes, that may be used to get the next page of results. |
| parent | string | yes | Required. A parent name of the form `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}` |
| Name | Type | Req | Description |
|---|---|---|---|
| indexes | array | — | The requested indexes. |
| nextPageToken | string | — | A page token that may be used to request another page of results. If blank, this is the last page. |
No examples provided.
update_database ~40
Update a Firestore database.
| Name | Type | Req | Description |
|---|---|---|---|
| database | — | yes | Required. The database to update. |
| updateMask | string | — | The list of fields to be updated. |
| Name | Type | Req | Description |
|---|---|---|---|
| done | boolean | — | If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available. |
| error | — | — | The error result of the operation in case of failure or cancellation. |
| metadata | object | — | Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method… |
| name | string | — | The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{u… |
| response | object | — | The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get… |
No examples provided.
update_document ~175
Update a document from a Firestore database.
| Name | Type | Req | Description |
|---|---|---|---|
| currentDocument | — | — | An optional precondition on the document. The request will fail if this is set and not met by the target document. |
| document | — | yes | Required. The updated document. Creates the document if it does not already exist. |
| mask | — | — | The fields to return. If not set, returns all fields. If the document has a field that is not present in this mask, that field will not be returned in the response. |
| updateMask | — | — | The fields to update. None of the field paths in the mask may contain a reserved name. If the document exists on the server and has fields not referenced in the mask, they are left unchanged. Fields… |
| Name | Type | Req | Description |
|---|---|---|---|
| createTime | string | — | Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `… |
| fields | object | — | The document's fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts.… |
| name | string | — | The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`. |
| updateTime | string | — | Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared t… |
No examples provided.