loading…
Search for a command to run...
loading…
Enables AI agents to pause execution at critical decision points and request human review before proceeding. Provides tools for creating interrupts, polling for
Enables AI agents to pause execution at critical decision points and request human review before proceeding. Provides tools for creating interrupts, polling for decisions, and managing approvals through a simple REST API interface.
Human-in-the-loop interrupt API for AI agents.
LoopIn lets AI agents pause at critical decision points, request human review, and resume execution based on the human's decision. No more agents making high-stakes calls alone.
Autonomous agents are powerful — until they hit a decision they shouldn't make without a human. LoopIn gives every agent a safe exit ramp:
POST /interruptsPOST /interrupts/:id/decideGET /interrupts/:idCreate a new interrupt request.
Request:
{
"agentId": "agent-payments-v2",
"userId": "user-123",
"action": "Transfer $4,200 to vendor account ending in 9821",
"context": {
"vendor": "Acme Supplies",
"amount": 4200,
"currency": "USD",
"invoiceId": "INV-2024-0892",
"accountLast4": "9821"
},
"urgency": "high",
"expiresIn": 1800,
"callbackUrl": "https://my-agent.example.com/webhooks/loopin"
}
Response:
{
"interruptId": "3f4e2a1b-...",
"status": "pending",
"expiresAt": "2024-04-12T14:30:00Z",
"reviewUrl": "http://localhost:3002/review/3f4e2a1b-..."
}
Poll for the current status and decision.
Response (pending):
{
"interruptId": "3f4e2a1b-...",
"status": "pending",
"action": "Transfer $4,200 to vendor account ending in 9821",
"context": { ... },
"urgency": "high",
"createdAt": "2024-04-12T13:00:00Z",
"expiresAt": "2024-04-12T14:30:00Z",
"reviewUrl": "http://localhost:3002/review/3f4e2a1b-..."
}
Response (resolved):
{
"interruptId": "3f4e2a1b-...",
"status": "approved",
"decision": "approved",
"decidedAt": "2024-04-12T13:07:22Z",
"reason": "Invoice verified, proceed."
}
Submit a human decision.
Request:
{
"decision": "approved",
"reason": "Invoice verified, proceed.",
"modifiedParams": { "amount": 4200 }
}
Response:
{
"interruptId": "3f4e2a1b-...",
"status": "resolved",
"decision": "approved",
"decidedAt": "2024-04-12T13:07:22Z"
}
List all pending interrupts waiting for a user's review.
Response:
[
{
"interruptId": "3f4e2a1b-...",
"action": "Transfer $4,200 to vendor...",
"urgency": "high",
"createdAt": "...",
"expiresAt": "...",
"reviewUrl": "..."
}
]
Cancel a pending interrupt (agent no longer needs the decision).
Usage statistics.
Response:
{
"userId": "user-123",
"totalInterrupts": 47,
"approvalRate": 0.83,
"avgResponseTimeMs": 142000,
"byStatus": { "approved": 39, "rejected": 8 },
"byUrgency": { "high": 12, "medium": 28, "low": 7 },
"topActionTypes": [
{ "action": "Send payment", "count": 18 },
{ "action": "Delete records", "count": 9 }
]
}
Every interrupt gets a human-readable review URL:
GET /review/:interruptId
This renders an HTML page showing:
Share this URL with whoever needs to review the request. No login required by default.
The LoopIn MCP server exposes all 6 tools for use with any MCP-compatible AI client (Claude Desktop, Cursor, etc.):
| Tool | Description |
|---|---|
create_interrupt |
Agent creates a new interrupt request |
get_interrupt_status |
Agent polls for a decision |
list_pending_interrupts |
Human sees what needs review |
decide_interrupt |
Human approves or rejects |
cancel_interrupt |
Agent cancels a pending request |
get_interrupt_analytics |
Usage stats |
{
"mcpServers": {
"loopin": {
"command": "npx",
"args": ["-y", "@colossal-api/loopin-mcp"],
"env": {
"LOOPIN_API_URL": "https://your-loopin-instance.railway.app",
"LOOPIN_API_KEY": "your-key"
}
}
}
}
1. Agent reaches a decision point
→ POST /interrupts { agentId, userId, action, context, urgency }
← { interruptId, reviewUrl }
2. Agent saves interruptId and pauses
→ (optionally: notify human via other channels with reviewUrl)
3. Agent polls until resolved
→ GET /interrupts/:interruptId
← { status: "pending" } ← keep polling
← { status: "approved", decision, modifiedParams } ← resume
4. Agent resumes execution
→ use modifiedParams if provided, otherwise proceed as planned
Option A — Review URL (simplest)
reviewUrl from the agent (via email, Slack, etc.)Option B — List pending (dashboard)
GET /interrupts/pending/:userId — see all open requestsreviewUrls or call POST /interrupts/:id/decide directly| Variable | Default | Description |
|---|---|---|
PORT |
3002 |
API server port |
LOOPIN_BASE_URL |
http://localhost:3002 |
Public base URL for review links |
API_KEY_SECRET |
(none) | Optional: require X-API-Key header on all requests |
LoopIn is part of the Colossal API suite of infrastructure APIs for AI agents:
All products share the same design philosophy: simple REST APIs with MCP server wrappers so agents can use them natively.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"loopin-mcp-server": {
"command": "npx",
"args": []
}
}
}