MCP server
https://api.cadae.ai/mcp — one endpoint, every Cadae tool, scoped to the
caller's permissions.
Transport
Streamable HTTP (the MCP standard). The server responds to initialize,
tools/list and tools/call. Unauthenticated calls get a 401 with a
WWW-Authenticate header pointing at the protected-resource metadata, so
clients can discover OAuth automatically.
Tools
Tools are scope-filtered: a credential sees only the tools its scopes allow.
A tool marked destructive is two-phase. The first call writes nothing and
answers with a one-shot confirmToken; repeat the call with that token and the
same arguments to run it. A token minted for different arguments does not
authorise the call.
| Tool | Scope | What | Notes |
|---|---|---|---|
access_events_list | activities.read | Access and membership audit events | read-only |
activities_list | activities.read | Portfolio audit feed | read-only |
annual_confirmation_confirm | phi.write | Answer an annual property-model confirmation | |
annual_confirmation_pending | phi.read | The hotel's annual property-model confirmations | read-only |
applicability_overrides_list | phi.read | The hotel's applicability overrides | read-only |
asset_types_list | projects.read | Asset types this Portfolio can use, with their active configurable fields | read-only |
assumptions_approved | phi.read | The hotel's approved assumptions for a period | read-only |
assumptions_list | phi.read | The hotel's assumption needs and values | read-only |
assumptions_propose_need | phi.write | Propose that an assumption is needed | |
bills_address | phi.read | The hotel's bill forwarding address | read-only |
bills_archive | phi.write | Archive an inbound bill | |
bills_attach_manually | phi.write | Attach a bill to a source and a draft month by hand | |
bills_confirm_match | phi.write | Confirm a suggested match | |
bills_decline_match | phi.write | Decline a suggested match | |
bills_ensure_address | phi.write | Mint the hotel's bill forwarding address | |
bills_get | phi.read | One inbound bill and its suggested matches | read-only |
bills_list | phi.read | The hotel's bill inbox | read-only |
bills_retry_extraction | phi.write | Read an inbound bill again | |
bills_suggestions | phi.read | The suggested matches for one bill | read-only |
bills_upload | phi.write | Add a finalised document to the bill inbox | |
boundary_rules_approved | phi.read | The hotel's boundary rules in force on a date (approved, or superseded after it) | read-only |
boundary_rules_list | phi.read | The hotel's calculation-boundary rules | read-only |
boundary_rules_propose | phi.write | Propose a calculation-boundary rule | |
budgets_ledger | projects.read | The append-only budget ledger for one hotel and budget year | read-only |
budgets_position | projects.read | The delegated budget position for one hotel and budget year | read-only |
budgets_set | budgets.write | Set a hotel's delegated budget for one budget year | |
building_sections_remove | phi.write | Remove a building section from the hotel's draft property model | destructive, needs confirmToken |
building_sections_upsert | phi.write | Create or change a building section of the hotel's draft property model | |
context_landing | viewer.read | Where the signed-in user lands | read-only |
context_resolve | viewer.read | Resolve and re-authorise a route context | read-only |
context_tree | viewer.read | Authorised Portfolios and hotels for the switcher | read-only |
corrections_list | phi.read | The hotel's correction requests and Cadae's answers | read-only |
data_gaps_acknowledge | phi.write | Acknowledge a data gap | |
data_gaps_list | phi.read | The hotel's open data gaps | read-only |
data_sources_active | phi.read | The hotel's data sources active on a date | read-only |
data_sources_close | phi.write | Close a data source of the hotel | |
data_sources_create | phi.write | Register a data source for the hotel | |
data_sources_list | phi.read | The hotel's data-source register | read-only |
data_sources_replace | phi.write | Replace a meter of the hotel, with its closing and opening readings | |
data_sources_update | phi.write | Change an active data source of the hotel | |
documents_create_download_url | documents.read | Mint a signed download URL for a document version | read-only |
documents_create_reference | documents.write | Record reference-only evidence and link it to the record it supports | |
documents_create_upload_url | documents.write | Reserve a document and mint a signed upload URL | |
documents_create_version | documents.write | Replace a document with a new version | |
documents_download | documents.read | Download a document version (REST streams the file) | read-only |
documents_finalise_upload | documents.write | Finalise an uploaded document version | |
documents_get | documents.read | One document, with its versions and links | read-only |
documents_link | documents.write | Attach a document to a record | |
documents_list | documents.read | Documents attached to a record, or held at a scope | read-only |
documents_mark | documents.write | Mark a version superseded or added in error | destructive, needs confirmToken |
documents_requirements_status | documents.read | The document categories one of a Project's gates requires, each with whether a live document satisfies it | read-only |
documents_unlink | documents.write | Detach a document from a record | destructive, needs confirmToken |
facility_closures_remove | phi.write | Remove a closure from the hotel's draft property model | destructive, needs confirmToken |
facility_closures_upsert | phi.write | Record or change a closure in the hotel's draft property model | |
facility_presence_set | phi.write | Answer whether the hotel has a facility | |
facility_systems_close | phi.write | Close a facility system of the hotel's draft property model | |
facility_systems_link_areas | phi.write | Set the usage areas a facility system serves | |
facility_systems_upsert | phi.write | Record or change a facility system in the hotel's draft property model | |
hotel_activity | activities.read | A hotel's activity | read-only |
hotel_check_name | hotel.write | Would this hotel name be refused as a duplicate? | read-only |
hotel_create | hotel.write | Create hotel | |
hotel_get | hotel.read | One hotel | read-only |
hotel_list | hotel.read | Hotels I can access | read-only |
hotel_members_grant | members.write | Grant hotel access | |
hotel_members_list | members.read | Hotel members | read-only |
hotel_members_revoke | members.write | Revoke hotel access | destructive, needs confirmToken |
hotel_modules | hotel.read | Modules enabled for a hotel | read-only |
hotel_set_lifecycle | hotel.write | Set hotel lifecycle status | destructive, needs confirmToken |
hotel_set_primary_contact | members.write | Set a hotel's primary contact | |
hotel_update | hotel.write | Update hotel | |
invites_cancel | invites.write | Cancel an invitation | destructive, needs confirmToken |
invites_create | invites.write | Invite a member | |
invites_create_batch | invites.write | Invite several people | |
invites_list | members.read | List invitations | read-only |
invites_resend | invites.write | Resend an invitation | |
invites_retry_delivery | invites.write | Retry a failed invitation delivery | |
invites_update | invites.write | Edit and resend an invitation | destructive, needs confirmToken |
members_list | members.read | Portfolio members | read-only |
members_removal_preview | members.read | Open work and assignments a removal would affect | read-only |
members_remove | members.write | Remove a member from the Portfolio | destructive, needs confirmToken |
members_restore | members.write | Restore a suspended Portfolio membership | |
members_send_access_instructions | members.write | Email a member their sign-in instructions | |
members_suspend | members.write | Suspend a Portfolio membership | destructive, needs confirmToken |
members_update_access | members.write | Change a member's role, department or hotels | |
notifications_list | notifications.read | My notifications | read-only |
organisation_get | organisation.read | Portfolio detail | read-only |
organisation_list | organisation.read | Portfolios I can open | read-only |
organisation_update | organisation.write | Update a Portfolio | |
people_check_contacts | members.read | Check contacts before inviting | read-only |
people_get | members.read | One person's access | read-only |
people_list | members.read | People and access | read-only |
people_summary | members.read | People and access summary counts | read-only |
period_findings_explain | phi.write | Explain a validation finding | |
periods_ensure_baseline | phi.write | Create the hotel's baseline reporting months | |
periods_get | phi.read | One reporting month | read-only |
periods_history | phi.read | The input versions of one reporting month | read-only |
periods_list | phi.read | The hotel's reporting months | read-only |
periods_readiness | phi.read | The month's ready-to-submit checklist | read-only |
periods_request_correction | phi.write | Ask Cadae to correct a locked or published month | |
periods_save_draft | phi.write | Save a month's draft data | |
periods_submit | phi.write | Submit a month to Cadae | |
periods_submitted_version | phi.read | The submitted input version of a month | read-only |
periods_validate | phi.write | Re-run the validation catalogue over a month | |
phi_contacts_for | phi.read | The hotel's PHI data contacts | read-only |
phi_contacts_set | phi.write | Set the hotel's PHI data contacts | |
phi_dashboard_category_drivers | phi.read | The hotel's largest PHI category drivers | read-only |
phi_dashboard_coverage | phi.read | The hotel's PHI data coverage | read-only |
phi_dashboard_intensity | phi.read | The hotel's operational intensity measures | read-only |
phi_dashboard_point_detail | phi.read | One point of the PHI series, in detail | read-only |
phi_dashboard_resource_trend | phi.read | One resource's monthly trend | read-only |
phi_dashboard_series | phi.read | The hotel's PHI over time | read-only |
phi_dashboard_summary | phi.read | The hotel dashboard's headline cards and notices | read-only |
phi_dashboard_yearly_totals | phi.read | One resource's published calendar-year totals | read-only |
phi_events_archive | events.write | Archive a PHI event | destructive, needs confirmToken |
phi_events_create | events.write | Create a PHI event as a draft | |
phi_events_get | events.read | One PHI event | read-only |
phi_events_list | events.read | PHI events I can see, filtered | read-only |
phi_events_publish | events.write | Publish a PHI event | |
phi_events_set_date | events.write | Move a PHI event's date | |
phi_events_timeline | events.read | The PHI event markers for a chart | read-only |
phi_events_update | events.write | Edit a PHI event | |
phi_import_confirm | phi.write | Apply a validated import to the hotel's drafts | |
phi_import_discard | phi.write | Discard a staged import | |
phi_import_get | phi.read | One staged import | read-only |
phi_import_mappings | phi.read | A hotel's saved import source mappings | read-only |
phi_import_remap | phi.write | Map several source labels to registered meters | |
phi_import_resolve | phi.write | Decide what to do with one staged row | |
phi_import_rows | phi.read | The staged rows of one import | read-only |
phi_import_stage | phi.write | Open a staged import over an uploaded workbook | |
phi_import_validate | phi.write | Parse and classify a staged import | |
phi_imports_list | phi.read | A hotel's staged imports | read-only |
phi_results_breakdown | phi.read | One result's category totals and intensity measures | read-only |
phi_results_carbon | phi.read | One published month's CO₂ outputs | read-only |
phi_results_confidence | phi.read | One result's confidence level and reason | read-only |
phi_results_correction_history | phi.read | The correction history of a published window | read-only |
phi_results_cost | phi.read | One published month's eligible cost and theoretical cost gap | read-only |
phi_results_for_projects | phi.read | Published PHI quantities with their publication ids | read-only |
phi_results_get | phi.read | One PHI publication and the windows it published | read-only |
phi_results_latest | phi.read | The hotel's latest published PHI result | read-only |
phi_results_list | phi.read | The hotel's published PHI results | read-only |
phi_source_selections_list | phi.read | The source selections recorded for a hotel | read-only |
phi_summary_actions | phi.read | The Portfolio's action progress: Savings Task buckets, Projects by stage and what completed in the period | read-only |
phi_summary_hotel_actions | phi.read | A hotel's action progress: Savings Task buckets, Projects by stage and what completed in the period | read-only |
phi_summary_hotel_money | phi.read | A hotel's money story: savings realised in the period, the remaining opportunity and the investment return — three figures, never added | read-only |
phi_summary_hotel_risks | phi.read | A hotel's risk summary: open findings by severity, the oldest unresolved and the top types | read-only |
phi_summary_money | phi.read | The Portfolio's money story: savings realised in the period, the remaining opportunity and the investment return — three figures, never added | read-only |
phi_summary_risks | phi.read | The Portfolio's risk summary: open findings by severity, the oldest unresolved, the top types and the hotels affected | read-only |
phi_template | phi.read | The hotel's PHI data template (REST streams the .xlsx workbook) | read-only |
portfolio_category_breakdown | phi.read | The Portfolio's PHI category breakdown | read-only |
portfolio_compare_hotels | phi.read | Up to five hotels side by side | read-only |
portfolio_comparison_groups | phi.read | The Portfolio dashboard's four hotel comparison groups | read-only |
portfolio_confidence_breakdown | phi.read | Each hotel's PHI confidence, behind the Portfolio counts | read-only |
portfolio_context_markers | phi.read | The Portfolio's cohort context markers | read-only |
portfolio_data_coverage | phi.read | The Portfolio's PHI data coverage | read-only |
portfolio_export_league_table | phi.read | The Portfolio's hotels league table as CSV (REST streams the file) | read-only |
portfolio_intensity | phi.read | The Portfolio's intensity measures, as ratios of totals | read-only |
portfolio_league_table | phi.read | The Portfolio's hotels league table | read-only |
portfolio_phi_trend | phi.read | PHI over time, one line per hotel | read-only |
portfolio_resource_trend | phi.read | One resource's monthly totals across the Portfolio | read-only |
portfolio_summary | phi.read | The Portfolio's PHI headline cards | read-only |
programmes_archive | projects.write | Archive a programme label | |
programmes_create | projects.write | Create a programme label | |
programmes_list | projects.read | The Portfolio's programme labels | read-only |
programmes_update | projects.write | Rename a programme or change its description | |
project_adjusted_pipeline_set | projects.write | Choose which Projects of an overlap group count in the adjusted pipeline | |
project_assets_archive | projects.write | Archive an asset record (kept, read-only) | destructive, needs confirmToken |
project_assets_create | projects.write | Create an asset record, with its first configured answers | |
project_assets_get | projects.read | One asset record, with its answers and (optionally) their history | read-only |
project_assets_list | projects.read | A hotel's asset records, with their configured field answers | read-only |
project_assets_set_field_values | projects.write | Answer an asset record's configured fields | |
project_assets_update | projects.write | Change an asset record's name, location, quantity or details | |
project_business_case_export | projects.write | Generate a Project's business case as a PDF, filed in its Documents as Generated by Cadae — answers the export request and its state (stored, pending or failed) | |
project_business_case_export_status | projects.read | The state of a business-case PDF export you requested: stored (with a download URL), pending or failed | read-only |
project_business_case_get | projects.read | A Project's business case: Cadae's calculated summary and the hotel team's sections | read-only |
project_business_case_mark_reviewed | projects.write | Mark a Project's business-case sections reviewed against its current figures | |
project_business_case_print | projects.read | A Project's business case as a printable HTML document, in the hotel's language — about 350 KB, most of it the inlined typeface | read-only |
project_business_case_section_update | projects.write | Write one section of a Project's business case | |
project_collaborators_add | projects.write | Put somebody on this Project, or change the role they hold | |
project_collaborators_list | projects.read | Who is on this Project, and which of the hotel's people may be added | read-only |
project_collaborators_remove | projects.write | Take somebody off this Project | destructive, needs confirmToken |
project_comments_create | projects.write | Post a comment, mentioning colleagues with @name | |
project_comments_list | projects.read | A Project's comments, newest first | read-only |
project_complete | projects.write | Complete a Project — refused 412 until every item of the completion checklist is met | destructive, needs confirmToken |
project_completion_readiness | projects.read | The Complete checklist, over the stored answers or a draft of them — nothing is saved | read-only |
project_confidence_list | projects.read | The confidence judgements recorded on this Project | read-only |
project_confidence_record | projects.write | Record a confidence judgement, with its reason | |
project_costs_add | projects.write | Record an actual cost (VAT-exclusive) — posted to the hotel's budget ledger as actual spend | |
project_costs_confirm_proposal | projects.write | Confirm a supplier invoice the bill inbox proposed — recorded as an actual cost and posted to the ledger, as the person confirming; the document's figures may be corrected | |
project_costs_dismiss_proposal | projects.write | Dismiss a supplier invoice the bill inbox proposed, with the reason — nothing is recorded or posted | |
project_costs_list | projects.read | A Project's actual costs, the cost to date, the forecast and the variances against the approved amount and the preferred quote | read-only |
project_costs_update | projects.write | Correct an actual cost — a changed amount posts its difference to the ledger | |
project_delivery_readiness | projects.read | The Start delivery checklist: every item with whether it is satisfied and why not | read-only |
project_delivery_start | projects.write | Start delivery — refused 412 until every item of the delivery checklist is met | destructive, needs confirmToken |
project_financials_accept_recalculation | projects.write | Accept a Project's recalculation: re-pin a stale PHI baseline and recompute its figures | |
project_financials_snapshot | projects.write | Save this Project's figures as a new immutable version | |
project_financials_summary | projects.read | A Project's financial position, computed now, with its stored version | read-only |
project_financials_versions | projects.read | The immutable financial versions, newest first | read-only |
project_funding_delete | projects.write | Remove one external funding row from the live set | |
project_funding_list | projects.read | A Project's external funding, confirmed and potential | read-only |
project_funding_upsert | projects.write | Create or replace one external funding row | |
project_inbox_proposals_list | projects.read | The supplier invoices and quotes the bill inbox proposed to a Project, pending first — none is a recorded cost or quote until confirmed | read-only |
project_investment_lines_delete | projects.write | Remove one investment line from the live set | |
project_investment_lines_list | projects.read | A Project's investment lines | read-only |
project_investment_lines_upsert | projects.write | Create or replace one investment line (VAT-exclusive) | |
project_milestones_assign | projects.write | Assign or clear a milestone's owner (an active person with access to the hotel) | |
project_milestones_complete | projects.write | Complete a milestone on a date (the go-live milestone raises project.went_live) | |
project_milestones_create | projects.write | Add a milestone to a Project's plan | |
project_milestones_delete | projects.write | Take a milestone out of the plan (a completed one stays) | |
project_milestones_list | projects.read | A Project's milestones, with overdue derived in the hotel's time zone and owner access shown | read-only |
project_milestones_set_go_live | projects.write | Make this milestone the Project's one operational go-live | |
project_milestones_update | projects.write | Replace a milestone's fields (a date change keeps the previous date in history) | |
project_overlap_groups_list | projects.read | The overlap groups this Project sits in, and which options count in the adjusted pipeline | read-only |
project_overview_get | projects.read | A Project's identity, scope and dates | read-only |
project_overview_update | projects.write | Edit a Project's scope, dates and narrative | |
project_quote_required_set | projects.write | Say whether Start delivery needs a preferred quote; “no quote required” carries its reason | |
project_quotes_compare | projects.read | The live quotes side by side, with missing-document, expired and scope-mismatch warnings | read-only |
project_quotes_confirm_financials | projects.write | Confirm the preferred quote into a new financial version (investment lines, recurring cost, ROI) | |
project_quotes_confirm_proposal | projects.write | Confirm a supplier's quote the bill inbox proposed — recorded as a received quote, as the person confirming; nothing is preferred or confirmed into the figures | |
project_quotes_create | projects.write | Record a supplier's quote (received; nothing about the Project moves) | |
project_quotes_dismiss_proposal | projects.write | Dismiss a supplier's quote the bill inbox proposed, with the reason — no quote is recorded | |
project_quotes_link_investment_lines | projects.write | Set the investment lines a quote supports (replaces the set) | |
project_quotes_list | projects.read | A Project's quotes, each with its displayed status (Expired derived in the hotel's time zone) | read-only |
project_quotes_set_preferred | projects.write | Prefer a quote, with a reason — answers the proposed financial changes and writes none of them | |
project_quotes_update | projects.write | Replace a quote's typed fields (a confirmed quote's total and recurring cost are fixed) | |
project_quotes_withdraw | projects.write | Withdraw a quote from the running; its figures and file stay | |
project_relationships_clear | projects.write | Make two Projects independent again | |
project_relationships_list | projects.read | Projects this one depends on, overlaps or is an alternative to | read-only |
project_relationships_set | projects.write | State how this Project relates to another | |
project_saving_lines_delete | projects.write | Remove one saving line from the live set | |
project_saving_lines_list | projects.read | A Project's saving lines | read-only |
project_saving_lines_preview | projects.read | Price one saving line against this Project's assumptions, without saving it | read-only |
project_saving_lines_upsert | projects.write | Create or replace one saving line | |
project_templates_get | projects.read | One Project template version and everything it gives a Project | read-only |
project_templates_list | projects.read | Project templates this Portfolio can create a Project from | read-only |
project_utility_assumptions | projects.read | The prices this Project is costed at, per resource and budget year, with their basis | read-only |
project_utility_overrides_delete | projects.write | Drop a Project price override, so the hotel's forecast answers again | |
project_utility_overrides_upsert | projects.write | Set a Project-only unit price for one resource and year | |
project_verification_accept | projects.write | Accept the verification: the verified saving becomes the realised saving, derived once | needs confirmToken |
project_verification_draft | projects.write | Record the verified annual saving per resource, with its method, period and evidence | |
project_verification_get | projects.read | A Project's savings verification, its variance against the estimate, and what a reopen kept | read-only |
project_verification_mark_unable | projects.write | Record that the saving could not be verified, with the reason — it contributes no verified saving | |
project_versions_list | projects.read | A Project's scope and narrative snapshots, newest first | read-only |
projects_approve_under_delegation | projects.approve | Approve (or re-approve) a Project within the hotel's delegated authority | destructive, needs confirmToken |
projects_assets_link | projects.write | File one of the hotel's asset records under this Project | |
projects_assets_unlink | projects.write | Take an asset record out of this Project (it stays with the hotel) | |
projects_assign_owner | projects.write | Assign or clear a Project's owner | |
projects_copy_to_draft | projects.write | Restart a cancelled Project as a new Draft in its own hotel | |
projects_copy_to_draft_preview | projects.write | Preview restarting a cancelled Project as a new Draft in its own hotel | read-only |
projects_copy_to_hotel | projects.write | Copy this Project into another hotel of the Portfolio as a new Draft (an Owner's) | |
projects_copy_to_hotel_preview | projects.write | Preview a copy of this Project into another hotel of the Portfolio: what travels and what stays | read-only |
projects_create | projects.write | Create a Project in Draft | |
projects_create_from_template | projects.write | Create a Project in Draft from a Project template | |
projects_dashboard_analytics | projects.read | The Projects Analytics panels — status, type, hotel, return, budget, confidence and exceptions, over the filtered set | read-only |
projects_dashboard_board | projects.read | The Projects Pipeline board — six lifecycle columns, their totals and the exception lane | read-only |
projects_dashboard_board_reorder | projects.write | Move a Project within its column of the Pipeline board's manual order | |
projects_dashboard_filter_options | projects.read | The Projects dashboard's filter options, from the Projects the caller can read | read-only |
projects_dashboard_list | projects.read | One page of the Projects List — filtered, sorted and paged on the server | read-only |
projects_dashboard_summary | projects.read | The Projects dashboard's five headline cards, with the Projects behind each figure | read-only |
projects_dashboard_timeline | projects.read | The Projects Timeline — planned bars, milestone markers and the Projects whose dates are required | read-only |
projects_decide | projects.approve | Record an approval decision on a submitted Project, or re-approve an outgrown one | destructive, needs confirmToken |
projects_get | projects.read | One Project, with its governance answer, its action bar and its owner | read-only |
projects_governance | projects.read | Approval requirement, approval state and budget position | read-only |
projects_history | projects.read | A Project's lifecycle events and approval decisions | read-only |
projects_list | projects.read | Projects I can see, filtered | read-only |
projects_open_work | projects.read | The open work one person still holds: the Projects they own and the Savings Tasks they own or contribute to | read-only |
projects_reassign_open_work | projects.write | Reassign one person's open work — the Projects and Savings Tasks they own, their open task contributions and the milestones they own | destructive, needs confirmToken |
projects_set_budget_year | projects.write | Move a Project to another budget year | |
projects_set_owner_approval_required | projects.approve | Require (or stop requiring) Owner approval for this Project | |
projects_setup_baselines_list | projects.read | A hotel's annual Energy and Water baselines, with what PHI proposes | read-only |
projects_setup_baselines_upsert | projects.write | Accept PHI's baseline, or override it with a reason | |
projects_setup_get | projects.read | A hotel's Projects setup: baselines, price forecasts, delegated budget and readiness | read-only |
projects_setup_prices_list | projects.read | A hotel's utility prices for this budget year and the next three, VAT-exclusive | read-only |
projects_setup_prices_upsert | projects.write | Set utility prices, or a yearly % increase, for the current budget year and the next three | |
projects_setup_readiness | projects.read | Whether a hotel's Projects setup is ready, and what is missing | read-only |
projects_setup_update | projects.write | Save a hotel's Projects baselines and price forecasts | |
projects_summary_hotel_pipeline | projects.read | One hotel's remaining opportunity: gross, adjusted for overlaps, on hold and awaiting verification | read-only |
projects_summary_pipeline | projects.read | The Portfolio's remaining opportunity: gross, adjusted for overlaps, on hold and awaiting verification | read-only |
projects_transition | projects.write | Take a lifecycle action on a Project | destructive, needs confirmToken |
projects_update | projects.write | Update a Project's details (never its status) | |
projects_update_forecast | projects.write | Record a Project's revised final cost | |
property_model_approved_on | phi.read | The approved property model on a date or across a period | read-only |
property_model_field_history | phi.read | Every value one property-model field has held | read-only |
property_model_get | phi.read | The hotel's property model, with every record | read-only |
property_model_list_versions | phi.read | The hotel's property-model versions | read-only |
property_model_review | phi.read | The property model's review: section states, totals and submission blockers | read-only |
property_model_save_draft | phi.write | Save one section of the hotel's draft property model | |
property_model_sections | phi.read | The property model's sections, fields and answers | read-only |
property_model_setup_overview | phi.read | The hotel's PHI setup overview: workstreams, readiness and blockers | read-only |
property_model_submit | phi.write | Submit the hotel's property model for Cadae review | |
risk_findings_create | risks.write | Open a risk finding | |
risk_findings_create_event | risks.write | Put a risk finding on the PHI timeline | |
risk_findings_get | risks.read | One risk finding | read-only |
risk_findings_list | risks.read | Risk findings I can see, filtered | read-only |
risk_findings_promote_from_gap | risks.write | Promote a data gap into a risk finding | |
risk_findings_transition | risks.write | Move a risk finding to another status | destructive, needs confirmToken |
risk_findings_update | risks.write | Edit a risk finding | |
savings_tasks_assign | tasks.write | Assign or clear a task's owner and, when given, replace its contributors (active people with access to the hotel) | |
savings_tasks_block | tasks.write | Block a task — the reason, what is needed, and who is responsible where known | |
savings_tasks_cancel | tasks.write | Cancel a task with a reason (a required task is a documented exception only with an exception note) | destructive, needs confirmToken |
savings_tasks_complete | tasks.write | Complete a task — refused until every required answer and document is there and its dependency is complete or overridden; what it proposes waits for confirmation | |
savings_tasks_create | tasks.write | Add a Savings Task to a Project, with its owner, contributors and completion fields | |
savings_tasks_fields_set | tasks.write | Replace a task's completion fields (eight types, no conditions; an answered field keeps its type) | |
savings_tasks_get | tasks.read | One Savings Task, with its fields, answers and readiness to complete | read-only |
savings_tasks_list | tasks.read | A hotel's Savings Tasks across its Projects, with overdue derived in the hotel's time zone | read-only |
savings_tasks_list_for_portfolio | tasks.read | Savings Tasks across the Portfolio's hotels where Savings Tasks is on (an Owner's view) | read-only |
savings_tasks_list_for_project | tasks.read | A Project's Savings Tasks — fields, answers, readiness to complete and what each waits on | read-only |
savings_tasks_override_dependency | tasks.write | Let a task complete past an open dependency — an Owner's or an Administrator's, with a reason kept in history | |
savings_tasks_proposals_accept | projects.write | Confirm a task's proposal — the target's own command applies it (a quote is created, a milestone completed, an asset answer saved, a document filed) | |
savings_tasks_proposals_list | tasks.read | What completed tasks propose to change on a Project — current beside proposed, pending until confirmed | read-only |
savings_tasks_proposals_reject | projects.write | Reject a task's proposal — kept as history; nothing about the Project changes | |
savings_tasks_responses_submit | tasks.write | Answer one completion field of an open task — a document for a photograph or a file; a blank answer clears it | |
savings_tasks_start | tasks.write | Start a task (Not started → In progress) | |
savings_tasks_unblock | tasks.write | Unblock a task — it returns to the status it had | |
savings_tasks_update | tasks.write | Replace an open task's details (a changed dependency drops an earlier override) | |
source_record_charges_list | phi.read | The charge lines of a set of records | read-only |
source_records_mark_duplicate | phi.write | Mark a record as a duplicate of another | |
source_records_resolve_duplicate | phi.write | Clear a record's duplicate flag | |
source_records_void | phi.write | Void a utility source record | |
usage_areas_remove | phi.write | Remove a usage area from the hotel's draft property model | destructive, needs confirmToken |
usage_areas_upsert | phi.write | Create or change a usage area of the hotel's draft property model | |
viewer_me | viewer.read | Current user profile | read-only |
Every tool takes an optional organisationId. Leave it out and the credential's
own Portfolio is used; a credential bound to one Portfolio may not name another.
Refusals
A refused tool call comes back as a tool error whose text is a sentence. When the refusal is one you may want to tell apart, a second line carries a machine-readable token:
this hotel does not have that module enabled
reason: MODULE_DISABLED
MODULE_DISABLED means the Hotel does not have that module enabled — it is not
an empty result and must never be reported as a zero. Call hotel_modules for the
Hotel's own flags. A refusal with no reason: line is an access refusal, and says
nothing about the Hotel's modules.
Authentication
- OAuth (recommended) — the client walks the standard flow and receives per-user tools.
- Bearer token —
cad_osk_…/cad_pat_…for automation.
Clients
- Claude:
claude mcp add --transport http cadae https://api.cadae.ai/mcp - ChatGPT: Settings → Connectors → Create → paste the URL
- Cursor: one-click deep link on the MCP page