{
  "schema_version": "0.1",
  "name": "Captrove",
  "description": "Captrove digitises family photographs, slides, documents and objects at your kitchen table \u2014 and records the names, dates and stories while there is still someone to ask. San Antonio and the Texas Hill Country.",
  "url": "https://captrove.tech/",
  "contact": {
    "email": "hello@captrove.tech"
  },
  "documentation": {
    "agent_contract": "https://captrove.tech/AGENTS.md",
    "summary": "https://captrove.tech/llms.txt",
    "human_page": "https://captrove.tech/agents/",
    "openapi": "https://captrove.tech/openapi.json"
  },
  "auth": {
    "required": false,
    "note": "No authentication. Requests are rate-limited by how well the caller is verified."
  },
  "identity": {
    "web_bot_auth": true,
    "note": "Web Bot Auth signatures (RFC 9421) are verified at the edge. Signed callers get a higher rate limit. A signature proves which platform you are, never who you act for.",
    "rate_limits": {
      "verified": "20/10min",
      "signed": "10/10min",
      "unverified": "5/10min"
    }
  },
  "tools": [
    {
      "name": "submit_request",
      "description": "Submit a quote or booking REQUEST to Captrove on behalf of a named person. Returns a reference. This is not a booking and not a quote \u2014 a person reads it and replies.",
      "method": "POST",
      "url": "https://captrove.tech/api/request",
      "content_type": "application/json",
      "parameters": {
        "type": "object",
        "required": [
          "name",
          "email",
          "detail"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The person who wants the work. Not the agent."
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Theirs. Replies go here."
          },
          "detail": {
            "type": "string",
            "description": "What they want, in their words where possible."
          },
          "phone": {
            "type": "string"
          },
          "property_type": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "timing": {
            "type": "string"
          }
        }
      },
      "returns": {
        "status": 202,
        "body": {
          "ok": true,
          "reference": "REQ-XXXXXX"
        }
      },
      "side_effects": "Emails a person and records the request. Idempotent: no, each call is a new request."
    },
    {
      "name": "describe_request_endpoint",
      "description": "Describe the request endpoint: its fields, rate limits, our availability policy, and how this caller is currently being seen (verified / signed / unverified).",
      "method": "GET",
      "url": "https://captrove.tech/api/request",
      "parameters": {
        "type": "object",
        "properties": {}
      }
    }
  ],
  "no_tools_reason": null,
  "mcp": {
    "available": true,
    "server": "avodas-public",
    "url": "https://mcp.avodas.tech/mcp",
    "card": "https://mcp.avodas.tech/.well-known/mcp-server-card",
    "note": "Public Model Context Protocol (MCP) server for scope checks and enquiries."
  },
  "constraints": [
    "A request is not a booking. Nothing here can commit us to a price, a date or a scope.",
    "Do not state or estimate a price on our behalf.",
    "Requests must name the person who wants the work.",
    "No availability, pricing or client information is exposed by any endpoint, and none will be."
  ]
}
