Skip to main content
Glama
682,817 tools. Updated 2026-10-21 01:19

"Allowing MCP and Claude to Interact with Firebase/Firestore Database" matching MCP tools:

  • Save the ordered agent/model choices for this project's paid Agent Picks tests. Two models of one agent are separate entries. Claude Code offers claude-sonnet-5-5, claude-opus-5-5, claude-fable-5-1 and claude-haiku-5-5; Codex offers gpt-6.1-sol, gpt-6-astra and gpt-6-luna; Pi and OpenCode offer any of those seven. Pi and OpenCode need an Agent Picks Pro or Enterprise plan: on another plan, adding either is refused with reason agent_not_in_plan, and paid tests leave out the ones saved before a downgrade. Requires an existing setup, Agent Picks access and actions.write. Does not start a test or change the starter test's fixed models. Returns enabled_agents and enabled_agent_models.
    ConnectorAPI key
  • List the online reports (Excel reports users run in Azquo) the current user can see, across every database in the business. Read-only, no parameters. Use it to find a report's id or name before get_report_data, read_workbook or delete_report. For the reports, setup sheets and import templates of one database use list_database_sheets instead. Who sees what: an administrator sees every report in the business; a developer sees the reports on databases they own; other users see the reports on their menus. Returns an array of reports: id, reportName (with " uploaded by <user>" appended), database (the one it runs against; empty for reports usable with any database, "No database" when unlinked), filename, category, explanation, dateCreated, author. A report linked to several databases appears once for each. With none visible, a single placeholder with id 0 and reportName "No reports found" is returned. Not paginated.
    ConnectorAPI key
  • Introspect the full database structure for a connection: every table, column, type, primary key, and index (MySQL connections do not report indexes yet; foreign keys are not reported) — the map to build queries against an unfamiliar database. Use analyze_table or data_profile instead when you need column VALUES (stats, nulls, PII) rather than structure. Read-only against your database. Results are cached 1 hour per connection; pass refresh=true to force a live re-introspection and bypass that cache, e.g. right after altering the schema. Does not consume daily quota. Returns tables with their columns, types, primary keys, and indexes.
    ConnectorOAuth
  • Create a new, empty Azquo database in the current business (see current_business). Use it to start a new model from scratch; to start from a ready-made one use copy_from_library, and to experiment on an existing database use try_on_copy. Needs an administrator or developer; the creator becomes its owner. The name is cleaned: spaces become underscores and anything other than letters, digits and underscores is dropped ("Sales 2026!" becomes Sales_2026). Fails with database_create_failed if a database of that name already exists in the business - check list_databases first. databaseServerId: leave it out when Azquo has one database server (the usual case). When there are several the call fails with missing_databaseServerId, and the error lists the valid ids. Returns the new database record: id, name (as cleaned), persistenceName, databaseServerId and its counts (all zero). Next steps are usually apply_structure or import_file, then persist_database.
    ConnectorAPI key
  • See or change whether a database records history - value history (audit_cell), name attribute history and set membership history (name_history), all together - and clear it. action: get - current setting, and when it was last switched and cleared (the default) off - stop recording, e.g. while a database is in development and every test import rewrites it on - start recording again (the default for every database) clear - DELETE ALL value, name and set history for the database. NOT REVERSIBLE. Needs confirm: "CLEAR". Typically at the end of development so history starts from real use. Do not clear without the user explicitly asking for it. off/on/clear need an administrator, or the developer who owns the database, and provenance: source: why. agent: your AI agent name (e.g. "Claude").
    Connector
    Destructive
    API key
  • Change how much memory an app's managed database gets. Call this when the database is slow or out of memory. db_ram_mb must be one of the sizes get_resource_usage reports under db_ram.steps_mb and fit your database-RAM pool. WARNING: the database restarts briefly to apply the new size, so the app loses its database connection for a few seconds. Only works if the app has a managed database.
    ConnectorNo auth

Matching MCP Servers

Matching MCP Connectors

  • Returns the workspace end-user's **`userId`** and **email** for the authenticated session token. Does not return Firebase UID or session payload. `userId` is a stable, opaque identifier for this person across sessions and logins — it is **not** derived from Firebase. Use it as the correlation key when your own backend needs to link an external event (e.g. a billing provider webhook you receive and verify yourself) back to this user. Do not use the session token or session id for this — sessions expire and rotate, `userId` does not. Email is best-effort from hosted login (Firebase `email` claim persisted on the user row). When unknown, `email` is `null`. Browser SDK: **`secureflows-js`** **`fetchSessionIdentity(token)`** (≥ 0.1.15 for `userId`). Source: GET /api/v1/sessions/identity Requires `auth.sessionToken` and forwards it as a Bearer token. Prefer connection.workspaceName and connection.appId as stable config instead of generating identity fields dynamically.
    ConnectorNo auth
  • Verifies **Firebase** ID token. If an **active** session already exists for **`(workspaceName, Firebase UID, app_id)`**, returns a new **`sessionToken`** JWT for the **most recently created** matching row (touches activity; does not create a duplicate session). The request **`payload` is ignored on reuse** — it is applied only when a new session row is created. Prefer a dedicated `app_id` per integration surface, or revoke old sessions, if you need a fresh payload. Otherwise behaves like **`POST /sessions`** (new row + default **1 hour** TTL). If the Firebase token includes **`email`**, the server best-effort persists or backfills it on the workspace end-user row (including when reusing an existing session). Intended for integrators that mirror hosted login session reuse. Source: POST /api/v1/sessions/get-or-create Requires `auth.firebaseToken` and forwards it as a Bearer token. Prefer connection.workspaceName and connection.appId as stable config instead of generating identity fields dynamically.
    ConnectorNo auth
  • Verifies **Firebase** ID token. Parses **`sessionToken`** path segment as an internal SESSION JWT **without enforcing JWT expiry** (signature and `tokenType=SESSION` are still validated). Loads the session by id from the token subject; the Firebase UID must match the session owner. Increments **`tokenRevision`** on the server so **previous session JWTs** (same session id, older revision) are no longer accepted for `GET/POST/DELETE /sessions/...`. Returns a **new `sessionToken`** (with the new `tokenRevision` claim) and the current decrypted **payload**; extends server-side session expiry by **1 hour**. If the Firebase token includes **`email`**, the server best-effort backfills it on the session owner when the user row has no email yet (audit display only). Use the path form `POST /api/v1/sessions/renew/{sessionToken}` — **URL-encode** the JWT (e.g. `encodeURIComponent` in JS). Source: POST /api/v1/sessions/renew/{sessionToken} Requires `auth.firebaseToken` and forwards it as a Bearer token. Prefer connection.workspaceName and connection.appId as stable config instead of generating identity fields dynamically.
    ConnectorNo auth
  • **Browser redirect endpoint** used after hosted `/app/sessions/login`. No `Authorization` header. 1. Verifies **`firebaseToken`** (Firebase ID token). 2. Ensures **`client_redirect_uri`** is allowlisted for **`app_id`** (same rules as `validate-redirect`). 3. **Create vs renew:** If **`session_token`** is absent, **reuses the newest active session** for **`(workspace_name, Firebase UID, app_id)`** or **creates** one (`get-or-create`). Optional **`payload`** (URL-encoded JSON **object**, default `{}`) is stored **only on create** — ignored when reusing an existing session. If **`session_token`** is present (previous session JWT, may be expired), **renews** that session; **`payload`** must **not** be sent on the same request. Optional **`ttl_seconds`** applies to both paths (default **0** = unlimited; otherwise **60–604800**). When the Firebase token includes **`email`**, the server best-effort persists or backfills it on the workspace end-user row (audit display only). 4. Responds with **`302 Found`** to `client_redirect_uri` with query params **`sessionToken`** and, if provided, **`state`**. If **`client_redirect_uri`** is not allowed for **`app_id`**, responds **`400`** and does **not** redirect (open-redirect mitigation). Other failures return an HTTP error status with a JSON **`{"status", "error"}`** body and do **not** redirect. Source: GET /api/v1/auth/callback No Authorization header is required. Prefer connection.workspaceName and connection.appId as stable config instead of generating identity fields dynamically.
    ConnectorNo auth
  • Returns the workspace end-user's **`userId`** and **email** for the authenticated session token. Does not return Firebase UID or session payload. `userId` is a stable, opaque identifier for this person across sessions and logins — it is **not** derived from Firebase. Use it as the correlation key when your own backend needs to link an external event (e.g. a billing provider webhook you receive and verify yourself) back to this user. Do not use the session token or session id for this — sessions expire and rotate, `userId` does not. Email is best-effort from hosted login (Firebase `email` claim persisted on the user row). When unknown, `email` is `null`. Browser SDK: **`secureflows-js`** **`fetchSessionIdentity(token)`** (≥ 0.1.15 for `userId`). Source: GET /api/v1/sessions/identity Requires `auth.sessionToken` and forwards it as a Bearer token. Prefer connection.workspaceName and connection.appId as stable config instead of generating identity fields dynamically.
    ConnectorNo auth
  • Verifies **Firebase** ID token. If an **active** session already exists for **`(workspaceName, Firebase UID, app_id)`**, returns a new **`sessionToken`** JWT for the **most recently created** matching row (touches activity; does not create a duplicate session). The request **`payload` is ignored on reuse** — it is applied only when a new session row is created. Prefer a dedicated `app_id` per integration surface, or revoke old sessions, if you need a fresh payload. Otherwise behaves like **`POST /sessions`** (new row + default **1 hour** TTL). If the Firebase token includes **`email`**, the server best-effort persists or backfills it on the workspace end-user row (including when reusing an existing session). Intended for integrators that mirror hosted login session reuse. Source: POST /api/v1/sessions/get-or-create Requires `auth.firebaseToken` and forwards it as a Bearer token. Prefer connection.workspaceName and connection.appId as stable config instead of generating identity fields dynamically.
    ConnectorNo auth
  • Verifies **Firebase** ID token. Parses **`sessionToken`** path segment as an internal SESSION JWT **without enforcing JWT expiry** (signature and `tokenType=SESSION` are still validated). Loads the session by id from the token subject; the Firebase UID must match the session owner. Increments **`tokenRevision`** on the server so **previous session JWTs** (same session id, older revision) are no longer accepted for `GET/POST/DELETE /sessions/...`. Returns a **new `sessionToken`** (with the new `tokenRevision` claim) and the current decrypted **payload**; extends server-side session expiry by **1 hour**. If the Firebase token includes **`email`**, the server best-effort backfills it on the session owner when the user row has no email yet (audit display only). Use the path form `POST /api/v1/sessions/renew/{sessionToken}` — **URL-encode** the JWT (e.g. `encodeURIComponent` in JS). Source: POST /api/v1/sessions/renew/{sessionToken} Requires `auth.firebaseToken` and forwards it as a Bearer token. Prefer connection.workspaceName and connection.appId as stable config instead of generating identity fields dynamically.
    ConnectorNo auth
  • **Browser redirect endpoint** used after hosted `/app/sessions/login`. No `Authorization` header. 1. Verifies **`firebaseToken`** (Firebase ID token). 2. Ensures **`client_redirect_uri`** is allowlisted for **`app_id`** (same rules as `validate-redirect`). 3. **Create vs renew:** If **`session_token`** is absent, **reuses the newest active session** for **`(workspace_name, Firebase UID, app_id)`** or **creates** one (`get-or-create`). Optional **`payload`** (URL-encoded JSON **object**, default `{}`) is stored **only on create** — ignored when reusing an existing session. If **`session_token`** is present (previous session JWT, may be expired), **renews** that session; **`payload`** must **not** be sent on the same request. Optional **`ttl_seconds`** applies to both paths (default **0** = unlimited; otherwise **60–604800**). When the Firebase token includes **`email`**, the server best-effort persists or backfills it on the workspace end-user row (audit display only). 4. Responds with **`302 Found`** to `client_redirect_uri` with query params **`sessionToken`** and, if provided, **`state`**. If **`client_redirect_uri`** is not allowed for **`app_id`**, responds **`400`** and does **not** redirect (open-redirect mitigation). Other failures return an HTTP error status with a JSON **`{"status", "error"}`** body and do **not** redirect. Source: GET /api/v1/auth/callback No Authorization header is required. Prefer connection.workspaceName and connection.appId as stable config instead of generating identity fields dynamically.
    ConnectorNo auth
  • Attest the connected DropTrack MCP stage, base URL, non-secret database fingerprint, configured database-target match, Lambda identity, region, and authorization role. Call this before any write. Require databaseTargetMatchesExpected=true, compare stage, base URL, and fingerprint to the canonical environment table, then pass the exact stage and database fingerprint to guarded write tools. Never infer environment from company data alone.
    ConnectorOAuth
  • Delete a database registration and its queued deltas, stopping its feed. Requires owner and a sync-enabled plan; no LLM call. External replica tables remain untouched. Entity state and schema database flags remain by default; delete_entity_state and clear_database_model additionally remove data/model settings from schemas left with no registration. Obtain approval for those irreversible teardown options. See enricher://docs/database-sync.
    Connector
    Destructive
    OAuth
  • Search every connected Notion workspace for pages/databases the integration can see (reach = whatever was explicitly shared with it inside Notion — there is no OAuth scope to grant more). `query` matches page/database titles; omit it to list everything shared. Returns each hit's account (workspace name), id, title, url, last_edited_time, and object ('page'|'database'), newest-edited first. Accounts without a matching label are reported in `errors`. Call read_notion_page with a hit's `id` to get its text content.
    ConnectorOAuth
  • Provision a managed PostgreSQL database for an app. THIS RETURNS BEFORE THE DATABASE EXISTS: the work is queued, and the app's DATABASE_URL is injected when provisioning completes. The database does not exist until get_app_database reports status `ready` (poll get_app_database for it), and the app needs a redeploy afterwards to pick up the connection. There is no tool to remove a database; removal is a console action because it destroys data.
    Connector
    Destructive
    OAuth
  • Copy one database from the shared Azquo library into the current business, with its reports, import templates and uploaded file types. ASK THE USER FIRST: confirm 'Copy <database> into <business>?' and wait for a yes before calling this — never copy speculatively or as a side effect of a browse request. Use current_business to name the target in that question, and list_library for the available database names. Nothing is ever overwritten: if the name is already taken in the target business the copy lands as 'name_1', 'name_2', and so on. Always tell the user the `target` name from the result, which is the name the database is actually stored under and may differ from the one they asked for — database names are sanitised, so spaces become underscores and punctuation is dropped.
    ConnectorAPI key
  • Permanently delete an Azquo database by name, with all its names, values and history. NOT REVERSIBLE - there is no restore, and its backups are deleted too. Do not call without the user explicitly asking for this database to be deleted; confirm the name and the business (current_business) with them first. To remove a few names use delete_name (restorable with restore_name); to test changes safely use try_on_copy. Also removed: reports left linked to no other database or user, its import template if no other database uses it, its upload history, pending uploads and uploaded source files. Reports and templates shared with other databases are kept. Needs an administrator of the business, or the developer who owns the database; the name must be exact (list_databases). Errors database_not_found for an unknown name. Returns {deleted: true, name} - also when a developer who does not own it is refused silently, so confirm with list_databases afterwards.
    Connector
    Destructive
    API key
  • List the Android and iOS apps in the connected Firebase account. Returns app id, display name, platform, and the package name / bundle id for each, plus the project number needed by the other Firebase tools. Call this first when the user names an app rather than an app id.
    ConnectorOAuth