{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T15:46:40.861Z","url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio.md","server":{"slug":"io-usefulapi-reservio","name":"Reservio MCP by usefulapi","registryName":"io.usefulapi/reservio","description":"Check open slots, list bookings, services and staff, book appointments and group events in Reservio.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"reservio","type":"remote","identifier":"https://reservio.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio","version":"1.5.3","transport":null,"scoredAt":"2026-11-05T15:04:16.154Z"},"score":{"total":18,"tier":"low","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":18},{"date":"2026-11-04","total":18},{"date":"2026-11-03","total":18},{"date":"2026-11-02","total":18},{"date":"2026-11-01","total":18},{"date":"2026-10-31","total":65}]},"categories":[{"name":"Endpoint Security","score":46,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.unreachable","args":{}},{"code":"https.inconclusive","args":{"reason":"redirect_not_https"}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":0,"verdict":"fail","reasons":["Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly."],"codes":[{"code":"transport.redirected","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":0,"verdict":"unverified","reasons":["Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list."],"codes":[{"code":"schema.unreachable","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":0,"verdict":"unverified","reasons":["Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolquality.unreachable","args":{}}]},{"name":"Tool Safety","score":0,"verdict":"unverified","reasons":["Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolsafety.unreachable","args":{}}]},{"name":"Capabilities","score":0,"verdict":"unverified","reasons":["Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"codes":[{"code":"cap.unreachable","args":{}}]}],"inconclusive":["Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.","Stability not yet verified: not enough scan history yet (needs a 30-day window).","Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"malware":[],"components":[{"slug":"reservio","type":"remote","identifier":"https://reservio.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio.md"}],"facts":[{"label":"Endpoint","value":"https://reservio.usefulapi.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.5.3"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"reservio_get_business","title":"Get a business","description":"Get the business profile: name, address, contact details, time zone. Reservio API: GET /businesses/{businessId}.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":56},{"name":"reservio_list_services","title":"List services","description":"List the services clients can book, with duration, price and capacity. Reservio API: GET /businesses/{businessId}/services.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"filter","type":"object","required":false,"description":"Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API)."},{"name":"limit","type":"integer","required":false,"description":"Page size (default 50)."},{"name":"offset","type":"integer","required":false,"description":"Number of items to skip, for paging."},{"name":"sort","type":"string","required":false,"description":"Sort column, prefix - for descending, e.g. -createdAt."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":133},{"name":"reservio_get_service","title":"Get a service","description":"Get one service by id. Reservio API: GET /businesses/{businessId}/services/{serviceId}.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"service_id","type":"string","required":true,"description":"Service id (from reservio_list_services)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":68},{"name":"reservio_list_resources","title":"List resources (staff)","description":"List bookable resources, such as staff members or rooms. Reservio API: GET /businesses/{businessId}/resources.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"filter","type":"object","required":false,"description":"Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API)."},{"name":"limit","type":"integer","required":false,"description":"Page size (default 50)."},{"name":"offset","type":"integer","required":false,"description":"Number of items to skip, for paging."},{"name":"sort","type":"string","required":false,"description":"Sort column, prefix - for descending, e.g. -createdAt."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":131},{"name":"reservio_get_resource","title":"Get a resource","description":"Get one resource (staff member or room) by id. Reservio API: GET /businesses/{businessId}/resources/{resourceId}.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"resource_id","type":"string","required":true,"description":"Resource id (from reservio_list_resources)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":74},{"name":"reservio_list_events","title":"List events","description":"List calendar events (appointments, group events, blocked time) with start, end, type and capacity. Reservio API: GET /businesses/{businessId}/events.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"filter","type":"object","required":false,"description":"Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API)."},{"name":"limit","type":"integer","required":false,"description":"Page size (default 50)."},{"name":"offset","type":"integer","required":false,"description":"Number of items to skip, for paging."},{"name":"sort","type":"string","required":false,"description":"Sort column, prefix - for descending, e.g. -createdAt."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":140},{"name":"reservio_list_bookings","title":"List bookings","description":"List bookings with client name, state, cost and linked event. Sort by -createdAt to see the newest first (Reservio has no webhooks, so polling this is the way to find new bookings). Reservio API: GET /businesses/{businessId}/bookings.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"filter","type":"object","required":false,"description":"Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API)."},{"name":"limit","type":"integer","required":false,"description":"Page size (default 50)."},{"name":"offset","type":"integer","required":false,"description":"Number of items to skip, for paging."},{"name":"sort","type":"string","required":false,"description":"Sort column, prefix - for descending, e.g. -createdAt."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":163},{"name":"reservio_list_coupons","title":"List coupons","description":"List coupons (credit or visit packages). Reservio API: GET /businesses/{businessId}/coupons.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"filter","type":"object","required":false,"description":"Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API)."},{"name":"limit","type":"integer","required":false,"description":"Page size (default 50)."},{"name":"offset","type":"integer","required":false,"description":"Number of items to skip, for paging."},{"name":"sort","type":"string","required":false,"description":"Sort column, prefix - for descending, e.g. -createdAt."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":130},{"name":"reservio_get_coupon","title":"Get a coupon","description":"Get one coupon by id. Reservio API: GET /businesses/{businessId}/coupons/{couponId}.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"coupon_id","type":"string","required":true,"description":"Coupon id (from reservio_list_coupons)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":71},{"name":"reservio_list_opening_hours","title":"List opening hours","description":"List the opening hours of the business (days and start/end in seconds from midnight). Reservio API: GET /businesses/{businessId}/opening-hours.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":63},{"name":"reservio_list_rosters","title":"List rosters","description":"List staff work schedules (rosters) per resource and date. Reservio API: GET /businesses/{businessId}/rosters.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"filter","type":"object","required":false,"description":"Filters as {\"name\": \"Bob\"}; each key becomes filter[key]=value (JSON:API)."},{"name":"limit","type":"integer","required":false,"description":"Page size (default 50)."},{"name":"offset","type":"integer","required":false,"description":"Number of items to skip, for paging."},{"name":"sort","type":"string","required":false,"description":"Sort column, prefix - for descending, e.g. -createdAt."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":134},{"name":"reservio_get_booking_slots","title":"Get free booking slots","description":"List free time slots for a service in a date range, optionally for one resource. Use before creating a booking. Reservio API: GET /businesses/{businessId}/availability/booking-slots.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"from","type":"string","required":true,"description":"Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."},{"name":"resource_id","type":"string","required":false,"description":"Limit to one resource (staff member), from reservio_list_resources."},{"name":"service_id","type":"string","required":true,"description":"Service id."},{"name":"to","type":"string","required":true,"description":"Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":180},{"name":"reservio_get_booking_days","title":"Get bookable days","description":"For each day in a range, tell whether any slot is free for a service. Reservio API: GET /businesses/{businessId}/availability/booking-days.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"from","type":"string","required":true,"description":"Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."},{"name":"resource_id","type":"string","required":false,"description":"Limit to one resource (staff member), from reservio_list_resources."},{"name":"service_id","type":"string","required":true,"description":"Service id."},{"name":"to","type":"string","required":true,"description":"Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":173},{"name":"reservio_get_event_days","title":"Get days with open events","description":"For each day in a range, tell whether a group event is open for booking. Reservio API: GET /businesses/{businessId}/availability/event-days.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"from","type":"string","required":true,"description":"Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."},{"name":"resource_id","type":"string","required":false,"description":"Limit to one resource (staff member), from reservio_list_resources."},{"name":"to","type":"string","required":true,"description":"Date or datetime, e.g. 2026-11-02 or 2026-11-02T09:00:00+01:00."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":162},{"name":"reservio_create_appointment_booking","title":"Create an appointment booking","description":"WRITE: create a real appointment booking for a service at a start/end time (use a slot from reservio_get_booking_slots). Reservio may notify the client. Not safe to repeat: a second call books a second appointment. Reservio API: POST /businesses/{businessId}/bookings.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"client","type":"object","required":true,"description":null},{"name":"end","type":"string","required":true,"description":"Slot end, ISO 8601 with offset."},{"name":"note","type":"string","required":false,"description":"Note for the booking."},{"name":"service_id","type":"string","required":true,"description":"Service id."},{"name":"start","type":"string","required":true,"description":"Slot start, ISO 8601 with offset."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":152},{"name":"reservio_create_group_booking","title":"Book a group event","description":"WRITE: book a client into an existing group event (event id from reservio_list_events). Reservio may notify the client. Not safe to repeat: a second call books a second seat. Reservio API: POST /businesses/{businessId}/bookings.","inputs":[{"name":"business_id","type":"string","required":false,"description":"Business id. Default: the business you entered at login."},{"name":"client","type":"object","required":true,"description":null},{"name":"event_id","type":"string","required":true,"description":"Group event id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":102}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T15:04:16.000Z","track":"remote","endpoint":"https://reservio.usefulapi.io/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=usefulapi.io","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-09-13T08:55:39Z","notAfter":"2026-12-12T09:54:12Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"reservio.usefulapi.io.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"io.","outcome":"verified","label":"Verified"},{"zone":"usefulapi.io.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"inconclusive","label":"Inconclusive","gate":null,"gateLabel":null,"status":302,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":302},"transports":[{"transport":"streamable-http","outcome":"redirected","label":"Redirected","status":302,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-31","recent":[{"id":"chg_01a196a8-ca41-7cc3-aec8-a222ae75424a","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio#chg-chg_01a196a8-ca41-7cc3-aec8-a222ae75424a"},{"id":"chg_01a196a8-ca42-7d37-b0c9-7af7a8446dd6","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio#chg-chg_01a196a8-ca42-7d37-b0c9-7af7a8446dd6"},{"id":"chg_01a196a8-ca43-7723-9df1-d141acd0423b","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio#chg-chg_01a196a8-ca43-7723-9df1-d141acd0423b"},{"id":"chg_01a196a8-ca44-7809-91d8-e111cb1a07c2","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio#chg-chg_01a196a8-ca44-7809-91d8-e111cb1a07c2"},{"id":"chg_01a196a8-ca44-7eab-b866-998f96c4de23","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio#chg-chg_01a196a8-ca44-7eab-b866-998f96c4de23"},{"id":"chg_01a196a8-ca45-74d5-ae3e-e941deda971e","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio#chg-chg_01a196a8-ca45-74d5-ae3e-e941deda971e"},{"id":"chg_01a196a8-ca45-7a9a-9931-f10e0c72cec9","kind":"score.total_changed","summary":"Trust score (65 → 18)","materiality":"functional","direction":"regression","scoreDelta":-47,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio#chg-chg_01a196a8-ca45-7a9a-9931-f10e0c72cec9"},{"id":"chg_01a193fd-d8ac-72e7-8ce7-c9a66f00699a","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio#chg-chg_01a193fd-d8ac-72e7-8ce7-c9a66f00699a"},{"id":"chg_01a192e8-13df-7c66-b8ce-7c5a45d5f99a","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio#chg-chg_01a192e8-13df-7c66-b8ce-7c5a45d5f99a"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio","markdown":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-reservio/reservio.xml","external":[{"label":"Remote endpoint","href":"https://reservio.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/reservio/"}]}}