Skip to main content

What an AI tool can do in Loopster (MCP tools)

Loopster's MCP server gives an AI tool 92 tools. This article groups them by job, says which ones can spend from your wallet and shows a safe order to use them in.

Written by Umer Ishaq

What do I need before an AI tool can use these tools?

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

  • The AI tool signs in through OAuth, or it sends an API key in the header Authorization: Bearer loopster_sk_….

  • You make a key in the app. Open Settings, then Loopster API. See Create and revoke a Loopster API key.

  • With an API key, the tools work in the one workspace that owns the key.

  • A key has a role: Member — read only, Editor — read, write and run or Admin — everything an API key can do. Some tools need an Editor or Admin key. See "Which tools need more than a Member key?" below.

Which tools does the server have?

The server has 92 tools. This section lists all of them, grouped by job. A line says so when a tool can spend from your wallet. "Which tools can spend from my wallet?" further down lists them in one place.

Find tables and data

These tools look things up.

  • list_tables: lists the tables in your workspace, newest first.

  • get_table: shows one table with its columns and its settings, including Auto-run (the tools call it autoplay).

  • list_workbooks: lists your workbooks. Every table is in exactly one workbook.

  • list_folders: lists your folders. A folder holds workbooks.

  • list_columns: lists a table's columns and how each one is set up.

  • list_views: lists a table's saved views. An empty list is normal.

  • list_contexts: lists the ICPs, company descriptions and tier lists that columns read. It shows titles and kinds, not the text.

Tables and columns

These tools create and change tables, columns and views.

  • create_table: makes a table. Blank, webhook and search tables are free. Any other starter type runs its source while the table is created, and spends from your wallet.

  • rename_table: changes a table's title.

  • delete_table: moves a table to Trash. It does not stop work that is already running, so call stop_run first.

  • move_table: files a table into a workbook.

  • create_workbook: makes an empty workbook, at the top level or in a folder.

  • move_workbook: moves a workbook and its tables into a folder.

  • create_folder: makes an empty folder.

  • set_table_autoplay: turns the table's Auto-run on or off. Switching it on does not run the rows already in the table.

  • set_table_auto_dedupe: skips or deletes rows whose value in one column matches another row's.

  • set_table_create_columns_from_keys: lets a new key in inserted rows become a new column. It is off by default.

  • list_column_templates: lists the templates you can create columns from. You can filter by type, provider or tab.

  • get_column_template: shows one template with its settings and defaults.

  • create_column: makes a column from a template. An AI column made from a model template has no prompt, and it does not run until you set one.

  • create_columns: makes up to 20 columns in one call. It is all or nothing.

  • update_column: changes a column's header or setup. A column's setup decides what it costs, so set it before you run it.

  • delete_column: deletes a column and all its cells.

  • create_view and update_view: save how a table is displayed, with its own filters, sort order and visible columns. update_view replaces the filters, sorting or visible columns you send. It does not merge them.

  • delete_view: deletes a saved view.

Rows and files

These tools read and write rows, and move files in and out.

  • insert_rows: adds rows. One call carries at most 25,000 rows. If the table's Auto-run is on, inserting also starts enrichment and spends from your wallet.

  • list_rows: reads rows a page at a time, with each cell's status and any error.

  • get_row: reads one row in full, with every cell's value and status, and the error message if a cell failed.

  • update_row: writes values into one row. Its description says that on a table with auto-rerun columns, writing a cell also re-queues the columns that read it, which spends from your wallet.

  • update_cells: writes many cells across rows in one call. On a table with auto-rerun columns, it re-queues the columns that read the changed cells in the same way as update_row, which spends from your wallet.

  • delete_rows: deletes rows by id. There is no "delete every row" form.

  • create_upload_link: gives you an address to upload one CSV or JSON-lines file.

  • import_file: imports an uploaded file into a table and returns a jobId. It starts no enrichment and costs nothing.

  • get_job: checks an import. Call it until status is complete or failed.

  • export_table: exports a table, or what one view shows, as csv or jsonl. It costs nothing.

  • get_export: checks an export and gives the download link when it is complete. The link works for an hour at most.

Running and results

These tools start enrichment and show what happened.

  • estimate_trigger_cost: prices a run without running it or spending anything.

  • trigger_rows: starts enrichment on rows and returns a runId straight away. It spends from your wallet. Without rowIds it runs every row in the table.

  • get_run: reports on one run.

  • get_status: reports progress for the whole table, including other runs.

  • list_run_items: shows each row's state in one run.

  • list_runs: lists your workspace's runs, newest first.

  • stop_run: stops all ongoing processing for a table. It does not refund work that was already charged.

  • cancel_run: cancels one run by its runId. It removes that run's queued work.

  • get_waterfall_trace: explains why a waterfall cell is empty or holds something unexpected, including every provider the waterfall tried, in order. It only reads. It never re-runs anything.

Functions

A function is a reusable workflow. A new function is always a draft. To let agents run it, an admin key calls publish_function and then set_function_agent_access. A capability is a single enrichment action you can run without building a table.

Running:

  • list_functions: lists the functions that are published, active and open to agents.

  • run_function: runs a function on one input or a list of up to 1,000. It spends from your wallet.

  • get_function_run: checks a function run. Poll it until status is no longer running.

  • list_capabilities: lists the enrichment actions you can run without a table. The list is the same for every workspace.

  • run_capability: runs one enrichment action on one input or a list of up to 1,000, with no table. It spends from your wallet unless it runs on your own connection.

Building:

  • create_function: creates a function as a draft.

  • get_function: shows one function in any state, drafts included.

  • open_function_sandbox: opens a sandbox, which is a copy of the function's steps that you edit. What callers run stays the same until you publish.

  • add_function_input, update_function_input and remove_function_input: change the function's inputs. They need an open sandbox.

  • add_function_step, update_function_step and delete_function_step: change the function's steps in the open sandbox. Only some kinds of step can be added this way. Anything else is refused by name and nothing is stored.

  • set_function_outputs: sets the whole list of columns the function sends back.

  • publish_function: makes the draft live. A live publish needs an admin key. Call it with dryRun: true first, which an editor key may do.

  • set_function_agent_access: opens a function to agents, or closes it. It needs an admin key.

  • delete_function: moves a function to Trash for 30 days.

Search

These tools find people and companies in Loopster Data.

  • list_search_filters: lists the filters for people or companies and the values each one accepts. Call it before you search.

  • search_people: finds people. It returns up to 50 records per call and is free to call.

  • search_companies: finds companies. It returns up to 50 records per call and is free to call.

The records are ready to pass to insert_rows. They carry no email addresses or phone numbers. To get those, add a Loopster Data email or phone finder column to the table.

Webhooks

There are two kinds. An outbound webhook makes Loopster call your https URL when one of your runs settles. An inbound webhook gives a table an address that other systems can send rows to.

Outbound:

  • create_webhook: registers an https URL. The only event today is run.settled, and the body never holds cell values.

  • list_webhooks: lists your outbound endpoints. It never shows the whole URL or the signing secret.

  • test_webhook: sends one signed ping now and reports what your receiver answered.

  • list_webhook_deliveries: shows an endpoint's delivery log. It is kept for 30 days.

  • delete_webhook: removes an endpoint and its delivery log.

Inbound:

  • get_table_webhook: tells you whether a table has an inbound address, by its last four characters. It never returns the URL.

  • rotate_table_webhook: makes a new inbound address for a table. The previous address stops working immediately. The new URL is shown only in this answer, so keep it.

Schedules

A schedule re-runs chosen columns on a table.

  • list_schedules: lists a table's schedules. Times are in UTC.

  • create_schedule: runs chosen AI, API or task columns daily, weekly, monthly or at an interval of at least one hour. It spends from your wallet every time it fires, with nobody watching, until you pause or delete it. Use paused: true to save one without starting it.

  • update_schedule: changes a schedule. Setting paused: false starts it again, and it spends from your wallet when it fires.

  • delete_schedule: deletes a schedule. A run it already started is not stopped.

You can open and change these schedules in the app too. Open Table settings and look under Scheduled column reruns. See Table settings: Auto-run, scheduled reruns and deduplication.

Sharing

A share link is public and read-only. Anyone who has it can open the whole table without signing in.

  • create_share_link: makes the link. It can expire anywhere from 60 seconds to a year after you make it, or work until you revoke it.

  • list_share_links: lists the live links, newest first.

  • revoke_share_link: stops a link at once. A revoked link cannot be turned back on.

Money and usage

  • get_wallet: shows how much the next run can spend, your plan and any spend limit on the workspace. Amounts are in US dollars.

  • get_usage: shows what the workspace actually spent, by table, by column or by day.

Connections

Connections are the provider accounts your workspace runs task columns on. You add them in the app, not with a tool.

  • list_connections: lists the accounts your workspace can run task columns on.

  • test_connection: asks the provider whether a saved key is still accepted. It never returns the key.

  • remove_connection: removes a connection that no table uses. It refuses OAuth connections such as HubSpot and Slack. You remove those in the app.

  • list_provider_defaults: shows which account each provider runs on when a column names none.

  • set_provider_default: chooses that account for a provider. Choosing Loopster's account makes the columns you create afterwards run on it and spend from your wallet. Existing columns keep the account they were saved with.

  • clear_provider_default: removes that choice.

Trash

  • list_trash: lists what Trash holds: tables deleted on their own, workbooks and functions. Each one shows the date it is deleted for good.

  • restore_from_trash: brings an item back by its id. A workbook comes back with its tables. Nothing runs and nothing is billed.

Deleted items are kept for 30 days. See Restore deleted tables and functions from the Trash.

Feedback

  • send_feedback: sends a message to the Loopster team about a problem with the API. 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 in the app.

In what order should an AI tool use the tools?

This order prices a run before it starts and tests a few rows before it runs the rest.

  1. Look around. list_tables finds the table. get_table shows its columns and settings. The tool checks Auto-run before any rows go in, because inserting rows into a table with Auto-run on starts enrichment and spends from your wallet.

  2. Add data. For rows, it uses insert_rows. For a file, it uses create_upload_link, uploads the file within two hours, then calls import_file and get_job until the import finishes. For people or companies from Loopster Data, it calls list_search_filters, then search_people or search_companies, then insert_rows with the records.

  3. Set up columns. list_column_templates and create_column add a column. The tool reads the column with list_columns before it changes it with update_column, and it sets the column's prompt or settings before anything runs.

  4. Price the run. estimate_trigger_cost says what the run could cost. Nothing runs.

  5. Run a few rows first. trigger_rows with a few rowIds starts the run and answers at once with a runId.

  6. Follow the run. get_run reports on that run. get_status reports on the whole table. Enrichment can take minutes, so the tool checks again until the run settles. list_run_items shows which rows failed.

  7. Read the results. list_rows shows values with each cell's status and error. get_row shows one row in full. get_status says how many cells errored but not why, so the tool reads the failed row with get_row to get the message. For an empty waterfall cell it can call get_waterfall_trace.

  8. Run the rest, or stop. The tool runs the remaining rows. If something looks wrong, it calls stop_run or cancel_run.

  9. Take the data out. export_table starts the export. get_export gives the download link.

How do I see what a run will cost before it starts?

Ask your AI tool to call estimate_trigger_cost. It takes the same arguments as trigger_rows. It runs nothing and spends nothing.

  • maxCostUsd is a ceiling, not a forecast. It comes with a breakdown for each column.

  • The wallet block shows spendableUsd, how many rows your wallet covers (rowsCovered) and whether the run would start at all (wouldStart).

  • Columns whose price cannot be known before the run are left out of maxCostUsd. unpricedColumns says how many.

  • Run conditions are not evaluated, so fewer rows than quoted may run, never more.

  • Rows whose cells already hold a finished answer are left out, unless you ask for force.

trigger_rows also takes a maxCostUsd cap. If the estimate is higher than the cap, nothing is queued. The cap is a check at the start, not a meter. A run that has started is not stopped part way.

For the same habit in the app, see Your wallet and keeping spend under control.

Which tools can spend from my wallet?

Your wallet holds real dollars, not credits. These tools say they spend from it:

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

  • run_function bills every step inside the function as it would bill in a table, for every input.

  • run_capability bills each input as the same column would bill in a table, unless it runs on your own connection.

  • create_schedule spends every time the schedule fires, with nobody watching, until you pause or delete it. update_schedule with paused: false starts a schedule again, and it spends when it fires.

These tools spend only in some cases:

  • create_table spends when you pick a starter type other than blank, webhook or search.

  • insert_rows spends when the table's Auto-run is on, because inserting then starts enrichment. Rows that another system sends to a table's webhook address are handled in the same way.

  • update_row and update_cells: their descriptions say that on a table with auto-rerun columns, writing a cell re-queues the columns that read it, which spends from your wallet.

  • set_provider_default with Loopster's account makes the columns you create afterwards run on Loopster's account and spend from your wallet.

A column's setup decides what it costs. 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.

These tools and cases cost nothing, as the tool descriptions say:

  • search_people and search_companies.

  • estimate_trigger_cost, which prices a run without running it.

  • export_table.

  • import_file. Importing starts no enrichment.

  • rename_table.

  • restore_from_trash. Nothing runs and nothing is billed.

  • create_view, update_view, create_share_link and list_provider_defaults.

  • set_table_auto_dedupe and set_table_create_columns_from_keys. The switch itself runs and spends nothing.

  • create_table for a blank, webhook or search table.

  • insert_rows on a table with Auto-run off. It only writes rows, and nothing runs or spends until you call trigger_rows.

The tools that build functions are on neither list. In the app, the Add test inputs dialog in the function editor says the steps are charged to your wallet exactly as they are live, so do not assume a test is free. See Functions and Sandbox Mode.

Other tools are on neither list. This article only calls a tool free when its own description says so.

What happens if my wallet runs short?

Paid work holds its worst-case cost from your wallet before it runs, and is charged what it really cost, never more.

  • If a run is bigger than your wallet, rows run in order while the wallet covers them. The rest are refused, not run. Their cells show a not-enough-balance error, and nothing is charged for them. The wallet is never overdrawn.

  • If the wallet cannot cover even the first row, the call is refused before anything is queued.

The API docs describe the same rules for the matching API call, Trigger Processing:

Three points from the API docs on what happens when the wallet runs short: a run bigger than the wallet runs what fits, a run that cannot cover even its first row is refused up front with insufficient_balance, and a dry run shows first how many rows the wallet covers.

How do I stop a run that is spending?

Ask your AI tool to call stop_run for a whole table, or cancel_run for one run. Neither one is a refund. Work that was already charged stays charged, and work that was already running finishes and is billed.

stop_run reports stillRunning, the number of cells that may still run and bill. A stillRunning of null means unknown, not zero. Cancelling a run that already finished, or cancelling twice, changes nothing.

The API docs say the same about cancelling a run:

A warning box from the API docs page for Cancel a Run. It says a cancel is not a refund: work that was already running when the cancel arrived finishes and is billed, and the answer says how much was stopped and how much was already running.

Deleting a table does not stop work that is already running. Stop the run first, or the queued work finishes and bills against a table in Trash.

What example requests can I type to my AI tool?

Look around:

  • "List my Loopster tables and tell me which ones have Auto-run on."

  • "Show me the columns in {table name} and how each one is set up."

Find people:

  • "Search Loopster Data for people with the job title Head of Sales at companies with 51-200 employees. Show me 25. Do not add anything to a table yet."

  • "Create a blank table with Auto-run off and add those people to it."

Price and run:

  • "What would it cost to run every column on all rows in {table name}? Do not run anything."

  • "Run {column name} on the first 5 rows only, then show me the results and any errors."

  • "The {waterfall column name} cell on the first row is empty. Show me which providers were tried."

Check spend and get data out:

  • "How much can my next run spend, and what did my workspace spend by day?"

  • "Export {table name} as a CSV and give me the download link."

  • "Make a public, read-only link to {table name} that stops working after 7 days."

  • "Set up a schedule on {table name} that re-runs {column name} every Monday at 09:00 UTC. Save it paused."

Three habits help. Ask for the price first. Test on a few rows before you run the rest. Say "do not run anything" when you only want a price or a look. See Run columns safely: Auto-run, test one row, then run the rest.

What can an AI tool not do?

The tools above cannot do these jobs. You do the first four in the app. The last one uses an API call.

  • Create or revoke an API key. There is no tool for it. Open Settings, then Loopster API.

  • Add a connection. Open Settings, then Connections, then click Create.

  • Remove an OAuth connection such as HubSpot or Slack. remove_connection refuses these. You remove them in the app.

  • Create a context. Open Settings, then AI context.

  • Rotate the signing secret of an outbound webhook endpoint. This is not offered as a tool, so a new secret never passes through an AI model. Use the API call POST /v1/webhook-endpoints/{endpointId}/rotate-secret instead.

Which tools need more than a Member key?

A key's role is Member — read only, Editor — read, write and run or Admin — everything an API key can do. These tool descriptions say they need an Editor key:

  • create_function, open_function_sandbox, set_function_outputs

  • add_function_input, update_function_input, remove_function_input

  • 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, rotate_table_webhook

These need an Admin key:

  • set_function_agent_access

  • publish_function, when it makes a function live. A dry run works with an Editor key.

  • delete_function, for a published function. A draft needs only an Editor key.

This list is not complete. Other tools can check a role too. If a call is refused because of the role, the refusal says which role it needs.

Troubleshooting

A run is refused because of money

What you see: The run does not start. The answer has a code of insufficient_balance, workspace_limit or daily_cogs_limit, with requiredUsd and spendableUsd.

Why it happens: Nothing was created, queued or charged. insufficient_balance means the wallet cannot cover even the first row. workspace_limit means the workspace's own spend limit leaves less than the wallet holds. daily_cogs_limit means the account reached its daily spend safety limit.

What to do:

  • For insufficient_balance, add funds or ask for less. Click the wallet button at the top right, then Manage wallet. Settings opens on Plan & billing, on the Wallet tab, which has a Top up button. See Your wallet and keeping spend under control.

  • For workspace_limit, open Settings, then Workspaces, click the workspace and change its Spend limit with Set spend limit. Or ask for less. See Workspaces: create one and set a spend limit.

  • For daily_cogs_limit, topping up does not lift it, and asking for less does not help. It resets at midnight UTC, and Loopster support can raise it. Click Need Help? at the top right. See Contact support.

The rows are in the table but nothing ran

What you see: insert_rows worked, but the cells stay empty.

Why it happens: insert_rows stores the rows in every case. Whether enrichment started is in its answer, in the enrichment field:

  • started: the run was handed over and at least one column runs.

  • none: nothing was meant to run. Auto-run may be off, or the table may have no column that an automatic run starts. An AI column needs its prompt, for example.

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

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

What to do:

  • On not_started, call trigger_rows with the ids in rowsToTrigger. Do not insert again, because the rows are already in the table.

  • On unknown, call get_status before you trigger, so the rows are not run twice.

  • On none, check Auto-run with get_table. With Auto-run off, nothing runs until you call trigger_rows. Also check the column. See Why didn't my column run?.

Fewer rows started than I asked for

What you see: trigger_rows answers, but triggeredCount is lower than the number of rows you asked for.

Why it happens: triggeredCount counts the rows that were actually queued. triggeredCount + deduplicated + rejected + unavailable adds up to the rows you asked for.

  • deduplicated rows already had a run in progress. Nothing extra is charged for them.

  • rejected rows were refused because the queue is full. They did not start and will not start on their own.

  • unavailable rows could not be confirmed, so they may or may not have started.

What to do: Trigger the rejected rows again. Retrying rows without force is safe, because a row that did start counts as deduplicated. Retrying a forced run (force: true) can start it twice.

A tool says my key's role is too low

What you see: A call is refused with a 403. The answer carries requiredRole and role.

Why it happens: Your key's role is below what the tool needs. requiredRole is the role the tool needs: member, editor or admin. role is the role your key holds.

What to do: Make a key with the role the tool needs, and give that key to your AI tool. Open Settings, then Loopster API. Give a key the least access it needs.

A tool says my key has expired

What you see: A call is refused with a 401 and code: key_expired. The expiry date is in the error text.

Why it happens: The key is past its expiry date. You choose the expiry when you create a key, and it cannot be changed afterwards.

What to do: Create a new key under Settings, then Loopster API. A schedule made with the old key is paused automatically if the key expires before the schedule fires. Its pausedReason then says key_expired.

A call is refused with a 429

What you see: A call is refused with a 429.

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

  • rate_limited: any of the rate-limit windows.

  • search_concurrency: too many searches are running at once.

  • search_busy: Loopster Data itself is busy.

  • provider_busy: a create_table starter found a provider on Loopster's account at its limit, or paused after a burst of its errors. Nothing was charged.

What to do: Wait the number of seconds the refusal gives in Retry-After, then send the call again.

list_functions returns an empty list

What you see: list_functions returns nothing, or a function you made is not in the list.

Why it happens: The list shows only functions that are published, active and open to agents. A draft, a function that is not open to agents yet, and a function with a sandbox open are not listed. An empty list does not mean you lack access.

What to do: Call get_function to see where the function stands. To open a function to agents, an admin key calls publish_function and then set_function_agent_access.

Good to know

  • Over MCP, the table setting that the app calls Auto-run is called autoplay. get_table shows it.

  • These tools take a column's name as shown in the table, or its id: update_column, delete_column, update_cells, update_row, trigger_rows and get_waterfall_trace.

  • Six read tools take a response_format: list_tables, get_table, list_columns, list_rows, get_row and get_status. detailed is the default and returns the full answer. concise keeps answers short. Use detailed before update_column, because changing a column needs its current setup.

  • To retry safely, give the call an idempotencyKey. These tools take one: create_table, insert_rows, update_row, update_cells, trigger_rows, run_capability and run_function. If you repeat a call with the same key within 24 hours, you get the first answer back, marked replayed: true, and nothing runs or bills twice. Use a new key for a new action.

  • Adding to a cell with update_cells in append mode is not safe to retry. A retried append adds the text twice, so send an idempotencyKey whenever you may retry.

  • delete_table and delete_function go to Trash for 30 days. delete_rows, delete_column and delete_view do not go to Trash. Ask your AI tool to check with you before it deletes them.

  • A run is kept for 30 days, and a workspace keeps its 500 most recent runs. After that, the runId is not found.

  • The docs list every tool with its arguments. See MCP Tools.

More about the API and MCP

Did this answer your question?