Agent Skills / maison-quality
Install this skill alone, or read it below. Raw file: SKILL.md · references/tools.md
npx skills add https://docs.maison-labs.com --skill maison-qualityMaison — Quality: tests and Guest Agent quality review
Measure answer quality: run and read golden-FAQ test runs and chat test runs for a hotel, list the golden questions and chat tests, and (Maison staff) work the Guest Agent quality review queue (chat-feedback) — list items, run the classifier, resolve, dismiss or reopen. Use after knowledge changes to prove nothing regressed, or to triage conversations the classifier flagged as poor.
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
- Regression-test a hotel after content changes —
run_golden_faq_test, thenget_test_report. - Triage flagged conversations —
list_chat_feedbackwithstatus: "OPEN".
Before you start
- Send
x-api-key: <key>on every call; the key only reaches/api/v1. GET /api/v1/tools(or MCPtools/list) returns the tools THIS key may run — if a tool below is missing there, you lack a grant; do not retry it.- Client-scoped tools take
clientId(a hotel id).whoamilists the ids you can act on.
Tools
| Tool | What it does | REST | Needs |
|---|---|---|---|
dismiss_chat_feedback | Flip an OPEN Guest Agent quality review item to DISMISSED, recording an optional note. | POST /api/v1/chatfeedback/{feedbackId}/dismiss | chat-feedback WRITE (global) |
get_test_report | Retrieve the full per-question results for a test session: test id, client id, status (SUCCESS / FAIL / ERROR / QUEUED / IN_PROGRESS) and the raw report data. | GET /api/v1/client/{clientId}/testrun/{sessionId} | test-session READ (client); plan: test-session; read-only |
list_chat_feedback | Page through the Maison-global Guest Agent quality review queue (feature chat-feedback). | GET /api/v1/chatfeedback | chat-feedback READ (global); read-only |
list_chat_tests | Return all authored chat-test cases for a hotel. | GET /api/v1/client/{clientId}/chattests | test-session READ (client); plan: test-session; read-only |
list_golden_questions | Return all golden test questions for a hotel with their recent pass/fail history. | GET /api/v1/client/{clientId}/goldenfaq | test-session READ (client); plan: test-session; read-only |
list_test_runs | Page through test session runs for a hotel ordered newest first. | GET /api/v1/client/{clientId}/testruns | test-session READ (client); plan: test-session; read-only |
reopen_chat_feedback | Flip a RESOLVED or DISMISSED Guest Agent quality review item back to OPEN. | POST /api/v1/chatfeedback/{feedbackId}/reopen | chat-feedback WRITE (global) |
resolve_chat_feedback | Flip an OPEN Guest Agent quality review item to RESOLVED, recording an optional note. | POST /api/v1/chatfeedback/{feedbackId}/resolve | chat-feedback WRITE (global) |
run_chat_feedback | Trigger an asynchronous Guest Agent quality review scoring run. | POST /api/v1/chatfeedback/run | chat-feedback EXECUTE (global) |
run_chat_tests | Enqueue an ad-hoc test session from a set of test cases and client ids. | POST /api/v1/client/{clientId}/testrun | test-session EXECUTE (client); plan: test-session |
run_golden_faq_test | Enqueue a golden FAQ test run for a hotel. | POST /api/v1/client/{clientId}/testrun/goldenfaq | test-session EXECUTE (client); plan: test-session |
Full input fields for every tool: references/tools.md.
Recommended workflows
Golden FAQ run
list_golden_questions(optional, to pickquestionIds).run_golden_faq_test(202) → returns the session id.- Poll
list_test_runs; when complete,get_test_reportfor per-question scores.
Tips
- Test tools need the hotel's plan to include
test-sessionand the caller'stest-sessiongrant.
Pitfalls
- Guest Agent quality review tools are Maison-wide (
chat-feedbackglobal grant) — they are not per-hotel permissions. - A 409 on a status change means the item is already in that state.
Calling conventions
Same tool, three transports — pick whichever your runtime already speaks. Always send x-api-key.
# REST
curl -X POST "https://maison-labs.com/api/v1/chatfeedback/<feedbackId>/dismiss" -H "x-api-key: $MAISON_API_KEY" -H "content-type: application/json" -d '{}'// MCP (https://maison-labs.com/mcp, Streamable HTTP): tools/call
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "dismiss_chat_feedback", "arguments": {} } }// 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": "dismiss_chat_feedback", "input": {} } }] } } }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.