MCP
For developers.
Domus Inventum exposes a remote MCP server over Streamable HTTP, authenticated with OAuth 2.1.
Endpoint
https://domusinventum.com/mcp
Protected resource metadata is published at /.well-known/oauth-protected-resource. Compatible clients discover the authorisation server from the WWW-Authenticate challenge and register dynamically — there is no manual client setup.
Authentication
OAuth 2.1 authorisation code flow with PKCE. Access tokens are bound to a Domus Inventum account; requests without a valid bearer token are refused. Session tokens copied from the website are not accepted.
Every tool call runs as the authenticated account under row-level security, so a token can never reach records the same person could not open in the dashboard.
Scopes
properties:read— published inventory, developments, professionals, lifestyle.leads:write— enquiry submission.listings:write— draft creation, editing, validation, workflow and notes.listings:publish— publication of an already-approved listing.media:read/media:write— read connected media libraries; import, reorder, cover and detach listing photographs.
Listing and media scopes only take effect for professional accounts (agent, agency, developer); for a buyer account the underlying records simply do not resolve.
Tools — discovery and enquiry
search_properties— paginated listing search; summaries with canonical URLs.get_property— full listing detail. Accepts a UUID, listing slug, public slug, bare short reference or full canonical URL. Sale listings in a covered Spanish region also returnacquisition_costs: statutory purchase taxes with citations.get_transaction_costs— resale (ITP) versus new-build (IVA + AJD) taxes for Andalucía, Comunitat Valenciana, Madrid and Catalunya, optionally on a given price. Enacted law only; every figure carries its gazette citation and a verify-with-an-adviser disclaimer.get_property_lifestyle— cached lifestyle summary and nearby points of interest for one listing.list_developments— published developments by country or city.search_professionals— agents, agencies and developers.submit_enquiry— buyer enquiry against a listing; 24-hour de-duplication.create_account— invitation-based registration for buyer, agent, agency or developer.
Tools — property authoring (draft-first)
create_property_draft— create a draft from ordinary language and/or structured fields. Never publishes; unstated facts are left blank.update_property_draft— additive by default; returnspreserved.mode: "amend"is required to replace an existing fact.get_property_draft/list_property_drafts— read a draft back; list visible drafts, most recently touched first.validate_property_draft— publication requirements outstanding: facts, resolvable location, photographs and cover, marketing authority, rental licence, Listing Quality Index.prepare_draft_for_publication— mark a complete draft as awaiting approval. Does not publish.approve_property_draft— record the professional's explicit approval. Approval alone does not publish.publish_property_listing— publish an approved listing. Fails unless approval is on record and every requirement passes.assign_property_draft— hand a draft to a colleague in the same company.add_property_draft_note/list_property_draft_activity— notes and a full change history with origin.find_duplicate_property_candidates— possible existing records of the same home, with match reasons. Nothing is merged automatically.link_draft_to_master_property/unlink_draft_from_master_property— confirm one canonical record, or confirm a genuinely different property.
Tools — listing media
list_media_sources— connected media libraries and their connection health. Connecting a library is dashboard-only.browse_media_collections— one level of collections; passparent_collection_idto descend.search_media_assets— list a collection or search the library. Read-only.prepare_media_import— resolve a collection by name or id and show exactly what would be imported, including assets already present.import_selected_media— copy only the named assets into Domus Inventum storage and attach them, recording provenance.list_property_media,reorder_property_media,set_property_cover_image,remove_property_media— display order, cover selection and detachment. Originals in the library are untouched.
Tools — journal drafts (administrators only)
list_blog_categories— existing journal categories. Categories are never created automatically.create_blog_draft— hand over a finished article: title, body, excerpt, meta description, suggested slug, keywords, byline, category, tags and an optional featured image URL. It always lands as an unpublished draft, and there is no publish tool for articles. Slugs are sanitised and de-duplicated; unmatched categories are reported rather than invented.
Every tool declares both an input schema and an output schema, so clients that support structured results receive typed objects rather than free text.
Write safety
- All listing writes are draft-first; there is no create-and-publish call.
- Publication requires a recorded approval from the professional plus an explicit publish call carrying a confirmation flag.
- Updates preserve existing facts unless an amendment is explicitly requested.
- Media imports only ever copy the assets named in the call.
Rate limits
- 30 requests per minute
- 500 requests per hour
- 5,000 requests per day
Limits are per account, across all connected assistants. A breach returns an error result naming the limit; retry after a short pause.
Errors
- Not authenticated — missing or invalid bearer token; re-run the OAuth flow.
- Access revoked — Domus Inventum has revoked MCP access for the account.
- Missing scope — the principal does not hold the scope the tool requires.
- Rate limit exceeded — one of the limits above was hit.
- property_not_found — the identifier did not resolve to a published listing.
- Not approved / requirements not met — publication was attempted without a recorded approval or with outstanding validation failures.
- Validation errors — the tool input failed its schema; the message names the offending fields.
Auditing
Every request — successful, refused or rate-limited — is logged against the calling account, and every draft change records its origin. Your recent activity is summarised on Connections → Connect your AI.