{"$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-05T20:29:18.907Z","url":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport","markdownUrl":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport.md","server":{"slug":"cloudcorprecords-stayport","name":"io.github.CloudCorpRecords/stayport","registryName":"io.github.CloudCorpRecords/stayport","description":"Hostex PMS via MCP: properties, reservations, availability, messages, reviews, and webhooks.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"ghcr-io-cloudcorprecords-stayport","type":"oci","identifier":"ghcr.io/cloudcorprecords/stayport","withdrawn":false,"url":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport","version":"0.1.0","transport":"stdio","scoredAt":"2026-11-05T02:28:49.971Z"},"score":{"total":39,"tier":"low","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":39},{"date":"2026-11-04","total":39},{"date":"2026-11-03","total":38},{"date":"2026-11-02","total":38}]},"categories":[{"name":"Supply Chain Security","score":0,"verdict":"unverified","reasons":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.","Install-script risk not yet assessed.","Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read."],"codes":[{"code":"supplychain.malware_inconclusive","args":{"reason":"ecosystem_unsupported"}},{"code":"cve.inconclusive","args":{"reason":"no_sbom_attached"}},{"code":"installscript.inconclusive","args":{"reason":"no_install_concept"}},{"code":"dephealth.inconclusive","args":{"reason":"no_sbom_attached"}}]},{"name":"Provenance & Transparency","score":45,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 2 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"2"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":68,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Tool/resource definitions use about 1640 tokens (~71/item across 23 items; 23 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_lean","args":{"avg":"71","items":"23","tools":"23","tokens":"1640","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":10,"verdict":"partial","reasons":["Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"3"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":75,"verdict":"fail","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; \"hostex_send_message\" implies \"send\" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.","An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_undeclared","args":{"pct":"0","tool":"hostex_send_message","verb":"send","declared":"none","annotated":"0","destructive":"2"}},{"code":"toolsafety.manipulation_clean","args":{"units":"23","judged":"23"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.","Install-script risk not yet assessed.","Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read."],"malware":[],"components":[{"slug":"reneturcios-stayport","type":"npm","identifier":"@reneturcios/stayport","withdrawn":false,"score":62,"current":false,"url":"https://verifymcp.io/servers/cloudcorprecords-stayport/reneturcios-stayport","markdownUrl":"https://verifymcp.io/servers/cloudcorprecords-stayport/reneturcios-stayport.md"},{"slug":"ghcr-io-cloudcorprecords-stayport","type":"oci","identifier":"ghcr.io/cloudcorprecords/stayport","withdrawn":false,"score":39,"current":true,"url":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport","markdownUrl":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport.md"}],"facts":[{"label":"Registry","value":"oci"},{"label":"Package","value":"ghcr.io/cloudcorprecords/stayport"},{"label":"Version","value":"0.1.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"hostex_list_properties","title":null,"description":"List properties from your Hostex account. Returns property details including ID, title, address, channels, and location coordinates.","inputs":[{"name":"id","type":"number","required":false,"description":"Property id filter; return only the property with this id."},{"name":"limit","type":"number","required":false,"description":"Maximum number of properties to return."},{"name":"offset","type":"number","required":false,"description":"Number of records to skip, for paging."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":80},{"name":"hostex_list_room_types","title":null,"description":"List room types from your Hostex account.","inputs":[{"name":"limit","type":"number","required":false,"description":"Maximum number of room types to return."},{"name":"offset","type":"number","required":false,"description":"Number of records to skip, for paging."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":49},{"name":"hostex_list_reservations","title":null,"description":"List and search reservations with filters like status, dates, property ID, etc.","inputs":[{"name":"end_check_in_date","type":"string","required":false,"description":"Latest check-in date to include, YYYY-MM-DD."},{"name":"end_check_out_date","type":"string","required":false,"description":"Latest check-out date to include, YYYY-MM-DD."},{"name":"limit","type":"number","required":false,"description":"Maximum number of reservations to return."},{"name":"offset","type":"number","required":false,"description":"Number of records to skip, for paging."},{"name":"order_by","type":"string","required":false,"description":"Sort field for the results."},{"name":"property_id","type":"number","required":false,"description":"Property id filter."},{"name":"reservation_code","type":"string","required":false,"description":"Reservation code filter."},{"name":"start_check_in_date","type":"string","required":false,"description":"Earliest check-in date to include, YYYY-MM-DD."},{"name":"start_check_out_date","type":"string","required":false,"description":"Earliest check-out date to include, YYYY-MM-DD."},{"name":"status","type":"string","required":false,"description":"Reservation status filter: wait_accept, wait_pay, accepted, cancelled, denied, or timeout."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":198},{"name":"hostex_create_reservation","title":null,"description":"Create a direct booking reservation in Hostex.","inputs":[{"name":"check_in_date","type":"string","required":true,"description":"Check-in date, YYYY-MM-DD."},{"name":"check_out_date","type":"string","required":true,"description":"Check-out date, YYYY-MM-DD."},{"name":"commission_amount","type":"number","required":true,"description":"Commission amount."},{"name":"currency","type":"string","required":true,"description":"Currency code for the amounts."},{"name":"custom_channel_id","type":"number","required":true,"description":"Custom channel id for the direct booking."},{"name":"email","type":"string","required":false,"description":"Guest email address."},{"name":"guest_name","type":"string","required":true,"description":"Guest name."},{"name":"income_method_id","type":"number","required":true,"description":"Income method id."},{"name":"mobile","type":"string","required":false,"description":"Guest mobile number."},{"name":"number_of_guests","type":"number","required":false,"description":"Number of guests."},{"name":"property_id","type":"string","required":true,"description":"Property id to book."},{"name":"rate_amount","type":"number","required":true,"description":"Booking rate amount."},{"name":"received_amount","type":"number","required":true,"description":"Amount received."},{"name":"remarks","type":"string","required":false,"description":"Remarks recorded with the reservation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":190},{"name":"hostex_cancel_reservation","title":null,"description":"Cancel a direct booking reservation (channel bookings not supported).","inputs":[{"name":"reservation_code","type":"string","required":true,"description":"Reservation code of the direct booking to cancel."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":38},{"name":"hostex_update_lock_code","title":null,"description":"Update the lock code for a stay.","inputs":[{"name":"lock_code","type":"string","required":true,"description":"New lock code."},{"name":"stay_code","type":"string","required":true,"description":"Stay code to update the lock code for."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":46},{"name":"hostex_get_custom_fields","title":null,"description":"Get custom fields for a stay.","inputs":[{"name":"stay_code","type":"string","required":true,"description":"Stay code to get custom fields for."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":33},{"name":"hostex_update_custom_fields","title":null,"description":"Update custom fields for a stay. Custom fields can be used in automated messages using {{cf.field_name}} syntax.","inputs":[{"name":"custom_fields","type":"object","required":true,"description":"Custom fields object, keyed by field name."},{"name":"stay_code","type":"string","required":true,"description":"Stay code to update custom fields for."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":65},{"name":"hostex_list_availabilities","title":null,"description":"Query property availability for date ranges.","inputs":[{"name":"end_date","type":"string","required":true,"description":"End of the date range, YYYY-MM-DD."},{"name":"property_ids","type":"string","required":true,"description":"Property ids to query, comma-separated."},{"name":"start_date","type":"string","required":true,"description":"Start of the date range, YYYY-MM-DD."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":68},{"name":"hostex_update_availabilities","title":null,"description":"Update property availability status for specific dates or date ranges.","inputs":[{"name":"available","type":"boolean","required":true,"description":"Whether the properties are available on the given dates."},{"name":"dates","type":"array","required":false,"description":"Specific dates to update, as an array."},{"name":"end_date","type":"string","required":false,"description":"End of the date range to update, YYYY-MM-DD."},{"name":"property_ids","type":"array","required":true,"description":"Property ids to update."},{"name":"start_date","type":"string","required":false,"description":"Start of the date range to update, YYYY-MM-DD."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":104},{"name":"hostex_list_conversations","title":null,"description":"List guest conversations and inquiries.","inputs":[{"name":"limit","type":"number","required":false,"description":"Maximum number of conversations to return."},{"name":"offset","type":"number","required":false,"description":"Number of records to skip, for paging."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":45},{"name":"hostex_get_conversation","title":null,"description":"Get conversation details including all messages.","inputs":[{"name":"conversation_id","type":"string","required":true,"description":"Conversation id to fetch."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":30},{"name":"hostex_send_message","title":null,"description":"Send a text or image message to a guest.","inputs":[{"name":"conversation_id","type":"string","required":true,"description":"Conversation id to send the message in."},{"name":"jpeg_base64","type":"string","required":false,"description":"Image to send, as a base64-encoded JPEG."},{"name":"message","type":"string","required":false,"description":"Text message to send."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":66},{"name":"hostex_list_reviews","title":null,"description":"Query reviews with filters.","inputs":[{"name":"end_check_out_date","type":"string","required":false,"description":"Latest check-out date to include, YYYY-MM-DD."},{"name":"limit","type":"number","required":false,"description":"Maximum number of reviews to return."},{"name":"offset","type":"number","required":false,"description":"Number of records to skip, for paging."},{"name":"property_id","type":"number","required":false,"description":"Property id filter."},{"name":"reservation_code","type":"string","required":false,"description":"Reservation code filter."},{"name":"review_status","type":"string","required":false,"description":"Review status filter."},{"name":"start_check_out_date","type":"string","required":false,"description":"Earliest check-out date to include, YYYY-MM-DD."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":117},{"name":"hostex_create_review","title":null,"description":"Create a review or reply for a reservation.","inputs":[{"name":"host_reply_content","type":"string","required":false,"description":"Host reply text to an existing review."},{"name":"host_review_content","type":"string","required":false,"description":"Host review text."},{"name":"host_review_score","type":"number","required":false,"description":"Host review score for the guest."},{"name":"reservation_code","type":"string","required":true,"description":"Reservation code the review applies to."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":76},{"name":"hostex_post_guest_review","title":null,"description":"Post a comprehensive guest review with category ratings (requires login via email/password config). This posts reviews as they appear on the Hostex web app.","inputs":[{"name":"cleanliness","type":"string","required":true,"description":"Cleanliness rating, 1 to 5."},{"name":"cleanliness_content","type":"string","required":false,"description":"Comment on the cleanliness rating."},{"name":"communication","type":"string","required":true,"description":"Communication rating, 1 to 5."},{"name":"communication_content","type":"string","required":false,"description":"Comment on the communication rating."},{"name":"content","type":"string","required":true,"description":"Review text."},{"name":"overall_rating","type":"string","required":true,"description":"Overall rating, 1 to 5."},{"name":"recommend","type":"string","required":true,"description":"Whether the host recommends the guest: 0 or 1."},{"name":"reservation_order_code","type":"string","required":true,"description":"Reservation order code the review applies to."},{"name":"respect_house_rules_content","type":"string","required":false,"description":"Comment on the house-rules rating."},{"name":"respect_of_house_rules","type":"string","required":true,"description":"Respect-of-house-rules rating, 1 to 5."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":196},{"name":"hostex_list_webhooks","title":null,"description":"List configured webhooks.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":16},{"name":"hostex_create_webhook","title":null,"description":"Create a new webhook.","inputs":[{"name":"url","type":"string","required":true,"description":"Webhook endpoint URL."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":27},{"name":"hostex_delete_webhook","title":null,"description":"Delete a webhook (only manageable ones).","inputs":[{"name":"webhook_id","type":"number","required":true,"description":"Webhook id to delete."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":32},{"name":"hostex_get_listing_calendar","title":null,"description":"Get calendar information for multiple listings.","inputs":[{"name":"end_date","type":"string","required":true,"description":"End of the calendar range, YYYY-MM-DD."},{"name":"listings","type":"array","required":true,"description":"Listing ids to get calendar information for."},{"name":"start_date","type":"string","required":true,"description":"Start of the calendar range, YYYY-MM-DD."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":66},{"name":"hostex_update_listing_prices","title":null,"description":"Update listing prices for channel listings.","inputs":[{"name":"channel_type","type":"string","required":true,"description":"Channel type of the listing."},{"name":"listing_id","type":"string","required":true,"description":"Listing id to update prices for."},{"name":"prices","type":"array","required":true,"description":"Price entries to apply, as an array."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":60},{"name":"hostex_list_custom_channels","title":null,"description":"Get custom channels from Custom Options Page.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":19},{"name":"hostex_list_income_methods","title":null,"description":"Get income methods from Custom Options Page.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":19}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T02:28:49.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":"no_attestation","reasonLabel":"No attestation published","discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-11-02","recent":[{"id":"chg_01a1a465-355d-7e15-9d8f-70fb58738408","kind":"score.total_changed","summary":"Trust score (38 → 39)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport#chg-chg_01a1a465-355d-7e15-9d8f-70fb58738408"},{"id":"chg_01a19c0e-6c21-75fa-a008-26acbbee083b","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport#chg-chg_01a19c0e-6c21-75fa-a008-26acbbee083b"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport/changelog.json"},"links":{"html":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport","markdown":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport.md","changelogJson":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport/changelog.json","changelogRss":"https://verifymcp.io/servers/cloudcorprecords-stayport/ghcr-io-cloudcorprecords-stayport.xml","external":[{"label":"GitHub Container Registry","href":"https://ghcr.io/cloudcorprecords/stayport"},{"label":"Repository","href":"https://github.com/CloudCorpRecords/stayport"}]}}