Guest check-in and SES.HOSPEDAJES (police registration) compliance for the signed-in host's short-term rental properties. Tools return status/completeness only — never guest documents, email, phone, or passport/DNI numbers.
Partelisto MCP demonstrates solid fundamentals: all 8 tools have clear verb-noun naming (list_*, get_*, send_*, create_*), comprehensive descriptions (avg 180 chars, well within 10-1024 range), and explicit input schemas with type definitions and parameter descriptions. Tool annotations (ReadOnly, Idempotent, OpenWorld) are present and correct. However, output schemas are not documented in the visible code, ResponseShaper classes exist but their return types are not shown. Error handling is minimal: no recovery guidance, no actionable error messages, no confirmation pattern for destructive write operations (send_guest_checkin_link, create_booking). Parameter constraints lack enforcement details (e.g., 'max 50' for bookingIds is validated in code but not formally constrained in schema). Descriptions are good but could be more LLM-optimized with explicit dependency hints and prerequisite clarity.
Creates a new booking (a check-in workflow) for one of the host's properties. Requires the write permission granted separately during sign-in. Ask the host to confirm the property and dates before calling this. Does not email the guest — call send_guest_checkin_link afterwards if a link should go out now.
Scans the signed-in host's most recent bookings (up to 50) and returns only what needs action right now: stays that are imminent or under way where the guest has not completed check-in, and bookings whose SES.HOSPEDAJES submission failed. Empty list means nothing needs attention within the window. No guest PII.
Whether the guest has completed the check-in form for a booking the host owns (None or Submitted). No form content.
The signed-in host's plan tier, trial status, and this month's usage against plan limits (properties, templates, bookings).
Lists the signed-in host's bookings (newest first), paged. Returns id, property id, check-in/check-out dates, status, and whether a check-in link and guest contact exist — never the guest's email, phone, or documents.
Output schemas not documented. ResponseShaper classes exist but return types (PropertySummary, BookingsPage, GuestFormStatus, etc.) are not visible in provided code. LLMs cannot plan downstream tool calls or extract fields without knowing response structure.
No error recovery guidance. Tools throw McpException (e.g., 'Pass at most 50 booking ids at a time') but do not guide the LLM on what to do next. Errors should suggest alternatives or recovery steps.
Destructive write operations lack confirmation pattern. send_guest_checkin_link and create_booking modify state (send emails, create records) but have no dry-run, confirmation step, or explicit warning in schema. Description says 'Ask the host to confirm' but this is not enforced by the tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Lists the signed-in host's properties: id, name, address, municipality/province, and whether it is archived. No guest data.
SES.HOSPEDAJES (police registration) submission status for a set of bookings the host owns: status, attempts, last error, and the official reference once accepted. Bookings with no submission yet are omitted.
Sends (or resends) the guest check-in link by email for a booking the host owns. This is a real action with a side effect: it emails the guest and, on resend, invalidates the guest's previous link. Requires the write permission granted separately during sign-in. Ask the host to confirm before calling this.
Parameter constraints not formally declared. 'max 50' for bookingIds and 'max 50' for take are validated in code but not expressed as JSON Schema maxItems/maximum. LLMs cannot see these limits without reading descriptions.
Descriptions lack dependency hints. Tools like create_booking require propertyId (from list_properties) and templateId (implicit), but descriptions do not explicitly guide the LLM to call list_properties first or explain when templateId is optional.