Agent Skills / maison-platform

Install this skill alone, or read it below. Raw file: SKILL.md · references/tools.md

bash
npx skills add https://docs.maison-labs.com --skill maison-platform

Maison — Platform, documentation and diagnostics

Orient and verify: the documentation index with machine-readable discovery URLs, the exact widget embed code for a hotel, a website check (framework, widget present, client id), the AI site diagnostic (start, read findings, ask follow-ups) and a live platform health summary. Use when installing the widget on a hotel's site, when a site seems not to load the concierge, or to find the right documentation page.

Part of the Maison public API. Read the maison-public-api skill first for authentication, discovery and transport details (https://docs.maison-labs.com/skills/maison-public-api/SKILL.md).

When to use

  • Install the widget — get_widget_embed_code, then check_website to verify.
  • A hotel site misbehaves — start_site_diagnostic → get_site_diagnostic → chat_site_diagnostic.
  • Find documentation — get_documentation.

Before you start

  1. Send x-api-key: <key> on every call; the key only reaches /api/v1.
  2. GET /api/v1/tools (or MCP tools/list) returns the tools THIS key may run — if a tool below is missing there, you lack a grant; do not retry it.
  3. Client-scoped tools take clientId (a hotel id). whoami lists the ids you can act on.

Tools

ToolWhat it doesRESTNeeds
chat_site_diagnosticSend a follow-up question about a finished or running diagnostic session and get the agent's answer.POST /api/v1/diagnostic/{sessionId}/chata valid API key
check_websiteFetch a public website and report its framework, whether the Maison widget loader is embedded and which client id it carries.POST /api/v1/tools/sitechecka valid API key; read-only
get_documentationWhere the public documentation lives: the docs site topics (quick start, authentication, API reference, MCP, A2A, widget SDK, installation guides, integrations, diagnostic), plus the machine-readable discovery URLs (OpenAPI document, agent card, filtered tool catalogue).GET /api/v1/docsa valid API key; read-only
get_platform_statusA live health summary from the API's point of view: environment, database reachability, LLM service reachability and the public status page URL.GET /api/v1/statusa valid API key; read-only
get_site_diagnosticThe full history of a diagnostic session — run events, progress, findings and chat turns.GET /api/v1/diagnostic/{sessionId}a valid API key; read-only
get_widget_embed_codeThe exact HTML a hotel pastes into its website to show the Maison chat widget: the hardened loader <script> tag for this environment's CDN and the initMcbs call with the hotel's client id.GET /api/v1/client/{clientId}/embedclients READ (client); read-only
start_site_diagnosticStart the AI website diagnostic for a URL: it crawls the site, checks the widget, content and structure, and streams findings.POST /api/v1/diagnostica valid API key

Full input fields for every tool: references/tools.md.

Recommended workflows

Install and verify the widget

  1. get_widget_embed_code for the hotel; give the operator the html block.
  2. After they publish, check_website with the site URL: hasAgentScript and the detected client id confirm the install.
  3. If something is off, start_site_diagnostic and read the findings.

Tips

  • get_platform_status is a quick way to tell an API outage from a hotel-specific problem.

Pitfalls

  • Diagnostics run against public URLs only; private or password-protected sites cannot be checked.

Calling conventions

Same tool, three transports — pick whichever your runtime already speaks. Always send x-api-key.

bash
# REST
curl -X POST "https://maison-labs.com/api/v1/diagnostic/<sessionId>/chat" -H "x-api-key: $MAISON_API_KEY" -H "content-type: application/json" -d '{ "message": … }'
json
// MCP (https://maison-labs.com/mcp, Streamable HTTP): tools/call
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "chat_site_diagnostic", "arguments": { "message": … } } }
json
// A2A (https://maison-labs.com/a2a): tasks/send with a data part
{ "jsonrpc": "2.0", "id": 1, "method": "tasks/send", "params": { "message": { "role": "user", "parts": [{ "type": "data", "data": { "tool": "chat_site_diagnostic", "input": { "message": … } } }] } } }

Errors are the same everywhere: 401 no/invalid key; 403 forbidden with details.missing (the grants you lack — fall back to the composite's parts or stop); 403 not_entitled (the hotel's plan lacks the feature); 404, 409, 413 too_large, 503. Inputs that fail validation return 400 invalid_input with the Zod issues — fix and retry once.