Google Looker connector
OAuth 2.0 AnalyticsDatabasesProductivityConnect to Google Looker or self-hosted Looker Core. Browse dashboards, run Looks, query LookML models, and access BI data programmatically.
Google Looker connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Set up the connector
Section titled “Set up the connector”Register your Google Looker credentials with Scalekit so it handles the token lifecycle. You do this once per environment.
Dashboard setup steps
Register your Scalekit environment with the Google Looker connector so Scalekit handles the OAuth flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically.
-
Create a Google Looker instance
Google Looker (Google Cloud core) runs as a managed service in your Google Cloud project. You must create an instance before setting up OAuth credentials.
-
Go to Google Cloud Console and select or create a project.
-
In the navigation menu, go to Looker (or search for “Looker” in the search bar).
-
Click Create Instance and follow the setup wizard. Note your instance hostname — it will look like
your-company.cloud.looker.com. You will need this when adding connected accounts in Scalekit.
-
-
Create OAuth credentials in Google Cloud Console
Google Looker uses Google OAuth 2.0. You need OAuth client credentials from the same Google Cloud project that hosts your Looker instance.
-
In Google Cloud Console, go to APIs & Services > Credentials.
-
Click Create Credentials > OAuth client ID.
-
Select Web application as the application type.
-
Copy the redirect URI from Scalekit (see next step) and paste it under Authorized redirect URIs.
-
Click Create. Copy the Client ID and Client Secret.
-
-
Add credentials in Scalekit
-
In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Search for Google Looker and click Create.

-
Copy the Redirect URI shown on the configuration page. Go back to Google Cloud Console and add this URI to your OAuth client’s authorized redirect URIs.
-
Return to Scalekit and enter your credentials:
- Client ID (from Google Cloud Console)
- Client Secret (from Google Cloud Console)

-
Keep Access Type set to Offline to receive a refresh token for long-lived access.
-
Click Save.
-
-
Add a connected account
Each end-user who connects their Looker instance needs a connected account. The Looker Instance Hostname is required — this is the hostname of the Looker instance the user is accessing (without
https://), for exampleyour-company.cloud.looker.com.Via the Scalekit dashboard (for testing)
- Go to Connected Accounts > Add Account.
- Enter the User ID and Looker Instance Hostname, then click Save.
- Complete the Google OAuth flow in the popup to authorize access.
Via the SDK (for production)
Generate an authorization link and redirect your user to it. After the user authorizes, Scalekit stores the token automatically.
const { link } = await scalekit.actions.getAuthorizationLink({connectionName: 'googlelooker',identifier: 'user_123',state: { instanceUrl: 'your-company.cloud.looker.com' },})// Redirect the user to `link` to complete OAuth
-
-
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'googlelooker'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Google Looker:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'googlelooker_list_dashboards',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "googlelooker"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Google Looker:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="googlelooker_list_dashboards",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Run look, inline query — Run a saved Look and return the results in the specified format
- List models, looks, folders — List all available LookML models in the Looker instance
- Get look results, dashboard — Run a saved Look and return results in the specified format
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
googlelooker_get_dashboard
#
Retrieve the full metadata of a Looker dashboard by its ID, including all tile definitions (charts, tables, text, filters), layout, linked Looks, and underlying queries. 2 params
Retrieve the full metadata of a Looker dashboard by its ID, including all tile definitions (charts, tables, text, filters), layout, linked Looks, and underlying queries.
dashboard_id string required The ID of the Looker dashboard to retrieve fields string optional Comma-separated list of dashboard fields to include in the response googlelooker_get_look_results
#
Run a saved Look and return results in the specified format. Executes the Look's underlying query against the connected database. Use result_format to control the output: json for structured data, csv for tabular export, xlsx for Excel. 14 params
Run a saved Look and return results in the specified format. Executes the Look's underlying query against the connected database. Use result_format to control the output: json for structured data, csv for tabular export, xlsx for Excel.
look_id string required The numeric ID of the Look to fetch results from result_format string required Desired output format for results. Accepted values: json, json_detail, json_bi, csv, txt, html, md, xlsx, sql, png, jpg apply_formatting boolean optional Apply model-specified formatting to each result value apply_vis boolean optional Apply visualization options to results cache boolean optional Get results from cache if available. Set to false to force a fresh database query. cache_only boolean optional Retrieve any results from cache even if expired force_production boolean optional Override development mode settings to force use of production models generate_drill_links boolean optional Generate drill links for json_detail format image_height integer optional Render height for image formats (png, jpg) image_width integer optional Render width for image formats (png, jpg) limit integer optional Maximum number of rows to return. May override the limit in the saved query. path_prefix string optional Prefix to use for drill links (URL encoded) rebuild_pdts boolean optional Rebuild Persistent Derived Tables (PDTs) used in the query server_table_calcs boolean optional Perform table calculations on query results server-side googlelooker_list_dashboards
#
List all dashboards in a Looker instance that the caller has access to. Returns dashboard metadata including ID, title, folder, description, and last updated time. 1 param
List all dashboards in a Looker instance that the caller has access to. Returns dashboard metadata including ID, title, folder, description, and last updated time.
fields string optional Comma-separated list of dashboard fields to include in the response googlelooker_list_explores
#
Retrieve a LookML model by name. The response includes an explores array listing all available explores in that model. Use fields=explores to limit the response to just explore metadata. 2 params
Retrieve a LookML model by name. The response includes an explores array listing all available explores in that model. Use fields=explores to limit the response to just explore metadata.
model_name string required The LookML model name to retrieve explores for fields string optional Comma-separated list of model fields to include in the response googlelooker_list_folders
#
List all folders (spaces) in the Looker instance including personal folders. Returns folder ID, name, parent folder, creator, and content counts. Use folder IDs to filter Looks and Dashboards by location. 1 param
List all folders (spaces) in the Looker instance including personal folders. Returns folder ID, name, parent folder, creator, and content counts. Use folder IDs to filter Looks and Dashboards by location.
fields string optional Comma-separated list of folder fields to include in the response googlelooker_list_looks
#
List all Looks the caller has access to. Returns Look metadata including ID, title, folder, owner, and last run time. Soft-deleted Looks are excluded. 4 params
List all Looks the caller has access to. Returns Look metadata including ID, title, folder, owner, and last run time. Soft-deleted Looks are excluded.
fields string optional Comma-separated list of Look fields to include in the response limit integer optional Maximum number of Looks to return offset integer optional Number of results to skip before returning any sorts string optional Comma-separated list of fields to sort results by googlelooker_list_models
#
List all available LookML models in the Looker instance. Returns each model's name, project, allowed database connections, and explore count. Use this to discover which models and explores are available before running queries. 1 param
List all available LookML models in the Looker instance. Returns each model's name, project, allowed database connections, and explore count. Use this to discover which models and explores are available before running queries.
fields string optional Comma-separated list of model fields to include in the response googlelooker_run_inline_query
#
Execute an ad-hoc query against a LookML model and explore without saving it as a Look. Specify fields, filters, sorts, and a row limit. Useful for one-off analysis and agent-driven data exploration. Complex queries may take longer; 120s timeout applied. 7 params
Execute an ad-hoc query against a LookML model and explore without saving it as a Look. Specify fields, filters, sorts, and a row limit. Useful for one-off analysis and agent-driven data exploration. Complex queries may take longer; 120s timeout applied.
fields string required Comma-separated list of LookML field names to include (e.g., orders.count,orders.total_revenue) model string required The LookML model name to query against result_format string required Output format for the query results. Accepted values: json, json_detail, json_bi, csv, txt, html, md, xlsx, sql, png, jpg view string required The explore (view) name within the model to query filters object optional Filter conditions as a JSON object (field_name: filter_value pairs) limit integer optional Maximum number of rows to return from the query sorts string optional Comma-separated list of sort fields with optional direction (e.g., orders.total_revenue desc) googlelooker_run_look
#
Run a saved Look and return the results in the specified format. Executes the Look's underlying query against the connected database and returns the current data. 14 params
Run a saved Look and return the results in the specified format. Executes the Look's underlying query against the connected database and returns the current data.
look_id string required The numeric ID of the Look to run result_format string required Desired output format for results. Accepted values: json, json_detail, csv, txt, html, md, xlsx, sql, png, jpg apply_formatting boolean optional Apply model-specified formatting to each result value apply_vis boolean optional Apply visualization options to results cache boolean optional Get results from cache if available. Set to false to force a fresh database query. cache_only boolean optional Retrieve any results from cache even if expired force_production boolean optional Override development mode settings to force use of production models generate_drill_links boolean optional Generate drill links for json_detail format image_height integer optional Render height for image formats (png, jpg) image_width integer optional Render width for image formats (png, jpg) limit integer optional Maximum number of rows to return. May override the limit in the saved query. path_prefix string optional Prefix to use for drill links (URL encoded) rebuild_pdts boolean optional Rebuild Persistent Derived Tables (PDTs) used in the query server_table_calcs boolean optional Perform table calculations on query results server-side