For developers and AI agents

Self-healing pipelines for apps and agents.

An API and an MCP server for web scrapers and data workflows. Scrape a source, let a broken connector repair itself at runtime, then check the data before it is released.

The run

Scrape, repair, then check.

One call keeps going when the source moves. The repair happens inside the run. The quality check happens after it.

Scrape

Point a pipeline at a source and a schema. The run returns structured rows.

Repair at runtime

When the page changes, the same run fixes the connector and finishes instead of failing.

Check the data

Required fields and rules run after the repair, before the rows are released.

Example

from forloop import pipeline

run = pipeline.scrape(
    source="https://shop.example/catalog",
    schema="product",
)

# The page changed. Repair this run and finish it.
run = run.heal()

quality = run.check(
    required=["sku", "name", "price"],
    price="number > 0",
    sku="unique",
)

if quality.passed:
    run.publish()

Forloop MCP

Orchestrate pipelines from an agent.

Model Context Protocol tools an assistant can discover and call. The same server starts a pipeline, schedules it, repairs a connector, and reads the quality result.

  • run_pipelineStart a pipeline and return the run, including any repair it performed.
  • schedule_pipelinePut a pipeline on a cadence so it keeps running.
  • list_pipelinesList pipelines, the last run, and whether the last repair succeeded.
  • heal_pipelineRepair a broken connector at runtime and continue that run.
  • check_data_qualityValidate required fields and rules after extraction or a repair.
  • get_runRead a run's status, repaired connectors, and quality result.

Example MCP tools

// forloop-mcp
{
  "tools": [
    {
      "name": "run_pipeline",
      "description": "Start a pipeline and return the run."
    },
    {
      "name": "schedule_pipeline",
      "description": "Keep a pipeline running on a cadence."
    },
    {
      "name": "list_pipelines",
      "description": "List pipelines and the last repair."
    },
    {
      "name": "heal_pipeline",
      "description": "Repair a connector and continue the run."
    },
    {
      "name": "check_data_quality",
      "description": "Check fields and rules after the run."
    },
    {
      "name": "get_run",
      "description": "Read status, repairs, and quality."
    }
  ]
}

Call it from the app or the agent.

Scrapers that repair themselves at runtime, with a quality check before the data moves on.