Firebase Credential Capture
Sixty seconds. One copy. One paste. One press of Enter. The MCP figures out the rest.
The workflow builder tools in GHL Command use GHL's internal API. To talk to it, the MCP server needs three values that live in your GHL browser session. v3.25.0 added a one-paste flow — you copy a small script, paste it into Chrome DevTools, and the three values get extracted and copied to your clipboard automatically. No more digging through IndexedDB.
Heads up: use Chrome (or any Chromium browser like Edge or Brave). Safari and Firefox have different DevTools layouts.
1 Open GHL in Chrome and log in
Go to app.gohighlevel.com and sign in normally. You need to be in any sub-account view (not agency).
2 Open DevTools and go to the Console tab
Press Cmd + Option + I on Mac, or F12 on Windows. A panel opens. Click the Console tab at the top of that panel.
3 Paste this script and press Enter
Click the button to copy. Then paste into the Console (the field with the > prompt) and press Enter.
(async () => {
try {
const db = await new Promise((res, rej) => {
const r = indexedDB.open('firebaseLocalStorageDb');
r.onsuccess = () => res(r.result);
r.onerror = () => rej(r.error);
});
const tx = db.transaction('firebaseLocalStorage', 'readonly');
const store = tx.objectStore('firebaseLocalStorage');
const rows = await new Promise((res, rej) => {
const r = store.getAll();
r.onsuccess = () => res(r.result);
r.onerror = () => rej(r.error);
});
const row = rows.find(r => typeof r?.fbase_key === 'string' && r.fbase_key.startsWith('firebase:authUser:AIza'));
if (!row) {
console.log('%cGHL Command: no Firebase login found.', 'color:red;font-weight:bold');
console.log('Open a tab logged into your GHL account, then run this again in that tab.');
return;
}
const v = row.value || {};
const out = {
ghl_firebase_api_key: v.apiKey,
ghl_user_id: v.uid,
ghl_firebase_refresh_token: v.stsTokenManager?.refreshToken,
};
if (!out.ghl_firebase_api_key || !out.ghl_user_id || !out.ghl_firebase_refresh_token) {
console.log('%cGHL Command: found Firebase login but a field was missing.', 'color:red;font-weight:bold');
console.log('Try logging out of GHL and back in, then run this again.');
return;
}
const json = JSON.stringify(out, null, 2);
console.log('%cGHL Command: paste this into setup_ghl_mcp (firebase_paste field):', 'color:green;font-weight:bold');
console.log(json);
try {
await navigator.clipboard.writeText(json);
console.log('%cAlready copied to your clipboard — Cmd+V / Ctrl+V to paste.', 'color:green');
} catch (e) {
console.log('%cCopy it manually from above (clipboard access not granted).', 'color:orange');
}
} catch (err) {
console.log('%cGHL Command: script error.', 'color:red;font-weight:bold');
console.log(err);
}
})();
When it works, you'll see a green message and a JSON block in the Console. That JSON is already on your clipboard.
4 Paste into Claude
Switch back to Claude. If this is your first time:
Run setup_ghl_mcp: email: YOUR_PURCHASE_EMAIL license_key: YOUR_LICENSE_KEY ghl_api_key: pit-... ghl_location_id: YOUR_LOCATION_ID firebase_paste: PASTE_THE_JSON_HERE
If you've already run setup_ghl_mcp and just need to add Workflow Builder later (or refresh after a token rotation):
Run enable_workflow_builder: firebase_paste: PASTE_THE_JSON_HERE
Approve the tool call. Quit Claude and reopen. All 212 tools are now live — the 9 workflow builder tools, plus 40 more Firebase-gated tools across funnel/page builder, form builder, pipeline builder, workflow cloner, smart lists, reputation, email campaigns, email templates, memberships, snippets, and validate_workflow.
Don't put these in your config file. Firebase values do not go in the env block of your claude_desktop_config.json. That path is unreliable and is the most common reason health_check still shows “Firebase: SKIP” after a restart. Always add them with setup_ghl_mcp or enable_workflow_builder — it validates and saves them for you.
Refresh tokens can rotate. If your workflow tools stop working after a few weeks (run health_check in Claude to see “Firebase auth: FAIL”), come back here, re-run the script in Step 3, and re-run enable_workflow_builder with the fresh paste.
Manual capture (if the console script doesn't work in your browser)
Some locked-down browsers block navigator.clipboard.writeText or restrict IndexedDB script access. If the script above fails, you can still grab the three values by hand:
- In DevTools, click Application tab, expand IndexedDB in the left sidebar.
- Click through:
firebaseLocalStorageDb→firebaseLocalStorage. - Find the row whose Key starts with
firebase:authUser:. - Firebase API key — the part of the Key between
firebase:authUser:and:[DEFAULT], starts withAIza. - User ID — click into the row's Value column, find the
uidfield. - Refresh token — in the same Value object, expand
stsTokenManager, copyrefreshToken. - Pass them as
ghl_user_id,ghl_firebase_api_key,ghl_firebase_refresh_tokentosetup_ghl_mcporenable_workflow_builder.