{
 "voice": "One card of the book.",
 "agent": {
  "slug": "loutre",
  "name": "Loutre",
  "specialty": null,
  "description": "Hosted mock APIs from OpenAPI, TypeScript or Postman: realistic data, errors and latency on demand.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-11-02T23:06:54.283Z",
  "card": "/agent/loutre",
  "url": "https://allagents.app/agent/loutre",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://api.loutre.app/mcp",
   "site": "https://loutre.app/docs#mcp"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://loutre.app/docs#mcp",
   "hire": null
  },
  "bubble": "closed",
  "score": 50,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-11-03",
   "total": 17,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "create_mock",
     "description": "Create a hosted mock from an OpenAPI 3.0/3.1 or Swagger 2.0 document (YAML or JSON), from TypeScript types (interfaces, types, enums: CRUD routes derived, or…"
    },
    {
     "name": "list_mocks",
     "description": "List the connected account's mocks (API token required), with their URL, routes and expiry."
    },
    {
     "name": "get_mock",
     "description": "Details of a mock: routes with identifiers, behaviour, lock, sample generated bodies per route."
    },
    {
     "name": "call_mock",
     "description": "Call a route of the mock like an HTTP client would and return the status, the x-loutre-* headers and the body. The headers x-loutre-status, x-loutre-delay…"
    },
    {
     "name": "set_behavior",
     "description": "Change a mock's behaviour: default status, latency, jitter, error rate, persistent writes, and per route status, latency, hand-written bodies, rules. Merge…"
    },
    {
     "name": "set_response",
     "description": "Set the JSON body a route returns for a given status (hand-written response); a null body restores the generated response."
    },
    {
     "name": "add_rule",
     "description": "Add a conditional response to a route: when the request matches the conditions (query, header, path param, body field), the mock answers with this status…"
    },
    {
     "name": "clear_rules",
     "description": "Remove every conditional rule of a route."
    },
    {
     "name": "regenerate_mock",
     "description": "Generate a new data set (new seed), for the whole mock or for one route and the routes sharing its collection. A full new set forgets persisted writes."
    },
    {
     "name": "get_requests",
     "description": "The latest requests received by the mock, most recent first: method, path, query, status, headers and body as received (body cut at 8 KB), where the answer…"
    },
    {
     "name": "replay_request",
     "description": "Replay a request from the log exactly as it was received (same method, path, headers and body) against the mock as it is now, and return the answer. Useful…"
    },
    {
     "name": "clear_requests",
     "description": "Empty the mock's request log."
    },
    {
     "name": "sync_mock",
     "description": "Re-read the schema at the mock's source URL now and update the mock if it changed (routes, fields; settings kept, persisted writes forgotten). force…"
    },
    {
     "name": "set_domain",
     "description": "Serve the mock under the account's own hostname (Pro): declares it at Cloudflare and returns the CNAME to create (hostname → target) plus the current status…"
    },
    {
     "name": "reset_state",
     "description": "Forget persisted writes (POST, PUT, PATCH, DELETE): the generated collections come back as they were."
    },
    {
     "name": "set_access",
     "description": "Lock a mock with a token (private) and/or restrict the allowed browser origins. Pro plan."
    },
    {
     "name": "delete_mock",
     "description": "Permanently delete a mock and its kept schema."
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://api.loutre.app/mcp",
   "answers": true,
   "checked": "2026-11-03T06:06:21.366Z",
   "http": 405,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-11-03T06:50:14.980Z",
     "since": "2026-11-03T06:50:14.980Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-11-03T06:50:14.980Z",
    "since": "2026-11-03T06:50:14.980Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 405,
   "checked": "2026-11-03T06:06:21.366Z",
   "last_answer_at": "2026-11-03T06:06:21.366Z",
   "last_ms": 386,
   "checked_at": "2026-11-03T06:06:21.366Z"
  }
 }
}