MushRoom

Property Management Made Simple

MushRoom is software the studio built and operates for itself. It is not a SaaS we sell seats for — it is the proof point we point to when clients ask “can a single senior engineer ship and run something real?” Multi-tenant on AWS, AI-integrated, deployed daily, used in production. The same approach is available for client engagements where the shape fits.

MushRoom dashboard showing unified calendar, bookings, and property management interface

Simple. Mobile. Powerful.

Mobile-FirstBuilt for how you actually work. Check bookings, respond to guests, and manage properties from your phone.
Radically SimpleNo clunky menus. No confusing workflows. Every feature is exactly where you expect it to be.
Only What You NeedMushRoom is modular. Turn on the features you use, leave off what you don't.

What’s running in production

Unified Calendar
AirBnB Integration
Digital Check-In
Invoicing
Profit & Loss
Tax Calculation
Cleaning Coordination

What multi-tenant looks like

Multi-CurrencyEUR, USD, GBP, HUF, and more. Work in the currencies your business uses.
Role-Based AccessAdmins, managers, and staff with appropriate permissions for each role.
Multi-PropertySwitch between properties instantly. Manage your entire portfolio from one place.

Where the AI integration sits

MCP server with OAuth 2.1

Claude Desktop and similar AI clients connect via PKCE auth, not by pasting data into a chat window. Hierarchical mcp:read and mcp:write scopes; refresh tokens rotate on every exchange.

Eleven read tools, property-scoped

list_bookings, financial_summary, search_guest, list_tax_periods, and the rest. The AI only sees what its operator can see — multi-tenant boundaries enforced per call, not at the prompt layer.

Seven write tools, scope-gated

set_tax_target, create_expense, update_booking_checkin_time. mcp:read tokens cannot mutate; requireWriteScope() throws before the row is touched. Auto-generated rows stay read-only.

Per-request user context via AsyncLocalStorage

Every tool handler reads { userId, role } from an ALS context bound at request entry. Concurrent AI clients cannot see each other’s data, and tools cannot run without a user bound.

The same architecture, AI integration, and deploy practice the studio brings to client work — visible in something the studio runs itself.