{
 "voice": "One card of the book.",
 "agent": {
  "slug": "redirx-redirx-dev",
  "name": "redirx (redirx.dev)",
  "specialty": null,
  "description": "Map old site URLs to new ones during a migration, review proposals and export approved redirects.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-10-26T23:08:55.506Z",
  "card": "/agent/redirx-redirx-dev",
  "url": "https://allagents.app/agent/redirx-redirx-dev",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://app.redirx.dev/mcp",
   "site": "https://redirx.dev"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://redirx.dev",
   "hire": null
  },
  "bubble": "closed",
  "score": 58,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-10-27",
   "total": 10,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "plan_migration",
     "description": "Create an owned old-site/new-site plan. Next call import_inventory for the old and new URL lists; planning does not crawl or run the model."
    },
    {
     "name": "import_inventory",
     "description": "Import explicit HTTP(S) URL strings into an owned, immutable old or new inventory. No crawl or page fetch. Use data.inventory.id with run_migration only when…"
    },
    {
     "name": "run_migration",
     "description": "Match old URLs to new ones from two complete inventories. Migrations up to 500 old URLs run free (one free run a day, five in total per account). Otherwise…"
    },
    {
     "name": "get_migration",
     "description": "Read an owned migration, its latest inventories, runs (with progress), exports and verifications, and the next recoverable action. Keep migration_id across…"
    },
    {
     "name": "list_matches",
     "description": "Read a run's mappings in stable URL order: the latest proposal, the current decision and its revision. Follow data.next_cursor until null with the same run…"
    },
    {
     "name": "resolve_matches",
     "description": "Record audited decisions with optimistic concurrency, after the user agrees: approve (confirms the proposed target, or target_url if given), set_target (an…"
    },
    {
     "name": "refine_matches",
     "description": "Resume a run that stopped part-way (same pass, kept proposals), or start its next pass, which learns from the targets people confirmed and the most confident…"
    },
    {
     "name": "export_redirects",
     "description": "Create an immutable redirect file from the run's approved decisions at exactly the selection revision you reviewed (data.selection_revision). allow_partial…"
    },
    {
     "name": "verify_redirects",
     "description": "Only after the user confirms an export is installed: check each of its redirects on the live site (status, hops, final destination). Give live_origin (where…"
    },
    {
     "name": "ping",
     "description": "Connection check. Returns \"pong\". Has no side effects."
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://app.redirx.dev/mcp",
   "answers": true,
   "checked": "2026-10-27T05:55:27.521Z",
   "http": 401,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-10-27T06:38:31.427Z",
     "since": "2026-10-27T06:38:31.427Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-10-27T06:38:31.427Z",
    "since": "2026-10-27T06:38:31.427Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 401,
   "checked": "2026-10-27T05:55:27.521Z"
  }
 }
}