Operto MCP by usefulapi
Server Details
Read properties, reservations, guest access codes, smart locks and thermostats in Operto.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 8 tools
Each tool has a clearly distinct resource and action: singleton gets by id versus filtered lists by property or organization. The pair operto_list_thermostats (organization-wide) and operto_list_property_thermostats (single property) is explicitly differentiated by scope. The lock tool is also clearly distinguished as read-only and property-scoped.
All tools follow a predictable operto_verb_noun pattern using snake_case. Resource names are consistently reused across get and list variants (property, reservation, thermostat), making the set easy to scan.
Eight tools is well-scoped for a read-oriented property/reservation/device integration. Each tool earns its place by covering a distinct resource or scope, with no redundant listings.
Read coverage is solid across properties, reservations, thermostats, and locks, but the surface is entirely GET-based. Core lifecycle operations such as updating reservations, setting thermostat holds/temperatures, or controlling locks are absent, and reservations can only be listed per property rather than globally.
Available Tools
8 toolsoperto_get_propertyGet a propertyARead-onlyInspect
Get one property by id, including its details and current room status (for example clean-available, guest-checking-in, cleaning-started). Operto API: GET /v2/partners/properties/{property_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| keyid | No | Set to "partner" when the id you pass is your own partner id (partner_id / partner_reservation_id) instead of the Operto id. | |
| property_id | Yes | The Operto property id (from operto_list_properties), or the partner_id with keyid=partner. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the safety profile, and the description adds useful transparency by describing the returned details and current room status examples, plus the API endpoint. It does not cover error behavior or auth requirements, but it adds meaningful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero waste, front-loading the action and returned content before the API endpoint detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-by-id tool with complete schema coverage, annotations, and no output schema, the description is sufficiently complete. It tells the agent what the tool returns and how it maps to the Operto API.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both property_id and the keyid enum are fully documented in the schema. The description only echoes 'by id' and adds no syntax or format meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('property'), and scope ('one ... by id'), which clearly distinguishes it from operto_list_properties and the reservation/thermostat getters. It also names the returned content (details and current room status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by id, and the schema notes the id comes from operto_list_properties, but the description itself does not explicitly say when to use this tool versus the list or other getter siblings. No exclusions or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operto_get_reservationGet a reservationARead-onlyInspect
Get one reservation by id: status, dates, guest contact data and the guest access and checkout codes. Contains personal guest data. Operto API: GET /v2/partners/reservations/{reservation_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| keyid | No | Set to "partner" when the id you pass is your own partner id (partner_id / partner_reservation_id) instead of the Operto id. | |
| reservation_id | Yes | The Operto reservation id, or the partner_reservation_id with keyid=partner. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description still adds real value beyond that: it flags that the response 'Contains personal guest data' (a handling/privacy caveat) and names the exact Operto endpoint, which helps an agent reason about scope and sensitivity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and payload, then the data-sensitivity note, then the endpoint. Nothing is repeated and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must convey return contents — it does so explicitly (status, dates, guest contact data, access and checkout codes). Combined with 100% schema coverage on the two parameters and the readOnly annotation, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself explains the keyid='partner' switch and the reservation_id dual meaning. The description only restates 'by id' and adds no syntax, format, or fallback detail beyond what the schema already documents, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get one reservation by id') and enumerates what comes back: status, dates, guest contact data, access and checkout codes. The 'one' vs. the sibling operto_list_reservations makes the single-record scope unambiguous, and the underlying endpoint is given.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' implies the caller must already hold a reservation id, which is useful context, but there is no explicit when-to-use guidance, no exclusion, and no mention of operto_list_reservations as the alternative when an id is not known.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operto_get_thermostatGet a thermostatARead-onlyInspect
Get one thermostat by id: online status, current temperature in Fahrenheit and Celsius, and any active hold. Operto API: GET /v2/partners/thermostats/{thermostat_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| thermostat_id | Yes | The thermostat id (from operto_list_thermostats). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a safe read, so the description's added value is the field-level disclosure of what comes back (online status, dual-unit temperature, active hold). It stops short of noting behavior when the id is invalid or the thermostat is offline, but the return-shape detail is meaningful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the payload summary leads, and the endpoint reference trails as scaffolding. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read with no output schema, the description usefully previews the returned fields, which is the main information gap an agent would otherwise have. Missing only failure-case behavior (nonexistent id, offline device), which is a modest omission for a simple getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage and a single required parameter already documented in the schema—including its origin from operto_list_thermostats—the description adds no syntax or format instruction beyond restating 'by id'. Baseline 3 applies when structured data does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get one thermostat by id') and enumerates what it returns: online status, temperature in Fahrenheit and Celsius, active hold. The endpoint reference confirms the exact API surface, and 'one ... by id' distinguishes it from the sibling list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'by id' and the schema note that the id comes from operto_list_thermostats, which sketches the list-then-get workflow. However, the description itself names no alternatives or when-not conditions, leaving the agent to infer that operto_list_property_thermostats or operto_list_thermostats is the right path when the id is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operto_list_locksList locks of a propertyARead-onlyInspect
List the smart locks of one property with name, battery level, locked state and device_id. Read only: this tool does not open or close a lock. Operto API: GET /v2/partners/properties/{property_id}/locks.
| Name | Required | Description | Default |
|---|---|---|---|
| keyid | No | Set to "partner" when the id you pass is your own partner id (partner_id / partner_reservation_id) instead of the Operto id. | |
| property_id | Yes | The Operto property id, or the partner_id with keyid=partner. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No output schema exists, so describing the returned fields (name, battery level, locked state, device_id) is genuinely additive. It also underscores the read-only nature beyond the readOnlyHint annotation and cites the underlying API route for parity/debugging. It does not discuss error behavior for an unknown property_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: payload first, safety/route second. Nothing is redundant and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage and annotations, the description covers purpose, return payload, safety profile and endpoint. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters, including the keyid='partner' enum semantics, are fully documented in the schema. The description adds no parameter syntax or format detail beyond what is already structured, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the smart locks of one property') and enumerates exactly what comes back (name, battery level, locked state, device_id). This clearly separates it from the sibling list/get tools for properties, reservations and thermostats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a scope boundary ('Read only: this tool does not open or close a lock') which implicitly tells the agent this is a read path, but it never states when to prefer it over alternatives or what prerequisite (a valid property_id) must be satisfied. No sibling tools cover locks, so there is nothing to route between, but the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operto_list_propertiesList propertiesARead-onlyInspect
List the properties (units) in your Operto account with their Operto id, partner_id, name and subscription state. Good first call: the ids feed the other tools. Operto API: GET /v2/partners/properties.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's job is to add scope, and it does: it discloses the exact fields returned and that entries are account-scoped ('in your Operto account'). It omits pagination/result-size behavior, which is the main remaining unknown for a list endpoint with no parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences: what it returns, then why it matters as a first call, with the endpoint appended as a compact reference. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey the return shape, and it enumerates the key fields plus the id's downstream utility, which is sufficient to call the tool correctly. Pagination or result-size limits are the only meaningful omission for a parameterless list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. Schema coverage is 100% and empty, consistent with the description's framing as a parameterless account-wide listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the properties (units)'), names the fields returned (Operto id, partner_id, name, subscription state), and gives the underlying endpoint. The 'list' vs 'get' distinction from operto_get_property is clear without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Good first call: the ids feed the other tools' explicitly tells the agent when to reach for this tool and why. It stops short of naming an alternative or a when-not-to-use condition (e.g. use operto_get_property for a single unit's detail), so it is a clear context statement rather than a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operto_list_property_thermostatsList thermostats of a propertyARead-onlyInspect
List the smart thermostats of one property with type and online status. Operto API: GET /v2/partners/properties/{property_id}/thermostats.
| Name | Required | Description | Default |
|---|---|---|---|
| keyid | No | Set to "partner" when the id you pass is your own partner id (partner_id / partner_reservation_id) instead of the Operto id. | |
| property_id | Yes | The Operto property id, or the partner_id with keyid=partner. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real value by disclosing the returned fields (type and online status) and the underlying endpoint, but says nothing about behavior when property_id is invalid or about the keyid=partner fallback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and scope, with no filler. The trailing API path is compact and useful for mapping to Operto docs, though it is the least essential element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read with a fully described schema and a readOnly annotation, the definition covers what it does, what it returns, and the endpoint. Only the sibling-vs-sibling routing decision is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, including a documented enum for keyid, so the schema already carries parameter meaning. The description adds nothing about the property_id vs keyid=partner relationship, leaving the baseline score appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the smart thermostats of one property") and even names the fields returned. It implicitly separates itself from the sibling operto_list_thermostats by scoping to a single property, though it never names that sibling outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you need a property_id, so the tool applies when you already know the property. There is no explicit guidance on when to use this versus operto_list_thermostats (all thermostats) or operto_get_thermostat (single unit), which are the obvious alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operto_list_reservationsList reservationsARead-onlyInspect
List the reservations of one property: status, check-in and check-out time, guest name, phone, email and door codes. Contains personal guest data. Operto API: GET /v2/partners/properties/{property_id}/reservations.
| Name | Required | Description | Default |
|---|---|---|---|
| keyid | No | Set to "partner" when the id you pass is your own partner id (partner_id / partner_reservation_id) instead of the Operto id. | |
| property_id | Yes | The Operto property id, or the partner_id with keyid=partner. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, so the safety profile is covered. The description adds genuinely new context: the payload contains personal guest data and enumerates what comes back (status, times, name, phone, email, door codes). Pagination/result-size behavior is still undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences: scope first, returned fields second, endpoint last. No filler, and the PII caution is stated where it matters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, listing the returned fields is exactly the right compensation, and the PII flag prepares the agent for sensitive data. The remaining gap is result volume/pagination, which matters for a per-property list that could be long.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including a documented keyid enum with partner-vs-Operto id semantics, so the schema carries the parameter burden. The description adds nothing about property_id or keyid beyond what the schema already states; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource with scope ('reservations of one property') and an enumeration of returned fields, plus the underlying endpoint. It is clearly distinct from operto_get_reservation by being a property-scoped list, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Scope ('of one property') implies the property_id requirement and the PII warning hints at handling care, but there is no explicit statement of when to use this versus operto_get_reservation or operto_list_properties, nor any prerequisite or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operto_list_thermostatsList all thermostatsARead-onlyInspect
List every smart thermostat in your organization with its property, type (for example EcoBee, Tado) and online status. Operto API: GET /v2/partners/thermostats.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful context by disclosing the underlying endpoint (GET /v2/partners/thermostats) and the fields surfaced. It says nothing about pagination, result size, or rate limits for an org-wide list, which is the main behavioral risk here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no waste: the scope and return shape come first, the API endpoint last. Nothing is redundant or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully specifies what each result contains (property, type, online status). For a full-organization list, the absence of any note on result volume or pagination is the one remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies no filtering arguments are available, which is consistent with the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (every smart thermostat) with an explicit scope, 'in your organization', which distinguishes it from operto_list_property_thermostats. It also names the returned fields (property, type, online status). It stops short of naming the sibling it is not, so an agent must infer the org-vs-property split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The organizational scope implies when to use this over the per-property sibling, but there is no explicit when-to-use or when-not-to-use statement and no named alternative. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
- First observed
operto_get_property - First observed
operto_get_reservation - First observed
operto_get_thermostat - First observed
operto_list_locks - First observed
operto_list_properties - First observed
operto_list_property_thermostats - First observed
operto_list_reservations - First observed
operto_list_thermostats
Related MCP Connectors
Read rooms, rates, inventory, reservations and price quotes in ThinkReservations.
111Read DoorLoop properties, units, leases, tenants and payments; create tasks and task updates.
211Read activities, bookings, guests and open departures in TrekkSoft.
101Manage OwnerRez properties, bookings, guests, quotes and inquiries.
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides read-only access to Hostaway PMS data, enabling assistants to answer questions about listings, calendars, reservations, and inbox threads, and generate occupancy, inbox, and completeness reports without writing or sending anything.1134 npmMIT
- AlicenseAqualityCmaintenanceConnects AI assistants to the Hostaway property management API via 10 read-only tools covering listings, reservations, calendars, guest conversations, and owner statements.10454 npm4MIT
- AlicenseAqualityDmaintenanceEnables interaction with the Lodgify vacation rental API to manage properties, bookings, and calendar data. It provides tools for retrieving property details, creating or updating bookings, and monitoring rental availability.823 PyPI2MIT
- AlicenseNot gradedqualityBmaintenanceEnables read-only research of public Outsite locations, quoted stay rates, and individual room calendars.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.