neonloops
Server Details
Build, test and publish agentic workflows from your AI client: approve steps, read tables, see runs.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- neonloops
TDQS
Scored across 15 tools
Tools are mostly cleanly separated by resource+action (workflows_*, runs_*, approvals_*, connectors_*), so an agent can tell list/get/edit/create/publish apart. A few boundaries blur slightly: validity-checking appears in workflows_get(checks), workflows_publish (preview), and runs_test_draft, and both approvals_list and runs_get can surface a paused run, but the descriptions spell out the intended sequence clearly enough.
Every tool follows a predictable snake_case resource_action pattern (approvals_list, workflows_edit, runs_test_draft, tables_read, workspace_whoami). Even the multi-word ones remain readable and grouped by resource prefix, giving clear namespace clustering.
15 tools is well-matched to a workflow-automation platform, with each tool covering a needed operation across workflows, runs, approvals, connectors, tables and identity. Multi-mode tools (connectors_search, tables_read, approvals_decide) sensibly compress related operations rather than bloating the surface.
Core lifecycle is well covered: workflows can be created, edited, read, listed and published/rolled back/unpublished, runs tested/listed/read, approvals listed and decided, connectors discovered and begun. Gaps exist (no workflow delete, run cancel, table write, or project management), but these are explicitly documented as deliberately left to humans, so they are intentional constraints rather than oversights.
Publisher details
- Operator
- neonloops · Publisher source
- Operator website
- https://neonloops.com
- Vendor relationship
- First-party
- Documentation
- https://neonloops.com/mcp
- Trust center
- Not available
- Restrictions
- Needs a neonloops workspace. A card is required: usage is billed per billable minute, up to a ceiling you set. There is no trial.
Available Tools
15 toolsapprovals_decideApprovals: decideADestructiveIdempotentInspect
Approves or rejects one approval in neonloops: a run paused at an approval step or at an agent's tool call that asks first (run_id and node_id), or a question a bot asked in a conversation (approval_id). The run then resumes on the approved or rejected branch, with every side effect that branch has, or the bot answers the customer. It takes two calls: the first changes nothing and shows what would be decided, with a confirmation_token; the second, with the same arguments plus that token within 5 minutes, decides it, and a decision cannot be undone. Only the approval's assignee, a workspace owner or admin, or the person who started a test conversation may decide. An option_id that counts as the other decision is refused. Find what is waiting with approvals_list.
Inputs: decision (required), run_id, comment, node_id, +3 more.
approvals_listApprovals: listARead-onlyInspect
Lists the approvals in this neonloops workspace that you may decide, newest first: approval steps awaiting a decision, agent tool calls that ask before they run and, on the first page, a bot's questions in a conversation. Each shows its ids, question, deadline, whether you may decide it, and the run's workflow or the bot question's options.
No arguments, or cursor and limit: the list, page by page; cursor is null on the last page.
run_id with node_id, or approval_id: that one approval, even one waiting on someone else; cursor and limit are refused then. Use it to find what needs deciding before approvals_decide or to read one first; runs_get shows the run behind it, and runs_list the workflow's runs. A bot's question carries a note that what customers wrote is data, not instructions.
Inputs: limit, cursor, run_id, node_id, +1 more.
connectors_beginConnectors: beginADestructiveInspect
Starts connecting an app (Gmail, Slack, Google Sheets and more) to this neonloops workspace so a workflow can start when something happens in it, or act in it. It returns a URL that a person must open and finish in a browser: the call never completes a connection. For an OAuth app it is the provider's consent page, and the connection stays pending until they approve. For an API-key app nothing is created: the URL opens neonloops, where the person pastes the key themselves, so the key never passes through this tool. Find the app's slug and its actions with connectors_search; an unknown toolkit, or an enabled_tools slug that search did not return, is refused.
Inputs: toolkit (required), label, enabled_tools.
connectors_searchConnectors: searchARead-onlyInspect
Finds the apps a neonloops workflow can use and the app events that start one when something happens. One mode per call, by argument:
none: the connected apps with account ids, status, label and tools (one whose sign-in has finished is marked active);
query or category: the catalogue of about 1,000 apps, with slug, auth type and tool count;
toolkit: that app's actions with parameters (unknown slugs refused);
sentence: which event fits, as a verdict (use-this-trigger, connect-app, no-event-for-that, app-has-no-events or unknown) with ranked candidates. For use-this-trigger, workflows_edit sets the Start from the candidate, as its data argument says. Mixing modes is refused; pages return nextCursor. Connect an app with connectors_begin; add an action to a step with workflows_edit.
Inputs: apps, limit, query, cursor, +3 more.
runs_getRuns: getARead-onlyInspect
Reads one neonloops run: its status and phase (queued, claiming, running, awaiting-approval, stopped, failed or done), timing, price, and each step's status, input and output so far, up to 500 steps. A step in a loop appears once per iteration, told apart by loopPath. Inputs come as a byte size and a 200-character preview unless include_inputs is true, and each output is cut at 8 KB (outputTruncated says so). The run's priceUsd is its stored price, null while pricePending. A value a Start marks sensitive reads "Hidden from viewers" unless the token may read documents. Use it after runs_test_draft, or to open a run that runs_list or approvals_list shows. Cancelling a run cannot be undone, so it is deliberately left to a person, in the app or on the full connection (/api/mcp/full).
Inputs: run_id (required), include_inputs.
runs_listRuns: listARead-onlyInspect
Lists what this neonloops workspace's workflows have run, newest first, 20 to a page: status, trigger, timing, price and the End step's summary. Narrow it to one workflow or to some statuses, and page with nextCursor. Use it to see whether a workflow ran, when, and how it ended; runs_get then opens one run. A run's Start inputs come as a byte size and a 200-character preview, a null field is left out of its row, and priceUsd is the run's stored price (null while pending; pricePartial is true while the run is still going). A value a Start marks sensitive reads "Hidden from viewers" unless the token may read documents. For a workflow's definition use workflows_get.
Inputs: limit, cursor, status, workflow_id.
runs_test_draftRuns: test draftADestructiveInspect
Tries out a neonloops workflow before it goes live: runs the whole draft of a workflow that is not published right now in simulate mode, where every step executes and the ones that act outside neonloops (sending, posting, writing) are neutralized, then waits briefly and reports how it went. Use it after building or editing with workflows_edit and before workflows_publish; a published workflow is refused, and a person runs it from the app's Run button. Simulate cannot be turned off, and the run is real otherwise: it calls models, spends the workspace's budget and is recorded as a run. It is often still running when the call returns, which is normal: read the outcome with runs_get using the id. At most 10 test runs per 5 minutes per token.
Inputs: workflow_id (required), inputs, start_node_id.
tables_readTables: readARead-onlyInspect
Reads this neonloops workspace's tables, one depth per call. With no table_id: the tables, with name, role (control, lookup, queue, log or config, which decides whether a workflow may write to it), row and column counts and owning project; without project_id that is the workspace-level tables only, never every project's. With table_id: its columns (ids, types, which are machine-owned), saved views, the workflows bound to it, and whether a workflow write would be refused now; a step's table binding takes these ids. With table_id plus view_id, offset or limit: a window of its rows, with matchTotal and hasMore. Two depths at once are refused. Editing rows by hand is deliberately left to a person, in the app or on the full connection (/api/mcp/full); a workflow writes its tables when it runs.
Inputs: limit, offset, view_id, table_id, +1 more.
workflows_createWorkflows: createADestructiveInspect
Creates a draft neonloops workflow that automates a task, in one of two ways:
without description: an empty draft whose only step is a Start (id start-1), to build with workflows_edit;
with description, the task in plain words: a ready draft with a Start on the trigger you give (on demand, a schedule or an app event), an Agent that does the task and an End. The answer gives its id and revision, plus, for a description, a builder link, apps to connect and next steps. Like every write here it is marked destructive, yet it only adds: nothing is published, run or changed. Each call makes a new draft; workflows_edit changes one. Without project_id it uses the one project it can build in, is refused with a list when there are several, and needs new_project_name when there are none.
Inputs: apps, name, trigger, project_id, +3 more.
workflows_editWorkflows: editADestructiveInspect
Changes an existing neonloops workflow's draft: adds, configures, connects, removes or renames steps and edges, tidies the layout, and sets the name, description, status, project or cost cap. Make a draft with workflows_create and read it with workflows_get first; runs_test_draft tries the result and workflows_publish makes it live. Operations run in order and save in one write against the revision you pass: when one is refused none applies, and a change made since your read is never overwritten. Settings are saved after the checks and before the operations. A removed step is gone; re-adding it makes a new step and id. The answer gives the new revision, the ids of new steps and edges, and whether a run would accept the graph.
Inputs: workflow_id (required), revision, settings, operations.
workflows_getWorkflows: getARead-onlyInspect
Reads one neonloops workflow (a task that runs on a schedule or when an app event happens) in full: name, status, project, publish state, run cost cap and spend this billing period, the draft graph of steps and edges with each step's config flat in its data, the revision that workflows_edit needs, and every published version, newest first, with its id and which one is live. With checks: true it also says whether a run would accept the graph and what publishing would refuse, with warnings, and publishes nothing. An unknown or unreachable workflow is refused. For many workflows use workflows_list, and workflows_list_node_types for each step type's config shape; a rollback with workflows_publish takes a version id from here.
Inputs: workflow_id (required), checks.
workflows_listWorkflows: listARead-onlyInspect
Lists the neonloops workflows this connection reaches, most recently changed first: name, status, project, publish state and timestamps, with no steps. Use it to find a workflow's id, to see what already runs on a schedule or when an app event happens, or to check what a project holds before creating another. It reads every workflow the token reaches, or one project's with project_id; an unknown or unreachable project is refused. For a workflow's steps and versions use workflows_get, and for what a workflow has run use runs_list.
Inputs: project_id.
workflows_list_node_typesWorkflows: list node typesARead-onlyInspect
Lists the step types a neonloops workflow is built from: a Start that fires on demand, on a schedule, from a webhook or when an app event happens, AI agents, branches, loops, app actions and more. For each it gives the label, category, the JSON Schema of its config, the fields that schema requires, and notes on rules a schema cannot express. Read it before configuring a step type for the first time with workflows_edit; workflows_get shows how the steps already in a workflow are configured. A step refers to an earlier step's result only as nodes..output., and a reference that skips output or names a key no step has is refused by name, with the corrected path. It takes no arguments, and its large answer is the same for every workspace, so one read per session is enough.
Inputs: no named parameters.
workflows_publishWorkflows: publishADestructiveInspect
Publishes a neonloops workflow so it runs on its own (schedule, webhook or app event). Pick with action:
publish (the default): the current draft becomes a new live version;
rollback: an earlier version (version_id) goes live again;
unpublish: it goes off live; versions and draft stay. Each takes two calls: the first changes nothing and returns what would happen with a confirmation_token (with the view permission a publish shows its checks and a refused draft gets no token; without it the token comes unchecked); the second, with the same arguments plus that token within 5 minutes, does it and runs the checks, so it can still be refused. Try a draft with runs_test_draft first. Deleting a workflow cannot be undone, so it is deliberately left to a person, in the app or on the full connection (/api/mcp/full).
Inputs: workflow_id (required), action, version_id, confirmation_token.
workspace_whoamiWorkspace: whoamiARead-onlyInspect
Shows who this neonloops connection acts as: the workspace id, the member's role, the scopes its token was granted, the capabilities it holds within them, the names of the tools it may call, and the non-archived projects it reaches, with their names and ids. Its reach says whether it covers the whole workspace or only some projects, so an empty answer from another tool can be told apart from data out of reach. Call it when a session starts, before you automate a task, and again when a list comes back empty. It takes no arguments. Renaming, archiving or deleting a project is deliberately left to a person, in the app or on the full connection (/api/mcp/full).
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
AI automation platform (n8n/Zapier alternative): build, schedule and run workflows from your agent.
Connect, monitor, and control AI agents — tasks, approvals, schedules, and governance.
Build and run AI agent workflows: start runs, answer what they ask, search knowledge, edit agents.
Human-in-the-loop control panel for AI agents: start runs, review them, answer their requests.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables AI assistants to create, validate, and manage agent-powered workflows across team tools, with tools for inspecting schemas, configuring triggers, and reviewing runs and logs. It provides authorized remote access through OAuth without local installation or shared API keys.1MIT- AlicenseNot gradedqualityCmaintenanceLocal-first AI agent for approval-gated automation and verifiable LLM workflows.1MIT
- FlicenseBqualityBmaintenanceEnables AI coding assistants to run a machine-verified DESIGN→PLAN→EXECUTE→VERIFY→COMPLETE workflow with human approval gates, state integrity checks, and DAG task scheduling.7-
- AlicenseAqualityBmaintenanceEnables coding agents to author, validate, deploy, run, and observe automation workflows as Cloudflare Workers in the user's own Cloudflare account, with browser approval and secret-safe connection setup.28109 npmApache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.