Skip to main content

Connect Loopster to Claude Code and other AI tools (MCP)

Loopster has a hosted MCP server, so an AI tool such as Claude Code can work with your tables, and some of what it can do spends from your wallet.

Written by Umer Ishaq

What is the Loopster MCP server?

The MCP server lets an AI agent use Loopster for you. In October 2026 it has 92 tools. They cover:

  • tables, workbooks and folders

  • columns and rows

  • imports and exports

  • running enrichment and checking progress

  • search for people and companies

  • the wallet and usage

  • Functions

  • views and share links

  • schedules

  • connections, webhooks, contexts and feedback

When you sign in with an API key, the tools work in the workspace that owns the key.

What is the address of the MCP server?

The address is https://app.loopster.ai/api/mcp.

The Endpoint section of the MCP Server page in the Loopster API docs, showing the address <a href="https://app.loopster.ai/api/mcp" rel="nofollow noopener noreferrer" target="_blank">https://app.loopster.ai/api/mcp</a>.

Claude Code connects to this address as an http server.

How do I sign in?

There are two ways to sign in to the MCP server:

  • OAuth sign-in. You sign in through OAuth.

  • API key. Your tool sends the key in the Authorization header, as Authorization: Bearer loopster_sk_….

Both ways use the same address. With an API key you choose the key's role and when it ends, and you can revoke it on its own.

How do I create an API key for an agent?

  1. Open Settings, then Loopster API.

  2. Under Create a key, type a name. The page says "Name it after what will use it. Give it the least access that integration needs."

  3. Pick a role: Member — read only, Editor — read, write and run or Admin — everything an API key can do.

  4. Pick when the key ends: Never expires, Expires in 30 days, Expires in 90 days or Expires in 1 year.

  5. Click Create key.

The Create a key form: a name box, a role menu showing Editor - read, write and run, an expiry menu showing Never expires, an empty Can't start paid work tick box and a Create key button.

A Loopster API key starts with loopster_sk_. The page says: "Keep them secret; do not share them publicly." For every field on the form, see Create and revoke a Loopster API key.

How do I check that a key works?

Call GET /v1/key with the key:

curl https://app.loopster.ai/api/v1/key -H "Authorization: Bearer loopster_sk_…"

A working key gets a reply with "success": true and a key block. The block shows the key's name, its role, when it was created, when it expires and when it was last used. expiresAt is null for a key that never expires. The reply never shows the key itself.

How do I connect Claude Code with OAuth sign-in?

Run this command:

claude mcp add --transport http loopster https://app.loopster.ai/api/mcp

The Claude Code command from the MCP Server page in the Loopster API docs: claude mcp add --transport http loopster <a href="https://app.loopster.ai/api/mcp" rel="nofollow noopener noreferrer" target="_blank">https://app.loopster.ai/api/mcp</a>.

Claude Code now has Loopster as an http server with that address. The command has no Authorization header, so it does not send an API key. The MCP Server page in the Loopster API docs shows this command for OAuth sign-in.

How do I connect Claude Code with an API key?

  1. Create a key, as shown above.

  2. Run this command. Replace loopster_sk_… with your key.

claude mcp add --transport http loopster https://app.loopster.ai/api/mcp \  --header "Authorization: Bearer loopster_sk_…"

Claude Code now has an http server with that address and an Authorization header that holds your key. Keep your Claude Code configuration private.

How do I check that the connection works?

Ask your agent for something that only reads, such as "List my Loopster tables." The matching tool is list_tables. It lists the tables in the workspace that owns the API key.

How do I connect another AI tool?

The steps depend on the tool, so this article shows Claude Code only. If your tool lets you add an MCP server by address, give it:

  1. The address https://app.loopster.ai/api/mcp.

  2. For an API key, the header Authorization: Bearer loopster_sk_….

Can a connected agent spend from my wallet?

Yes. The wallet holds real dollars, not credits. The descriptions of these tools say they can spend from it:

  • trigger_rows runs enrichment. Without rowIds it runs every row in the table.

  • run_function runs a Function. Every step inside it bills as it would in a table, for every input.

  • run_capability runs one enrichment action on one input or on a list of up to 1,000. Each input bills as the same column would in a table, unless it runs on your own connection.

  • insert_rows spends only when the table's Auto-run is on. The MCP tools call this setting autoplay. When it is on, inserting rows also starts enrichment.

  • create_table spends for every starter type except blank, webhook and search. The other starter types run a source as part of creating the table, such as google-search, apify-scrape or hubspot-import.

  • update_row and update_cells can spend on a table that has auto-rerun columns. Writing a cell re-queues the columns that read it.

  • create_schedule spends every time the schedule fires, with nobody watching, until it is paused or deleted. update_schedule with paused: false starts one again.

What a column costs depends on how it is set up. A column left on a template's defaults runs on those defaults and bills for them. An AI column with no prompt does not run at all. set_provider_default with account: "loopster" makes every column created afterwards for that provider run on Loopster's account and spend from the wallet.

Searching costs nothing: search_people and search_companies are free to call. So are export_table and import_file. But search results are ready to pass to insert_rows, and that call can spend.

How do I keep an agent's spending under control?

  • Start with the narrowest role. Give the agent a key with the least access it needs. Member — read only is the narrowest role. Create a new key with a higher role only when the agent needs it.

  • Switch Auto-run off before an agent inserts rows. In MCP, set_table_autoplay does this. With it off, insert_rows only writes rows, and the new rows do not run or spend until trigger_rows is called. Switching it on later does not run the rows already in the table. get_table shows the current setting. In the app, see Table settings: Auto-run, scheduled reruns and deduplication.

  • Price a run first. estimate_trigger_cost prices a trigger_rows call without running it or spending anything. It returns maxCostUsd, a ceiling and not a forecast, and says how many rows the wallet covers. It leaves out columns whose price cannot be known up front.

  • Set a cap. Send maxCostUsd with trigger_rows. If the estimate is over it, the call is refused and nothing is queued. The cap is checked once, at the start. It is not a meter, and AI columns are estimated from averages, so their real cost can be higher.

  • Run only some rows. Pass rowIds to trigger_rows.

  • Check the wallet. get_wallet shows how much the next run can spend, your plan and any spend limit on the workspace. get_usage shows what the workspace spent, by table, by column or by day. Amounts are US dollars.

  • Set a spend limit on the workspace. Open Settings, then Workspaces, click the workspace and use Set spend limit. See Workspaces: create one and set a spend limit.

  • Retry safely. Give trigger_rows, run_function, run_capability, insert_rows, create_table, update_row and update_cells an idempotencyKey. If a call times out, retry with the same key. You get the first call's answer back, marked replayed: true, and nothing runs or bills twice. A key is remembered for 24 hours.

  • Cut an agent off. Each API key can be revoked on its own. Click Revoke on its row under Settings, then Loopster API.

If the wallet cannot cover every row of a run, rows run in order for as long as the wallet covers them. The rest are refused, not charged, and the wallet is never overdrawn. For more on the wallet, see Your wallet and keeping spend under control.

How do I stop a run that is spending money?

stop_run stops processing for a whole table. cancel_run cancels one run by its runId. Neither is a refund. Work that was already charged stays charged, and work that is already running finishes and is billed.

stop_run reports stillRunning, the number of cells that may still run and bill. If stillRunning is null, it means unknown, not zero.

Which tools need an Editor or Admin key?

Some tool descriptions name the role they need. If your key's role is lower, the call is refused with a 403. This list covers API keys. Tools that are not in it can check a role too.

  • Editor key: create_function, open_function_sandbox, add_function_input, update_function_input, remove_function_input, set_function_outputs, add_function_step, update_function_step, delete_function_step, create_share_link, list_share_links, revoke_share_link, set_provider_default, clear_provider_default, remove_connection, get_table_webhook and rotate_table_webhook.

  • Admin key: set_function_agent_access. Also publish_function when it goes live (a dry run works with an Editor key), and delete_function for a published function (a draft needs only an Editor key).

A new function is always a draft. No agent can run it until an Admin key calls publish_function and set_function_agent_access.

What can't an agent do through MCP?

An agent cannot do these through MCP:

  • Create an API key. Keys are made in the app, under Settings, then Loopster API.

  • Add a connection. list_connections says connections are added in Loopster's UI. remove_connection refuses OAuth connections such as HubSpot and Slack, which are removed in the app.

  • Create a context. list_contexts says contexts are created in Loopster's UI.

  • Rotate a webhook's signing secret. There is no MCP tool for it.

Troubleshooting

My agent gets a 401

What you see: A call is refused with HTTP 401. If the key has expired, the answer also has code: key_expired, and the error text has the expiry date.

Why it happens: Loopster answers 401 when the Authorization header is missing, and when the key is past its expiry date.

What to do: Check that the header is Authorization: Bearer loopster_sk_… and that it holds your key. Open Settings, then Loopster API. Each key shows when it expires. If the key has expired, create a new one and use it instead. You can test a key with GET /v1/key, as shown above.

A tool is refused with a 403 and requiredRole

What you see: A call is refused with HTTP 403. The answer carries requiredRole, the role the call needs, and role, the role your key holds.

Why it happens: The key is valid, but its role is below what the tool needs.

What to do: Create a new key with the role in requiredRole, under Settings, then Loopster API. Give it no more access than the agent needs.

The agent does not see a table I can see in the app

What you see: list_tables does not list the table, or a call that names it is refused or reports that it cannot be found.

Why it happens: A key belongs to one workspace. The tools work in the workspace that owns the key, and a call that reaches for another workspace's resource is refused.

What to do: Find out which workspace holds the table. Click your avatar at the top right to switch workspaces, then open Settings, then Loopster API, and create a key there. A workspace's own settings page lists its keys too. If the table is in the right workspace and a call is still refused with a 403, the table's API access may be switched off. Ask support.

A run is refused with a 402

What you see: A call that would start paid work is refused with HTTP 402. The answer has a code, requiredUsd and spendableUsd. Nothing was created, queued or charged.

Why it happens: The code says which limit refused it:

  • insufficient_balance: the wallet cannot cover even the first row.

  • workspace_limit: the workspace's own spend limit leaves less than the wallet.

  • daily_cogs_limit: the account reached its daily spend safety limit.

What to do: For insufficient_balance, click the wallet button at the top right, then Manage wallet. The Wallet tab has a Top up button. Or ask for less. See Top up your wallet, set auto top-up and read your funds history. For workspace_limit, open Settings, then Workspaces, click the workspace and change its Spend limit. For daily_cogs_limit, topping up does not help. The limit resets at midnight UTC, and Loopster support can raise it.

My agent spent money I did not expect

What you see: Your balance dropped after an agent inserted rows, wrote cells or created a schedule.

Why it happens: insert_rows starts enrichment when the table's Auto-run is on. Writing a cell on a table with auto-rerun columns re-queues the columns that read it. A schedule runs on its own every time it fires.

What to do: Stop the queued work with stop_run. Switch Auto-run off with set_table_autoplay, so that later inserts do not start runs. Pause a schedule with update_schedule and paused: true, or remove it with delete_schedule. Deleting a schedule does not stop a run it already started. stop_run does that. To see what was spent, use get_usage, or open Settings, then Usage. See See where your spend goes on the Usage page.

An insert worked but nothing was enriched

What you see: insert_rows says rows were inserted, but the cells stay empty. The answer's enrichment field says none, not_started or unknown.

Why it happens: An insert can succeed while the enrichment it should start does not. The rows are stored in every case.

  • none: nothing was meant to run.

  • not_started: Loopster could not hand the run to its workers.

  • unknown: the run was sent but not confirmed, so the rows may be running.

What to do: On not_started, call trigger_rows with the ids in rowsToTrigger. Do not insert the rows again. On unknown, call get_status before you trigger anything, so the rows do not run twice. On none, see Why didn't my column run?.

I get a 429

What you see: A call is refused with HTTP 429. Nothing was done.

Why it happens: A rate limit was reached. Calls made through MCP count toward the workspace's API rate limits, like other authenticated calls. The code says which wait it is, for example:

  • rate_limited: a rate limit was reached.

  • search_concurrency: too many searches are running at once.

  • search_busy: Loopster Data itself is busy.

What to do: Wait, then send the call again. The 429 answer has a Retry-After header with the number of seconds to wait. For search_concurrency, wait briefly.

Good to know

  • An access token from the OAuth sign-in is not an API key. GET /v1/key answers 400 when you call it with that token.

  • Amounts the wallet tools return are US dollars.

  • send_feedback sends a message to the Loopster team. It does not open a support ticket, and nothing answers it in the conversation. Do not put secrets or personal data in it. To talk to a person, click Need Help? at the top right of any page.

  • The API Docs link at the bottom of the Settings sidebar goes to docs.loopster.ai. For every tool and its parameters, see MCP Tools. For the endpoint and the Claude Code command, see MCP Server.

More about the API and MCP

Did this answer your question?