{"serverId":"mcp-registry/club.elron/public-rentals","tools":[{"name":"applications.complete_document_upload","fixed":{"name":"applications_complete_document_upload","description":"Verify the uploaded object, content signature, session ownership, expiry, and exact application version before creating the protected document record.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["expectedVersion","sessionToken","uploadSessionId","idempotencyKey"],"properties":{"sessionToken":{"type":"string","maxLength":500,"minLength":1},"idempotencyKey":{"type":"string","maxLength":200,"minLength":1},"expectedVersion":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"uploadSessionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Complete a signed application-document upload"},"changes":[{"kind":"name","detail":"Renamed \"applications.complete_document_upload\" → \"applications_complete_document_upload\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":314,"tokensAfter":314},{"name":"applications.create_document_upload","fixed":{"name":"applications_create_document_upload","description":"Create a 15-minute, exact-size and exact-content-type signed upload form for one email-verified application at its exact current version.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["expectedVersion","contextKey","fileName","mimeType","sizeBytes","sessionToken","idempotencyKey"],"properties":{"fileName":{"type":"string","maxLength":200,"minLength":1},"mimeType":{"enum":["application/pdf","image/jpeg","image/png"],"type":"string"},"sizeBytes":{"type":"integer","maximum":10000000,"minimum":1},"contextKey":{"type":"string","maxLength":200,"minLength":1},"sessionToken":{"type":"string","maxLength":500,"minLength":1},"idempotencyKey":{"type":"string","maxLength":200,"minLength":1},"expectedVersion":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"title":"Create a signed application-document upload"},"changes":[{"kind":"name","detail":"Renamed \"applications.create_document_upload\" → \"applications_create_document_upload\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":327,"tokensAfter":327},{"name":"applications.get_status","fixed":{"name":"applications_get_status","description":"Read the privacy-minimized status and next actions for one scoped application session token.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["sessionToken"],"properties":{"sessionToken":{"type":"string","maxLength":500,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Get public application status"},"changes":[{"kind":"name","detail":"Renamed \"applications.get_status\" → \"applications_get_status\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"applications.start","fixed":{"name":"applications_start","description":"Create or reuse a duplicate-safe applicant workspace for one published rental. Requires explicit current privacy consent and an idempotency key. Email verification is sent to the applicant; the tool never returns the verification URL.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["rentalId","journey","firstName","lastName","email","phone","privacyConsentAccepted","privacyConsentVersion","idempotencyKey"],"properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","maxLength":320},"phone":{"type":"string","maxLength":100,"minLength":6},"locale":{"enum":["de","en"],"type":"string","default":"de"},"journey":{"enum":["INQUIRY","APPLICATION"],"type":"string"},"lastName":{"type":"string","maxLength":100,"minLength":1},"rentalId":{"type":"string","maxLength":200,"minLength":1},"firstName":{"type":"string","maxLength":100,"minLength":1},"idempotencyKey":{"type":"string","maxLength":200,"minLength":1},"desiredDurationMonths":{"anyOf":[{"type":"integer","maximum":120,"minimum":1},{"type":"null"}]},"privacyConsentVersion":{"type":"string","const":"2026-07-13"},"requestedParkingCount":{"anyOf":[{"type":"integer","maximum":10,"minimum":0},{"type":"null"}]},"privacyConsentAccepted":{"type":"boolean","const":true}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Start an Elron Club inquiry or application"},"changes":[{"kind":"name","detail":"Renamed \"applications.start\" → \"applications_start\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":405,"tokensAfter":405},{"name":"applications.submit","fixed":{"name":"applications_submit","description":"Submit one complete email-verified application for review using its exact version, explicit current credit-check and truth-confirmation consent, and a durable idempotency key.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["expectedVersion","creditCheckConsentAccepted","truthConfirmationAccepted","consentVersion","sessionToken","idempotencyKey"],"properties":{"sessionToken":{"type":"string","maxLength":500,"minLength":1},"consentVersion":{"type":"string","const":"2026-07-13"},"idempotencyKey":{"type":"string","maxLength":200,"minLength":1},"expectedVersion":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"truthConfirmationAccepted":{"type":"boolean","const":true},"creditCheckConsentAccepted":{"type":"boolean","const":true}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Submit a verified Elron Club application"},"changes":[{"kind":"name","detail":"Renamed \"applications.submit\" → \"applications_submit\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":317,"tokensAfter":317},{"name":"applications.update","fixed":{"name":"applications_update","description":"Update bounded applicant, tenancy, and billing data for one email-verified session using its exact current version and a durable idempotency key.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["expectedVersion","sessionToken","idempotencyKey"],"properties":{"minorCount":{"anyOf":[{"type":"integer","maximum":20,"minimum":0},{"type":"null"}]},"petSummary":{"type":"string","maxLength":2000},"billingCity":{"type":"string","maxLength":100},"billingEmail":{"anyOf":[{"type":"string","const":""},{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","maxLength":320}]},"sessionToken":{"type":"string","maxLength":500,"minLength":1},"idempotencyKey":{"type":"string","maxLength":200,"minLength":1},"tenantProfiles":{"type":"array","items":{"type":"object","required":["id","isMainTenant","firstName","lastName","birthDate","identityDocumentType","passportOrIdNumber","phone","email","nationalityCode","permitStatus","permitDetails","addressSameAsMainTenant","addressLine1","addressLine2","postalCode","city","countryCode","isBillingRecipient","isPrimaryTenancyContact"],"properties":{"id":{"type":"string","maxLength":100,"minLength":1},"city":{"type":"string","maxLength":100},"email":{"anyOf":[{"type":"string","const":""},{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","maxLength":320}]},"phone":{"type":"string","maxLength":100},"lastName":{"type":"string","maxLength":100},"birthDate":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"firstName":{"type":"string","maxLength":100},"postalCode":{"type":"string","maxLength":30},"countryCode":{"type":"string","maxLength":10},"addressLine1":{"type":"string","maxLength":200},"addressLine2":{"type":"string","maxLength":200},"isMainTenant":{"type":"boolean"},"permitStatus":{"enum":["SWISS_CITIZEN","EU_EFTA_CITIZEN","PERMIT_B","PERMIT_C","PERMIT_L","PERMIT_G","PERMIT_CI","PERMIT_F","PERMIT_N","PERMIT_S","NO_PERMIT_YET","OTHER"],"type":"string"},"permitDetails":{"type":"string","maxLength":500},"nationalityCode":{"type":"string","maxLength":10},"isBillingRecipient":{"type":"boolean"},"passportOrIdNumber":{"type":"string","maxLength":200},"identityDocumentType":{"enum":["PASSPORT","EU_ID"],"type":"string"},"addressSameAsMainTenant":{"type":"boolean"},"isPrimaryTenancyContact":{"type":"boolean"}},"additionalProperties":false},"maxItems":10},"expectedVersion":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"tenantPartyMode":{"enum":["PRIVATE","COMPANY"],"type":"string"},"applicantMessage":{"type":"string","maxLength":10000},"billingIntentType":{"enum":["TENANT","COMPANY","OTHER_PRIVATE"],"type":"string"},"billingPostalCode":{"type":"string","maxLength":30},"companyTenantCity":{"type":"string","maxLength":100},"companyTenantName":{"type":"string","maxLength":500},"desiredMoveInDate":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"preferredLanguage":{"enum":["de","en"],"type":"string"},"billingCountryCode":{"type":"string","maxLength":10},"billingStreetLine1":{"type":"string","maxLength":200},"billingStreetLine2":{"type":"string","maxLength":200},"companyBillingName":{"type":"string","maxLength":500},"desiredMoveOutDate":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"companyTenantSigners":{"type":"array","items":{"type":"object","required":["id","firstName","lastName","roleTitle","email","phone"],"properties":{"id":{"type":"string","maxLength":100,"minLength":1},"email":{"anyOf":[{"type":"string","const":""},{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","maxLength":320}]},"phone":{"type":"string","maxLength":100},"lastName":{"type":"string","maxLength":100},"firstName":{"type":"string","maxLength":100},"roleTitle":{"type":"string","maxLength":100}},"additionalProperties":false},"maxItems":10},"contractLanguageCode":{"enum":["DE","EN"],"type":"string"},"desiredDurationMonths":{"anyOf":[{"type":"integer","maximum":120,"minimum":1},{"type":"null"}]},"employerOrCompanyName":{"type":"string","maxLength":500},"requestedParkingCount":{"anyOf":[{"type":"integer","maximum":10,"minimum":0},{"type":"null"}]},"billingPrivateLastName":{"type":"string","maxLength":100},"billingPrivateFirstName":{"type":"string","maxLength":100},"companyTenantPostalCode":{"type":"string","maxLength":30},"employmentStatusSummary":{"type":"string","maxLength":2000},"companyTenantCountryCode":{"type":"string","maxLength":10},"companyTenantStreetLine1":{"type":"string","maxLength":200},"companyTenantStreetLine2":{"type":"string","maxLength":200}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Update a verified Elron Club application"},"changes":[{"kind":"name","detail":"Renamed \"applications.update\" → \"applications_update\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":1621,"tokensAfter":1621},{"name":"applications.upload_document","fixed":{"name":"applications_upload_document","description":"Upload one bounded PDF, JPEG, or PNG identity or company-registry document to an email-verified application using its exact version and a durable idempotency key.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["expectedVersion","contextKey","fileName","mimeType","sizeBytes","contentBase64","sessionToken","idempotencyKey"],"properties":{"fileName":{"type":"string","maxLength":200,"minLength":1},"mimeType":{"enum":["application/pdf","image/jpeg","image/png"],"type":"string"},"sizeBytes":{"type":"integer","maximum":10000000,"minimum":1},"contextKey":{"type":"string","maxLength":200,"minLength":1},"sessionToken":{"type":"string","maxLength":500,"minLength":1},"contentBase64":{"type":"string","maxLength":14000000,"minLength":4},"idempotencyKey":{"type":"string","maxLength":200,"minLength":1},"expectedVersion":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Upload a verified application document"},"changes":[{"kind":"name","detail":"Renamed \"applications.upload_document\" → \"applications_upload_document\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":355,"tokensAfter":355},{"name":"bookings.get_confirmation","fixed":{"name":"bookings_get_confirmation","description":"Return a privacy-minimized booking confirmation only after the request has converted into the authoritative Stay workflow.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["sessionToken"],"properties":{"sessionToken":{"type":"string","maxLength":500,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Get booking confirmation"},"changes":[{"kind":"name","detail":"Renamed \"bookings.get_confirmation\" → \"bookings_get_confirmation\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"contracts.get_signing_link","fixed":{"name":"contracts_get_signing_link","description":"Return a secure signing URL only when the active signer invitation email matches the email-verified application session. Human verification, review, and signature remain in the signing flow.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["sessionToken"],"properties":{"sessionToken":{"type":"string","maxLength":500,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Get the verified applicant's contract signing link"},"changes":[{"kind":"name","detail":"Renamed \"contracts.get_signing_link\" → \"contracts_get_signing_link\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"help.get","fixed":{"name":"help_get","description":"Read the same approved localized article as the public website, including related answers and next steps. Historical examples never override an individual signed agreement. Returns no apartment credentials, staff notes or individual case data.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["articleId"],"properties":{"locale":{"enum":["de","en"],"type":"string","default":"de"},"articleId":{"type":"string","maxLength":100,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Read an elron club help article"},"changes":[{"kind":"name","detail":"Renamed \"help.get\" → \"help_get\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":154,"tokensAfter":154},{"name":"help.search","fixed":{"name":"help_search","description":"Search approved general DE/EN guidance for applicants, residents and coworking guests. Returns article IDs and canonical links. Use rentals tools for current apartment availability and prices; personal tenancy details require the resident's own portal.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":10,"maximum":30,"minimum":1},"query":{"type":"string","default":"","maxLength":200},"locale":{"enum":["de","en"],"type":"string","default":"de"},"offset":{"type":"integer","default":0,"maximum":1000,"minimum":0},"category":{"enum":["home","building","contract","emergencies","coworking","services"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Search the elron club Help Center"},"changes":[{"kind":"name","detail":"Renamed \"help.search\" → \"help_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":215,"tokensAfter":215},{"name":"payments.get_status","fixed":{"name":"payments_get_status","description":"Return due and received payment truth for the scoped application. An approved human-action URL is returned only from an exact, unexpired provider session; no authorization URL is fabricated.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["sessionToken"],"properties":{"sessionToken":{"type":"string","maxLength":500,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Get first-payment status"},"changes":[{"kind":"name","detail":"Renamed \"payments.get_status\" → \"payments_get_status\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"quotes.accept","fixed":{"name":"quotes_accept","description":"With explicit customer confirmation, accept one exact active quote and atomically claim a 30-minute request-owned availability hold. This does not create or sign a contract and does not authorize payment.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["expectedQuoteVersion","acceptanceConfirmed","sessionToken","quoteId","idempotencyKey"],"properties":{"quoteId":{"type":"string","maxLength":200,"minLength":1},"sessionToken":{"type":"string","maxLength":500,"minLength":1},"idempotencyKey":{"type":"string","maxLength":200,"minLength":1},"acceptanceConfirmed":{"type":"boolean","const":true},"expectedQuoteVersion":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Accept a quote and claim an expiry-bound availability hold"},"changes":[{"kind":"name","detail":"Renamed \"quotes.accept\" → \"quotes_accept\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":296,"tokensAfter":296},{"name":"quotes.create","fixed":{"name":"quotes_create","description":"Snapshot customer-safe approved request terms into a 24-hour quote. The application must be submitted, internally approved, due-diligence positive, and solvency passed. This does not hold inventory.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["expectedApplicationVersion","sessionToken","idempotencyKey"],"properties":{"sessionToken":{"type":"string","maxLength":500,"minLength":1},"idempotencyKey":{"type":"string","maxLength":200,"minLength":1},"expectedApplicationVersion":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Create an approved Elron Club rental quote"},"changes":[{"kind":"name","detail":"Renamed \"quotes.create\" → \"quotes_create\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":258,"tokensAfter":258},{"name":"quotes.get","fixed":{"name":"quotes_get","description":"Read one privacy-minimized quote and its live expiry/availability-hold state using the application session that owns it.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["sessionToken","quoteId"],"properties":{"quoteId":{"type":"string","maxLength":200,"minLength":1},"sessionToken":{"type":"string","maxLength":500,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Get a scoped Elron Club rental quote"},"changes":[{"kind":"name","detail":"Renamed \"quotes.get\" → \"quotes_get\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"rentals.check_availability","fixed":{"name":"rentals_check_availability","description":"Check the current published availability state and earliest date for one rental. This does not create a hold or reservation.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["rentalId"],"properties":{"locale":{"enum":["de","en"],"type":"string","default":"de"},"rentalId":{"type":"string","maxLength":200,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Check verified rental availability"},"changes":[{"kind":"name","detail":"Renamed \"rentals.check_availability\" → \"rentals_check_availability\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":125,"tokensAfter":125},{"name":"rentals.get","fixed":{"name":"rentals_get","description":"Return localized customer-safe apartment details, verified availability, duration pricing, deposit, included services, terms, eligibility, media, and inquiry/application links.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["rentalId"],"properties":{"locale":{"enum":["de","en"],"type":"string","default":"de"},"rentalId":{"type":"string","maxLength":200,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Get a published Elron Club rental"},"changes":[{"kind":"name","detail":"Renamed \"rentals.get\" → \"rentals_get\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":136,"tokensAfter":136},{"name":"rentals.get_pricing","fixed":{"name":"rentals_get_pricing","description":"Return current published monthly pricing by supported duration, parking, deposit, inclusions, payment method, and minimum-stay terms. Pricing is informational until a quote or hold is issued.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["rentalId"],"properties":{"locale":{"enum":["de","en"],"type":"string","default":"de"},"rentalId":{"type":"string","maxLength":200,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Get duration pricing and fees"},"changes":[{"kind":"name","detail":"Renamed \"rentals.get_pricing\" → \"rentals_get_pricing\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":142,"tokensAfter":142},{"name":"rentals.search","fixed":{"name":"rentals_search","description":"Return a compact, actionable shortlist of published furnished apartments by location, availability, capacity, rooms, duration, and monthly rent. Defaults to 10 available or upcoming rentals; call rentals.get for complete details.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"city":{"type":"string","maxLength":100,"minLength":1,"description":"City name; matching is case- and accent-insensitive."},"limit":{"type":"integer","default":10,"maximum":50,"minimum":1,"description":"Maximum shortlist size; inspect total and hasMore."},"query":{"type":"string","maxLength":200,"minLength":1,"description":"Free text across rental, property, city, and region names."},"locale":{"enum":["de","en"],"type":"string","default":"de"},"region":{"type":"string","maxLength":100,"minLength":1,"description":"Region name; common English, German, and unaccented forms are accepted."},"minimumRooms":{"type":"number","maximum":20,"minimum":0.5,"description":"Minimum room count."},"availableFrom":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","description":"Latest acceptable move-in date in ISO YYYY-MM-DD; later or unverified upcoming availability is excluded."},"durationMonths":{"anyOf":[{"type":"number","const":3},{"type":"number","const":6},{"type":"number","const":12}],"description":"Minimum rental duration used for price filtering."},"minimumOccupancy":{"type":"integer","maximum":50,"minimum":1,"description":"Minimum supported resident count."},"availabilityStatus":{"enum":["AVAILABLE_OR_UPCOMING","AVAILABLE","UPCOMING","UNAVAILABLE","ANY"],"type":"string","default":"AVAILABLE_OR_UPCOMING","description":"Availability scope. The default excludes unavailable inventory."},"maximumMonthlyRent":{"type":"number","maximum":100000,"description":"Maximum monthly rent in CHF for the selected duration.","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Search published Elron Club rentals"},"changes":[{"kind":"name","detail":"Renamed \"rentals.search\" → \"rentals_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":599,"tokensAfter":599},{"name":"reservations.get_status","fixed":{"name":"reservations_get_status","description":"Read privacy-minimized hold, contract, signature, payment, reservation, or confirmation state for one application session.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["sessionToken"],"properties":{"sessionToken":{"type":"string","maxLength":500,"minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Get scoped reservation progression status"},"changes":[{"kind":"name","detail":"Renamed \"reservations.get_status\" → \"reservations_get_status\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":109,"tokensAfter":109},{"name":"viewings.get_status","fixed":{"name":"viewings_get_status","description":"Read customer-safe viewing proposals and confirmed viewing state for one email-verified application session.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["sessionToken"],"properties":{"sessionToken":{"type":"string","maxLength":500,"minLength":1}}},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Get scoped viewing coordination status"},"changes":[{"kind":"name","detail":"Renamed \"viewings.get_status\" → \"viewings_get_status\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":96,"tokensAfter":96},{"name":"viewings.propose_availability","fixed":{"name":"viewings_propose_availability","description":"Propose one to five bounded future viewing slots from an email-verified application at its exact version using a durable idempotency key.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["expectedVersion","slots","sessionToken","idempotencyKey"],"properties":{"slots":{"type":"array","items":{"type":"object","required":["proposedAt"],"properties":{"note":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]},"proposedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"additionalProperties":false},"maxItems":5,"minItems":1},"sessionToken":{"type":"string","maxLength":500,"minLength":1},"idempotencyKey":{"type":"string","maxLength":200,"minLength":1},"expectedVersion":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Propose viewing availability"},"changes":[{"kind":"name","detail":"Renamed \"viewings.propose_availability\" → \"viewings_propose_availability\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":406,"tokensAfter":406},{"name":"viewings.respond_to_proposal","fixed":{"name":"viewings_respond_to_proposal","description":"Accept or decline one pending Elron Club proposal with explicit confirmation, an exact application version, and a durable idempotency key. Acceptance may send the existing viewing confirmation communication.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["expectedVersion","action","responseConfirmed","sessionToken","proposalId","idempotencyKey"],"properties":{"action":{"enum":["ACCEPT","DECLINE"],"type":"string"},"proposalId":{"type":"string","maxLength":200,"minLength":1},"sessionToken":{"type":"string","maxLength":500,"minLength":1},"idempotencyKey":{"type":"string","maxLength":200,"minLength":1},"expectedVersion":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"responseConfirmed":{"type":"boolean","const":true}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"title":"Accept or decline a viewing proposal"},"changes":[{"kind":"name","detail":"Renamed \"viewings.respond_to_proposal\" → \"viewings_respond_to_proposal\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":317,"tokensAfter":317},{"name":"waitlist.subscribe","fixed":{"name":"waitlist_subscribe","description":"Activate the newsletter immediately after the customer explicitly requests it, optionally choosing an Elron region. A new activation queues one welcome email. An explicit request may reverse a previous opt-out without a confirmation step; automated inquiry and staff flows cannot override customer opt-outs.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["email","consent"],"properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","maxLength":180},"locale":{"enum":["de","en"],"type":"string","default":"de"},"consent":{"type":"boolean","const":true},"regionKey":{"enum":["BASEL","ZURICH","LUZERN","BERN"],"type":"string"},"idempotencyKey":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"title":"Subscribe to the newsletter"},"changes":[{"kind":"name","detail":"Renamed \"waitlist.subscribe\" → \"waitlist_subscribe\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":304,"tokensAfter":304},{"name":"waitlist.unsubscribe","fixed":{"name":"waitlist_unsubscribe","description":"Use an opaque unsubscribe token from an Elron marketing email to stop every waitlist marketing update.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["token"],"properties":{"token":{"type":"string","maxLength":256,"minLength":32},"idempotencyKey":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":true,"destructiveHint":true},"title":"Unsubscribe from all apartment updates"},"changes":[{"kind":"name","detail":"Renamed \"waitlist.unsubscribe\" → \"waitlist_unsubscribe\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":163,"tokensAfter":163}],"toolsChanged":25,"tokensSaved":0,"todo":[{"tool":"applications_complete_document_upload","params":["sessionToken","idempotencyKey","expectedVersion","uploadSessionId"]},{"tool":"applications_create_document_upload","params":["fileName","mimeType","sizeBytes","contextKey","sessionToken","idempotencyKey","expectedVersion"]},{"tool":"applications_get_status","params":["sessionToken"]},{"tool":"applications_start","params":["email","phone","locale","journey","lastName","rentalId","firstName","idempotencyKey","desiredDurationMonths","privacyConsentVersion","requestedParkingCount","privacyConsentAccepted"]},{"tool":"applications_submit","params":["sessionToken","consentVersion","idempotencyKey","expectedVersion","truthConfirmationAccepted","creditCheckConsentAccepted"]},{"tool":"applications_update","params":["minorCount","petSummary","billingCity","billingEmail","sessionToken","idempotencyKey","tenantProfiles","expectedVersion","tenantPartyMode","applicantMessage","billingIntentType","billingPostalCode","companyTenantCity","companyTenantName","desiredMoveInDate","preferredLanguage","billingCountryCode","billingStreetLine1","billingStreetLine2","companyBillingName","desiredMoveOutDate","companyTenantSigners","contractLanguageCode","desiredDurationMonths","employerOrCompanyName","requestedParkingCount","billingPrivateLastName","billingPrivateFirstName","companyTenantPostalCode","employmentStatusSummary","companyTenantCountryCode","companyTenantStreetLine1","companyTenantStreetLine2"]},{"tool":"applications_upload_document","params":["fileName","mimeType","sizeBytes","contextKey","sessionToken","contentBase64","idempotencyKey","expectedVersion"]},{"tool":"bookings_get_confirmation","params":["sessionToken"]},{"tool":"contracts_get_signing_link","params":["sessionToken"]},{"tool":"help_get","params":["locale","articleId"]},{"tool":"help_search","params":["limit","query","locale","offset","category"]},{"tool":"payments_get_status","params":["sessionToken"]},{"tool":"quotes_accept","params":["quoteId","sessionToken","idempotencyKey","acceptanceConfirmed","expectedQuoteVersion"]},{"tool":"quotes_create","params":["sessionToken","idempotencyKey","expectedApplicationVersion"]},{"tool":"quotes_get","params":["quoteId","sessionToken"]},{"tool":"rentals_check_availability","params":["locale","rentalId"]},{"tool":"rentals_get","params":["locale","rentalId"]},{"tool":"rentals_get_pricing","params":["locale","rentalId"]},{"tool":"rentals_search","params":["locale"]},{"tool":"reservations_get_status","params":["sessionToken"]},{"tool":"viewings_get_status","params":["sessionToken"]},{"tool":"viewings_propose_availability","params":["slots","sessionToken","idempotencyKey","expectedVersion"]},{"tool":"viewings_respond_to_proposal","params":["action","proposalId","sessionToken","idempotencyKey","expectedVersion","responseConfirmed"]},{"tool":"waitlist_subscribe","params":["email","locale","consent","regionKey","idempotencyKey"]},{"tool":"waitlist_unsubscribe","params":["token","idempotencyKey"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}