{
  "$comment": "A2A Agent Card, protocol v1.0 (a2a-protocol.org). Field names follow the AgentCard message in the A2A specification's a2a.proto, in its JSON spelling. Every value here is verifiable against https://www.alcorone.com/a2a — this card was written after the endpoint, not before it, and the three skills below are the three the endpoint actually routes. Nothing aspirational is listed.",
  "name": "AlcorOne Solutions interior fit-out agent",
  "description": "Answers questions about interior fit-out work in South India from AlcorOne Solutions' 223 published pages — per-square-foot cost guides, BOQ and quotation practice, material and plywood-grade comparisons, warranty terms, project timelines, and city guides for Chennai, Hyderabad, Bengaluru, Visakhapatnam and Rajamahendravaram. Returns the canonical URL for every claim so the caller can cite it. Also files an interior fit-out callback request on a user's behalf when asked to explicitly.",
  "version": "1.0.0",
  "supportedInterfaces": [
    {
      "url": "https://www.alcorone.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "text/markdown"
  ],
  "skills": [
    {
      "id": "search-corpus",
      "name": "Search the AlcorOne corpus",
      "description": "Ranks AlcorOne's 223 published pages against a question and returns the matching passages with the canonical URL to cite for each. This is the default: a message carrying only text is treated as a search, so a caller that knows nothing about this agent's skill ids still gets a useful answer. Send {\"skill\": \"search-corpus\", \"query\": \"...\", \"limit\": 1-10} as a data part to control the query and result count explicitly.",
      "tags": [
        "search",
        "interior-design",
        "construction",
        "cost-estimation",
        "india"
      ],
      "examples": [
        "What does a modular kitchen cost in Hyderabad?",
        "Which plywood grade should a wet-zone carcass use?",
        "How long does a 3BHK apartment fit-out take?",
        "What does AlcorOne's warranty cover after handover?"
      ],
      "outputModes": [
        "text/plain"
      ]
    },
    {
      "id": "get-page",
      "name": "Fetch one page as Markdown",
      "description": "Returns the full Markdown text of a single page on alcorone.com, given its canonical URL or bare path. Use it after search-corpus when a snippet is not enough to answer accurately. Serves alcorone.com only; any other host, and any path that tries to escape the document root, is refused. Send {\"skill\": \"get-page\", \"url\": \"...\"} as a data part.",
      "tags": [
        "retrieval",
        "markdown",
        "citation"
      ],
      "examples": [
        "Fetch https://www.alcorone.com/blog/interior-cost-per-sqft/ in full",
        "Get /hyderabad/ as Markdown"
      ],
      "outputModes": [
        "text/markdown"
      ]
    },
    {
      "id": "submit-enquiry",
      "name": "File an interior fit-out callback request",
      "description": "WRITE. Files a callback request into the same table as this site's public web form, tagged with its source. Name and an Indian mobile number are required. Reachable ONLY by naming this skill in a data part — it is never inferred from conversational text, because a fabricated enquiry costs a real callback to a real phone number. Not idempotent: two calls earn the user two phone calls, so confirm with the user before sending, and do not retry on an ambiguous response. Rate limited to 3 per hour per address and 30 per day overall; cross-site browser callers are refused. Send {\"skill\": \"submit-enquiry\", \"name\": \"...\", \"phone\": \"...\", \"email\": \"...\", \"message\": \"...\"}.",
      "tags": [
        "write",
        "lead",
        "contact",
        "not-idempotent"
      ],
      "examples": [
        "File a callback request for Priya on 98765 43210 about a 3BHK in Gachibowli"
      ],
      "outputModes": [
        "text/plain"
      ]
    }
  ],
  "provider": {
    "organization": "AlcorOne Solutions LLP",
    "url": "https://www.alcorone.com"
  },
  "documentationUrl": "https://www.alcorone.com/.well-known/agents.json",
  "iconUrl": "https://www.alcorone.com/logo-horizontal-full.png",
  "$authentication": "No securitySchemes or securityRequirements are declared because this agent requires none, and declaring an empty scheme would imply one exists. The two read skills serve content that is already public. The write skill files into the same table as the site's public web form, which also takes no credential: it exists so an agent that has never seen this site can pass on a callback request, and requiring client registration would make it unused rather than safer. Abuse is bounded by rate limits and a same-origin restriction on the write, not by authentication. No OAuth authorization server, protected-resource metadata or agent registration exists for this site, and none is claimed — see https://www.alcorone.com/auth.md, which also names the endpoints that do not exist so a scanner reads the decision rather than probing."
}
