Skip to main content
Glama

Firebase Setup

firebase_setup
Destructive

Configures Firebase Analytics for an iOS app: creates GCP project, registers app, and writes GoogleService-Info.plist to Resources/, with human approval.

Instructions

Set up Firebase Analytics: GCP project, iOS app and GoogleService-Info.plist into Resources/ (live write, needs human approval).

Use when: once per app (mandatory for every app). Requires gcloud auth and firebase-tools. Returns: {ok, project_id, app_id, google_analytics, console, plist} or an approval_required refusal.

Input Schema

NameRequiredDescriptionDefault
app_dirYesAbsolute path to the app project directory (contains app.spec.json), e.g. /Users/me/Apps/MyApp.
app_nameYesApp name as shown on the App Store (globally unique, max 30 characters).
bundle_idYesApp bundle identifier in reverse-DNS form, e.g. com.example.app.
approval_idNoApproval id from a previous approval_required refusal; omit on the first call. The human approves out-of-band with `appfactory approve <id>`, then call again with the same arguments and this id.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.1.5
    • addedInput schema / properties / app_dir / description
      Added value: +"Absolute path to the app project directory (contains app.spec.json), e.g. /Users/me/Apps/MyApp."
    • addedInput schema / properties / app_name / description
      Added value: +"App name as shown on the App Store (globally unique, max 30 characters)."
    • addedInput schema / properties / approval_id / description
      Added value: +"Approval id from a previous approval_required refusal; omit on the first call. The human approves out-of-band with `appfactory approve <id>`, then call again with the same arguments and this id."
    • addedInput schema / properties / bundle_id / description
      Added value: +"App bundle identifier in reverse-DNS form, e.g. com.example.app."
  2. First observedv0.1.1

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: 'live write, needs human approval', an approval_required refusal path, and the approval_id round-trip flow. The annotations flag destructive/openWorld, and the description confirms a human-approval gate that isn't derivable from the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose line, then Use when, prerequisites, and return shape in tight labeled blocks. Slightly line-broken but every clause earns its place; no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers precondition (auth/tools), approval semantics, and refusal shape. An output schema exists so return-value detail is unnecessary, and the description names the key fields anyway. Complete enough to invoke correctly among many setup siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four params including the approval_id flow. The description mentions no per-parameter detail beyond the Resources/ plist destination. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Set up) and named resource (Firebase Analytics: GCP project, iOS app, GoogleService-Info.plist into Resources/), plus the write target. Distinguishes from siblings like setup_credentials and setup_services by naming exactly what it provisions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when: once per app (mandatory for every app)' plus stated prerequisites (gcloud auth and firebase-tools). Clear context and frequency, though it doesn't name specific alternatives among the many sibling setup tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools