Welcome To The Foreman Knowledge Base

How To: Add Delete Support to Claude for Foreman Intelligence

Out of the box, the Claude connector for Foreman Intelligence can build and change Looks and dashboards but can't remove them. This optional add-on gives Claude a small set of delete tools so you can clean up by asking, the same way you build. It's separate from the main setup guide because it takes a bit more config editing and the deletes it enables are permanent.

Audienceanyone who finished the main guide
Setup time~10 minutes
Requiresa working Claude connector

Pick the same operating system and Claude app you set up in the main guide, and every step below adjusts to show only the instructions for your combination.

System

1What this adds, and whether you need it

The MCP connector deliberately ships without any delete tools. It can create, update, and query Looks and dashboards, but nothing it does can remove content from Foreman Intelligence. This add-on fills that gap with five small tools backed directly by the Looker API. Once they're loaded, deleting works exactly like everything else: you ask, Claude looks up the exact object, confirms it with you, and removes it.

With the add-on, Claude can:

  • Delete a Look you no longer need
  • Delete a whole dashboard
  • Remove a single tile from a dashboard without touching the rest of it
  • Remove a filter from a dashboard
You can skip this entirely

Everything in the main setup guide works without this add-on. If you only clean up occasionally, deleting by hand in Foreman Intelligence costs you very little: find the Look or dashboard, open its menu, and choose Move to Trash. Ask Claude for the link and the exact name if you're not sure which one it made.

Skipping is also the safer choice. Content you trash in the UI can be recovered by an admin. The API deletes this add-on enables skip the trash and are permanent.

2Before you start

  • You've finished the main guide through Verify it's working, so Claude already answers questions about your Foreman Intelligence models
  • You know which config file holds your "looker-toolbox" entry: for Claude Code it's ~/.claude.json%USERPROFILE%\.claude.json: for Claude Desktop it's claude_desktop_config.json, reached from Settings → Developer → Edit Config
  • You know your account's username on this computer. Run whoami in TerminalPowerShell (use only the part after the backslash) if you're not sure

3Save the tools file

Save this as ~/.claude/looker-delete-tools.yaml%USERPROFILE%\.claude\looker-delete-tools.yaml. The .claude folder already exists if you've set up the connector; create the file inside it with any plain text editor. Copy the whole block exactly as it is, including the last section that starts with kind: toolset.

kind: source
name: looker-rest
type: http
baseUrl: ${LOOKER_BASE_URL}/api/4.0
---
kind: tool
name: looker_get_token
type: http
source: looker-rest
method: POST
path: /login?client_id=${LOOKER_CLIENT_ID}&client_secret=${LOOKER_CLIENT_SECRET}
description: |
  Get a short-lived Looker API access token (expires in about an hour).
  Call this first, then pass the returned access_token value as
  "Bearer <access_token>" into the Authorization parameter of
  delete_look, delete_dashboard, delete_dashboard_element, or
  delete_dashboard_filter.
---
kind: tool
name: delete_look
type: http
source: looker-rest
method: DELETE
path: /looks/{{.lookId}}
description: |
  Permanently delete a Look by id. This cannot be undone. Look it up
  first (e.g. with get_looks) and confirm the exact name and id with
  the user before calling this. Call looker_get_token first for the
  Authorization value.
pathParams:
  - name: lookId
    type: string
    description: The id of the Look to delete, from get_looks.
headerParams:
  - name: Authorization
    type: string
    description: Bearer token from looker_get_token, e.g. "Bearer <access_token>".
---
kind: tool
name: delete_dashboard
type: http
source: looker-rest
method: DELETE
path: /dashboards/{{.dashboardId}}
description: |
  Permanently delete a dashboard by id. This skips the trash the
  Looker UI normally uses and cannot be undone. Look it up first
  (e.g. with get_dashboards) and confirm the exact name and id with
  the user before calling this. Call looker_get_token first for the
  Authorization value.
pathParams:
  - name: dashboardId
    type: string
    description: The id of the dashboard to delete, from get_dashboards.
headerParams:
  - name: Authorization
    type: string
    description: Bearer token from looker_get_token, e.g. "Bearer <access_token>".
---
kind: tool
name: delete_dashboard_element
type: http
source: looker-rest
method: DELETE
path: /dashboard_elements/{{.dashboardElementId}}
description: |
  Permanently remove a single tile from a dashboard, without deleting
  the whole dashboard. Confirm the exact tile and dashboard with the
  user first. Call looker_get_token first for the Authorization value.
pathParams:
  - name: dashboardElementId
    type: string
    description: The id of the dashboard tile (element) to remove.
headerParams:
  - name: Authorization
    type: string
    description: Bearer token from looker_get_token, e.g. "Bearer <access_token>".
---
kind: tool
name: delete_dashboard_filter
type: http
source: looker-rest
method: DELETE
path: /dashboard_filters/{{.dashboardFilterId}}
description: |
  Permanently remove a filter from a dashboard. Confirm the exact
  filter and dashboard with the user first. Call looker_get_token
  first for the Authorization value.
pathParams:
  - name: dashboardFilterId
    type: string
    description: The id of the dashboard filter to remove.
headerParams:
  - name: Authorization
    type: string
    description: Bearer token from looker_get_token, e.g. "Bearer <access_token>".
---
kind: toolset
name: looker_delete_tools
description: Delete operations for Foreman Intelligence, backed directly by the Looker REST API.
tools:
- looker_get_token
- delete_look
- delete_dashboard
- delete_dashboard_element
- delete_dashboard_filter

4Point the connector at it

Open the config file holding your "looker-toolbox" entry (~/.claude.json%USERPROFILE%\.claude.jsonclaude_desktop_config.json, via Settings → Developer → Edit Config) and add a --config flag pointing at the tools file, right after --prebuilt looker. Nothing else in the entry changes, you just extend the "args" list:

Replace the username in the path

your-username below is not a real folder. It has to be your Mac account's short name, the one in your home folder path. Run whoami in Terminal to see it. If your username is jsmith, the path is /Users/jsmith/.claude/looker-delete-tools.yaml. Leaving the placeholder in is the most common reason the connector stops working after this step.

your-username below is not a real folder. It has to be your Windows account name, the one in your C:\Users\ folder. Run whoami in PowerShell to see it (use only the part after the backslash). If your username is jsmith, the path is C:\\Users\\jsmith\\.claude\\looker-delete-tools.yaml, keeping the doubled backslashes. Leaving the placeholder in is the most common reason the connector stops working after this step.

"args": [
  "--stdio", "--prebuilt", "looker",
  "--config", "/Users/your-username/.claude/looker-delete-tools.yaml"
]
"args": [
  "--stdio", "--prebuilt", "looker",
  "--config", "C:\\Users\\your-username\\.claude\\looker-delete-tools.yaml"
]

Save the file. Don't restart Claude yet, the next step checks your work first.

5Check it, then restart Claude

Before restarting, confirm the tools file parses by running the connector by hand. It should print a line saying it initialized 23 tools and 3 toolsets, then wait for input (press Ctrl+C to stop it). If it prints an error about the config file instead, the path or the YAML needs fixing:

/opt/homebrew/bin/toolbox --stdio --prebuilt looker --config ~/.claude/looker-delete-tools.yaml
& "$env:LOCALAPPDATA\mcp-toolbox\toolbox.exe" --stdio --prebuilt looker --config "$env:USERPROFILE\.claude\looker-delete-tools.yaml"

Once that looks right, restart any open Claude Code sessionfully quit and reopen Claude Desktop for the change to take effect. Deleting is just another MCP tool at this point, so it works the same in both Claude apps.

6Try it out

Ask normally, the same way you'd ask for a new dashboard. A few examples:

  • Delete the dashboard called "Old Ops Overview".
  • Remove the "Tickets by priority" tile from the Ops Overview dashboard.
  • Delete the Look I made yesterday about reboot counts.

Claude will look the object up, confirm the exact name and id with you, then handle the rest itself. If it says it has no delete tools, see Troubleshooting below.

This is permanent

These delete calls skip the trash the Looker UI normally uses, so there's no undo. Claude is instructed to always confirm the exact object with you first, but it's worth double-checking yourself before agreeing.

7Removing the add-on

If you'd rather go back to a connector that can't delete anything, open the same config file from Step 4 and remove the --config flag and the path that follows it from the "args" list, so it ends with "--prebuilt", "looker" again. Restart your Claude Code sessionQuit and reopen Claude Desktop and the delete tools are gone. You can leave the YAML file where it is or delete it, nothing reads it without the flag.

8Troubleshooting

SymptomLikely cause
looker-toolbox shows Connection closed or "failed to connect" after adding the flag The connector is exiting on startup, almost always because of the --config flag. Two common causes: the path still says your-username instead of your real account name, or the last block of the YAML says kind: group instead of kind: toolset. Run the check command from Step 5 to see the exact error. Removing the --config flag and its path (Step 7) gets you back to a working connector without the delete tools
Claude doesn't have delete_look/delete_dashboard tools The --config flag or file path has a typo, the YAML file has a formatting error, or Claude wasn't fully restarted. Check the path matches exactly where you saved the file, run the check command from Step 5, then restart again
Delete request returns 404 The id doesn't match an existing object. Ask Claude to look it up again with get_dashboards/get_looks rather than guessing it
Delete request returns 403 Your Foreman Intelligence account doesn't have permission to delete that content. The same restriction would apply in the Looker UI, so check with your Looker admin
Something else broke after this change Anything not about deleting is covered in the main guide's Troubleshooting section
Good to know

The delete tools call the same Looker API your own account already has access to, through the connector running on your machine. Claude can't delete anything you couldn't delete yourself in Foreman Intelligence.

Questions or issues with this setup should go to whoever administers Foreman Intelligence access on your team.

Was this article helpful?

0 out of 0 found this helpful

Have more questions? Submit a request

Comments

0 comments

Please sign in to leave a comment.