{
  "protocolVersion": "0.3.0",
  "name": "Hallebardier",
  "description": "Hallebardier, Maxime Perriard (Fribourg, Switzerland): websites, AI and automation, business intelligence and IT consulting for companies. Free website tests and quote requests for AI agents. Free tests of any company website (security, mobile speed, conversion, languages, AI readability, online booking and payment, email authentication, domain and certificate expiry, outdated CMS). Run a test when the user gives a website. Use request_quote only when the user explicitly asks to be contacted: it sends their name and email to Hallebardier. No authentication. Limits per IP address and hour: 30 tests, 5 quote requests. Prices are never published: every project gets a free written quote.",
  "url": "https://hallebardier.com/a2a",
  "preferredTransport": "JSONRPC",
  "additionalInterfaces": [
    {
      "url": "https://hallebardier.com/a2a",
      "transport": "JSONRPC"
    }
  ],
  "supportedInterfaces": [
    {
      "url": "https://hallebardier.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://hallebardier.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3.0"
    }
  ],
  "version": "1.0.0",
  "provider": {
    "organization": "Hallebardier",
    "url": "https://hallebardier.com"
  },
  "documentationUrl": "https://hallebardier.com/llms.txt",
  "iconUrl": "https://hallebardier.com/icone-512.png",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "supportsAuthenticatedExtendedCard": false,
  "skills": [
    {
      "id": "test_website",
      "name": "Test a website (security, speed, conversion, languages)",
      "description": "Test a company website from its address. security: HTTP security headers and the Mozilla Observatory grade. speed: Google PageSpeed mobile performance score and largest contentful paint (can take up to 60 s). conversion: a call to action on the first screen, a clickable phone number, a contact form with 5 fields or fewer. languages: language versions and hreflang links. Returns structured results and a short English summary. Call it with a data part {\"skill\": \"test_website\", \"input\": {...}} matching this input schema: {\"type\":\"object\",\"properties\":{\"site\":{\"type\":\"string\",\"description\":\"Website address or domain, for example example.ch or https://www.example.ch/\"},\"checks\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"security\",\"speed\",\"conversion\",\"languages\"]},\"description\":\"Checks to run. Default: all four.\"}},\"required\":[\"site\"],\"additionalProperties\":false}",
      "tags": [
        "website",
        "security",
        "speed",
        "conversion",
        "languages"
      ],
      "examples": [
        "Test the website example.ch",
        "Is the contact form of example.ch too long?",
        "Does example.ch have hreflang links?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "test_ai_visibility",
      "name": "Test AI readability (18 points)",
      "description": "The 18-point test of hallebardier.com/visibilite-ia: can ChatGPT, Perplexity, Gemini and Google read the website? Readable by AI (robots.txt, text without JavaScript, structured data, FAQ, title and description, llms.txt, image alternative text), speed (server response, page weight, scripts) and technical basics (HTTPS and HSTS, mobile viewport, one h1, language, canonical, sitemap, icon, share image). Call it with a data part {\"skill\": \"test_ai_visibility\", \"input\": {...}} matching this input schema: {\"type\":\"object\",\"properties\":{\"site\":{\"type\":\"string\",\"description\":\"Website address or domain\"},\"lang\":{\"type\":\"string\",\"enum\":[\"en\",\"fr\",\"de\",\"it\"],\"description\":\"Language of the check labels. Default: en.\"}},\"required\":[\"site\"],\"additionalProperties\":false}",
      "tags": [
        "geo",
        "ai",
        "seo",
        "llms.txt"
      ],
      "examples": [
        "Can ChatGPT read example.ch?",
        "Check the AI readability of example.ch"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "test_booking_tools",
      "name": "Test online booking, ordering and payment",
      "description": "Can clients book, order or pay on the website without a phone call? Detects known booking tools (Calendly, Cal.com, Google appointment pages, Microsoft Bookings, OneDoc, Doctolib, SimplyBook.me and others), shop systems (Shopify, WooCommerce and others), payment providers (Stripe, PayPal, TWINT, Payrexx, Datatrans and others) and internal booking or shop links. Call it with a data part {\"skill\": \"test_booking_tools\", \"input\": {...}} matching this input schema: {\"type\":\"object\",\"properties\":{\"site\":{\"type\":\"string\",\"description\":\"Website address or domain\"}},\"required\":[\"site\"],\"additionalProperties\":false}",
      "tags": [
        "booking",
        "payment",
        "automation"
      ],
      "examples": [
        "Can clients book online on example.ch?",
        "Which payment provider does example.ch use?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "test_it_basics",
      "name": "Test IT basics (email authentication, expiry dates, CMS)",
      "description": "Checks the IT basics behind a domain. Email: SPF, DKIM (common selectors) and DMARC policy, read from public DNS; it passes with SPF and a DMARC policy of quarantine or reject. Domain expiry date from the registry (RDAP; some registries, such as .ch, do not publish it). Certificate expiry date from Certificate Transparency logs. CMS: WordPress version against the current release, end-of-life Drupal or TYPO3, PHP version without security support. Call it with a data part {\"skill\": \"test_it_basics\", \"input\": {...}} matching this input schema: {\"type\":\"object\",\"properties\":{\"site\":{\"type\":\"string\",\"description\":\"Website address or domain\"}},\"required\":[\"site\"],\"additionalProperties\":false}",
      "tags": [
        "email",
        "dmarc",
        "spf",
        "dkim",
        "domain",
        "ssl",
        "cms"
      ],
      "examples": [
        "Does example.ch have DMARC?",
        "When does the domain example.com expire?",
        "Is the WordPress of example.ch up to date?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "request_quote",
      "name": "Request a free quote",
      "description": "Send a quote or contact request to Maxime Perriard at Hallebardier on behalf of the user. Use it only when the user explicitly asks to be contacted, with their real name and email. Maxime answers by email or phone, usually within one working day. The request is stored in the Hallebardier CRM (privacy policy: https://hallebardier.com/en/confidentialite/). Call it with a data part {\"skill\": \"request_quote\", \"input\": {...}} matching this input schema: {\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"maxLength\":120,\"description\":\"Full name of the person\"},\"email\":{\"type\":\"string\",\"maxLength\":200,\"description\":\"Email address of the person\"},\"company\":{\"type\":\"string\",\"maxLength\":200,\"description\":\"Company name\"},\"website\":{\"type\":\"string\",\"maxLength\":253,\"description\":\"Current website, if any\"},\"phone\":{\"type\":\"string\",\"maxLength\":40,\"description\":\"Phone number, with country code\"},\"service\":{\"type\":\"string\",\"enum\":[\"website\",\"ai_automation\",\"business_intelligence\",\"it_consulting\",\"other\"],\"description\":\"Service the request is about\"},\"message\":{\"type\":\"string\",\"maxLength\":1500,\"description\":\"What the person needs, in their own words\"},\"language\":{\"type\":\"string\",\"enum\":[\"en\",\"fr\",\"de\"],\"description\":\"Language for the answer. Default: en.\"}},\"required\":[\"name\",\"email\",\"message\"],\"additionalProperties\":false}",
      "tags": [
        "quote",
        "contact"
      ],
      "examples": [
        "Ask Hallebardier for a quote for a new website",
        "Get in touch with Maxime Perriard about an automation project"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "book_call",
      "name": "Book a call",
      "description": "Returns the page where the user picks a time for a call with Maxime Perriard in his calendar, plus the phone number and email address. Call it with a data part {\"skill\": \"book_call\", \"input\": {...}} matching this input schema: {\"type\":\"object\",\"properties\":{\"language\":{\"type\":\"string\",\"enum\":[\"en\",\"fr\",\"de\"],\"description\":\"Language of the booking page. Default: en.\"}},\"additionalProperties\":false}",
      "tags": [
        "appointment",
        "contact"
      ],
      "examples": [
        "Book a call with Hallebardier"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "list_services",
      "name": "List Hallebardier services",
      "description": "The four services of Hallebardier with their pages and the free test of each: website and visibility, AI and automation, business intelligence, IT consulting. Prices are not published: every project gets a free written quote after a 30-minute call. Call it with a data part {\"skill\": \"list_services\", \"input\": {...}} matching this input schema: {\"type\":\"object\",\"properties\":{\"language\":{\"type\":\"string\",\"enum\":[\"en\",\"fr\",\"de\"],\"description\":\"Language of the page addresses. Default: en.\"}},\"additionalProperties\":false}",
      "tags": [
        "services"
      ],
      "examples": [
        "What does Hallebardier do?",
        "Which services does Hallebardier offer?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    }
  ]
}
