{"catalogVersion":"2026-10-02.2","operations":[{"id":"account.bookingRequests.get","group":"account","title":"Get booking approval status","summary":"Return the caller-owned booking request's status, expiry, offer selection, time window, and amount.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account booking-requests get","mcpTool":"account_bookingRequests_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requestId":{"type":"string","x-convex-table":"bookingRequests"}},"required":["requestId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"currency":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestId":{"type":"string","x-convex-table":"bookingRequests"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["amountCents","channelId","currency","endMs","expiresAt","offerId","offerVersion","requestId","startMs","status","tenantId"],"additionalProperties":false}},{"id":"account.bookingReviews.create","group":"account","title":"Publish a verified booking review","summary":"Publish a review for the caller's completed, paid booking and update listing rating aggregates.","tiers":["customer"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account booking-reviews create","mcpTool":"account_bookingReviews_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"bookingId":{"type":"string","x-convex-table":"bookings"},"memberId":{"type":"string","x-convex-table":"members"},"rating":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["body","bookingId","memberId","rating"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ratingAvgTimesTen":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reviewCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reviewId":{"type":"string","x-convex-table":"reviews"}},"required":["ratingAvgTimesTen","reviewCount","reviewId"],"additionalProperties":false}},{"id":"account.bookings.list","group":"account","title":"List account bookings","summary":"Return upcoming and past bookings across the caller's claimed tenant memberships.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["confirmationId","confirmationHref","detailHref"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account bookings list","mcpTool":"account_bookings_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"account.complaints.create","group":"account","title":"Report a purchase problem","summary":"Open a complaint case for the caller's booking or order, or return an existing open case.","tiers":["customer"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account complaints create","mcpTool":"account_complaints_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"category":{"anyOf":[{"const":"not_as_described"},{"const":"access_problem"},{"const":"billing_problem"},{"const":"safety_concern"},{"const":"other"}]},"narrative":{"type":"string"},"subject":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"bookings"},"kind":{"const":"booking"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"commerceOrders"},"kind":{"const":"order"}},"required":["id","kind"],"additionalProperties":false}]}},"required":["category","narrative","subject"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"disputeCases"}},{"id":"account.complaints.get","group":"account","title":"Get complaint status","summary":"Return the latest caller-owned complaint receipt status for a booking or order.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account complaints get","mcpTool":"account_complaints_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subject":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"bookings"},"kind":{"const":"booking"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"commerceOrders"},"kind":{"const":"order"}},"required":["id","kind"],"additionalProperties":false}]}},"required":["subject"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"account.dashboard.get","group":"account","title":"Get account dashboard","summary":"Return the caller's bookings, purchases, favorites, payment attention items, and annual spending summary.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["confirmationId","bookingHref","attention.href"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account dashboard get","mcpTool":"account_dashboard_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"account.favorites.list","group":"account","title":"List saved listings","summary":"Return a page of the caller's favorites that still have published, non-deleted listings.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account favorites list","mcpTool":"account_favorites_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"account.favorites.toggle","group":"account","title":"Toggle a saved listing","summary":"Save or remove a published listing in the caller's favorites.","tiers":["customer"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account favorites toggle","mcpTool":"account_favorites_toggle","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"listingId":{"type":"string","x-convex-table":"listings"}},"required":["listingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"account.installmentCollections.list","group":"account","title":"List installment card collections","summary":"Return recent card-collection attempts for a payment plan, using the selected staff or customer projection.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["checkoutUrl","sessionId"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account installment-collections list","mcpTool":"account_installmentCollections_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"anyOf":[{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"invoicePaymentCollections"},"agentPaymentQuoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"browserRecoveryAllowed":{"type":"boolean"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"email":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"installmentKey":{"type":"string"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"lastEventId":{"type":"string"},"lastFailureAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"name":{"type":"string"},"observationEventAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paidAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentIntentId":{"type":"string"},"paymentTimestampSource":{"anyOf":[{"const":"provider_event"},{"const":"api_confirmation"}]},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"},"refund":{"type":"object","properties":{"effectsDeferred":{"type":"boolean"},"providerStatus":{"type":"string"},"request":{"type":"object","properties":{"accountScope":{"type":"string"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"identity":{"type":"string"},"providerStatus":{"type":"string"},"refundId":{"type":"string"}},"required":["accountScope","amountCents","currency","identity","providerStatus"],"additionalProperties":false},"status":{"anyOf":[{"const":"pending"},{"const":"uncertain"},{"const":"failed"},{"const":"succeeded"},{"const":"completed"},{"const":"refunded"},{"const":"partially_refunded"},{"const":"manually_settled"},{"const":"review_blocked"}]},"statusOnly":{"type":"boolean"}},"required":["effectsDeferred","providerStatus","status","statusOnly"],"additionalProperties":false},"refundFirstSentAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundId":{"type":"string"},"refundSettledBinding":{"type":"string"},"refundStatus":{"anyOf":[{"const":"pending"},{"const":"failed"},{"const":"succeeded"}]},"refundTimestampSource":{"anyOf":[{"const":"provider_event"},{"const":"api_confirmation"}]},"refundedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"returnUrl":{"type":"string"},"status":{"anyOf":[{"const":"creating"},{"const":"open"},{"const":"paid"},{"const":"failed"},{"const":"expired"},{"const":"refund_required"},{"const":"refunded"}]},"stripeAccountId":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","applicationFeeCents","browserRecoveryAllowed","createdAt","currency","expiresAt","installmentKey","invoiceId","name","planId","refundedCents","returnUrl","status","stripeAccountId","tenantId","updatedAt"],"additionalProperties":false},{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"invoicePaymentCollections"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"browserRecoveryAllowed":{"type":"boolean"},"currency":{"type":"string"},"installmentKey":{"type":"string"},"refund":{"type":"object","properties":{"effectsDeferred":{"type":"boolean"},"providerStatus":{"type":"string"},"request":{"type":"object","properties":{"accountScope":{"type":"string"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"identity":{"type":"string"},"providerStatus":{"type":"string"},"refundId":{"type":"string"}},"required":["accountScope","amountCents","currency","identity","providerStatus"],"additionalProperties":false},"status":{"anyOf":[{"const":"pending"},{"const":"uncertain"},{"const":"failed"},{"const":"succeeded"},{"const":"completed"},{"const":"refunded"},{"const":"partially_refunded"},{"const":"manually_settled"},{"const":"review_blocked"}]},"statusOnly":{"type":"boolean"}},"required":["effectsDeferred","providerStatus","status","statusOnly"],"additionalProperties":false},"refundStatus":{"anyOf":[{"const":"pending"},{"const":"failed"},{"const":"succeeded"}]},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"status":{"type":"string"}},"required":["_id","amountCents","browserRecoveryAllowed","currency","installmentKey","refundedCents","status"],"additionalProperties":false}]}}},{"id":"account.installmentCollections.recover","group":"account","title":"Recover an installment payment","summary":"Reconcile a recorded card collection against Stripe and return configuration state and reason.","tiers":["customer"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra account installment-collections recover","mcpTool":"account_installmentCollections_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"collectionId":{"type":"string","x-convex-table":"invoicePaymentCollections"}},"required":["collectionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"effectsDeferred":{"type":"boolean"},"providerStatus":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"const":"review_blocked"},{"const":"pending"},{"const":"succeeded"},{"const":"failed"},{"const":"manually_settled"}]},"statusOnly":{"type":"boolean"}},"required":["configured","reason"],"additionalProperties":false}},{"id":"account.installmentPayments.cancel","group":"account","title":"Cancel a installment payment","summary":"Confirm provider cancellation before releasing the hold or collection.","tiers":["customer"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra account installment-payments cancel","mcpTool":"account_installmentPayments_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"account.installmentPayments.get","group":"account","title":"Get a installment payment","summary":"Read settlement and refund state recorded by the existing domain handler.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account installment-payments get","mcpTool":"account_installmentPayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"account.installmentPayments.pay","group":"account","title":"Pay a installment payment","summary":"Pay the frozen obligation with a shared payment token or return a signed human checkout handoff.","tiers":["customer"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra account installment-payments pay","mcpTool":"account_installmentPayments_pay","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"sharedPaymentToken":{"type":"string"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"account.installmentPayments.quote","group":"account","title":"Quote a installment payment","summary":"Preview the saved amount, connected account profile and available payment modes.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account installment-payments quote","mcpTool":"account_installmentPayments_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"installmentKey":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["installmentKey","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricingHash":{"type":"string"},"provisional":{"type":"boolean"}},"required":["amountCents","applicationFeeCents","currency","modes","networkId","pricingHash","provisional"],"additionalProperties":false}},{"id":"account.installmentPayments.recover","group":"account","title":"Recover a installment payment","summary":"Reconcile the original payment without creating a replacement charge.","tiers":["customer"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra account installment-payments recover","mcpTool":"account_installmentPayments_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"account.installmentPayments.reserve","group":"account","title":"Reserve a installment payment","summary":"Freeze the owned commercial obligation before delegating a one-time payment.","tiers":["customer"],"kind":"mutation","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra account installment-payments reserve","mcpTool":"account_installmentPayments_reserve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedPricingHash":{"type":"string"},"installmentKey":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["expectedPricingHash","installmentKey","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"breakdown":{"type":"object","properties":{"addOnCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"discountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"type":"string"},"taxRateName":{"type":"string"},"taxableSubtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["addOnCents","benefitCents","creditCents","discountCents","subtotalCents","taxCents","taxInclusive","taxRateBps","taxRateName","taxableSubtotalCents","totalCents"],"additionalProperties":false},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"handoffUrl":{"type":"string"},"payment":{"type":"object","properties":{"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sptRequirements":{"anyOf":[{"type":"null"},{"type":"object","properties":{"currency":{"type":"string"},"expiresAtMinimum":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAtRecommended":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxAmount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["currency","expiresAtMinimum","expiresAtRecommended","maxAmount"],"additionalProperties":false}]}},"required":["modes","networkId","sptRequirements"],"additionalProperties":false},"pricingHash":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"quoteVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"required":["id","kind"],"additionalProperties":false}},"required":["amountCents","applicationFeeCents","breakdown","currency","expiresAt","handoffUrl","payment","pricingHash","quoteId","quoteVersion","target"],"additionalProperties":false}},{"id":"account.installments.checkout","group":"account","title":"Open installment checkout","summary":"Reserve collection of an outstanding invoice installment and return its Stripe checkout URL.","tiers":["customer"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra account installments checkout","mcpTool":"account_installments_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"installmentKey":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["installmentKey","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"account.invoiceAccounts.list","group":"account","title":"List invoice accounts","summary":"Return subject-linked member accounts and supplier names, with a truncation flag.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account invoice-accounts list","mcpTool":"account_invoiceAccounts_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"memberId":{"type":"string","x-convex-table":"members"},"supplierName":{"type":"string"}},"required":["memberId","supplierName"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["rows","truncated"],"additionalProperties":false}},{"id":"account.orders.get","group":"account","title":"Get purchase order","summary":"Return the caller's purchase order with fulfillment, approval, and payment information.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account orders get","mcpTool":"account_orders_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"orderId":{"type":"string","x-convex-table":"commerceOrders"}},"required":["orderId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"cardAvailable":{"type":"boolean"},"currency":{"type":"string"},"decisionReason":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"id":{"type":"string","x-convex-table":"commerceOrders"},"kind":{"anyOf":[{"const":"rental"},{"const":"service"},{"const":"pass"},{"const":"event"}]},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentDueAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"paymentState":{"anyOf":[{"type":"string"},{"type":"null"}]},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantName":{"type":"string"},"timeZone":{"type":"string"}},"required":["amountCents","cardAvailable","currency","endMs","id","kind","name","offerId","offerVersion","paymentDueAt","paymentState","quantity","refundedCents","startMs","status","tenantName","timeZone"],"additionalProperties":false},{"type":"null"}]}},{"id":"account.orders.list","group":"account","title":"List purchase orders","summary":"Return a page of purchase orders belonging to the caller.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account orders list","mcpTool":"account_orders_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"cardAvailable":{"type":"boolean"},"currency":{"type":"string"},"decisionReason":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"id":{"type":"string","x-convex-table":"commerceOrders"},"kind":{"anyOf":[{"const":"rental"},{"const":"service"},{"const":"pass"},{"const":"event"}]},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentDueAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"paymentState":{"anyOf":[{"type":"string"},{"type":"null"}]},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantName":{"type":"string"},"timeZone":{"type":"string"}},"required":["amountCents","cardAvailable","currency","endMs","id","kind","name","offerId","offerVersion","paymentDueAt","paymentState","quantity","refundedCents","startMs","status","tenantName","timeZone"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"account.preferences.update","group":"account","title":"Update marketplace preferences","summary":"Create or update the caller's marketing preference and return the marketplace profile.","tiers":["customer"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account preferences update","mcpTool":"account_preferences_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"marketingOptIn":{"type":"boolean"}},"required":["marketingOptIn"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"account.profile.get","group":"account","title":"Get marketplace profile","summary":"Return the caller's identity-derived name and email plus marketplace marketing preferences.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account profile get","mcpTool":"account_profile_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"account.purchasePayments.cancel","group":"account","title":"Cancel a purchase payment","summary":"Confirm provider cancellation before releasing the hold or collection.","tiers":["customer"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra account purchase-payments cancel","mcpTool":"account_purchasePayments_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"account.purchasePayments.get","group":"account","title":"Get a purchase payment","summary":"Read settlement and refund state recorded by the existing domain handler.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account purchase-payments get","mcpTool":"account_purchasePayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"account.purchasePayments.pay","group":"account","title":"Pay a purchase payment","summary":"Pay the frozen obligation with a shared payment token or return a signed human checkout handoff.","tiers":["customer"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra account purchase-payments pay","mcpTool":"account_purchasePayments_pay","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"sharedPaymentToken":{"type":"string"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"account.purchasePayments.quote","group":"account","title":"Quote a purchase payment","summary":"Preview the saved amount, connected account profile and available payment modes.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account purchase-payments quote","mcpTool":"account_purchasePayments_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"orderId":{"type":"string","x-convex-table":"commerceOrders"}},"required":["orderId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricingHash":{"type":"string"},"provisional":{"type":"boolean"}},"required":["amountCents","applicationFeeCents","currency","modes","networkId","pricingHash","provisional"],"additionalProperties":false}},{"id":"account.purchasePayments.recover","group":"account","title":"Recover a purchase payment","summary":"Reconcile the original payment without creating a replacement charge.","tiers":["customer"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra account purchase-payments recover","mcpTool":"account_purchasePayments_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"account.purchasePayments.reserve","group":"account","title":"Reserve a purchase payment","summary":"Freeze the owned commercial obligation before delegating a one-time payment.","tiers":["customer"],"kind":"mutation","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra account purchase-payments reserve","mcpTool":"account_purchasePayments_reserve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedPricingHash":{"type":"string"},"orderId":{"type":"string","x-convex-table":"commerceOrders"}},"required":["expectedPricingHash","orderId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"breakdown":{"type":"object","properties":{"addOnCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"discountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"type":"string"},"taxRateName":{"type":"string"},"taxableSubtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["addOnCents","benefitCents","creditCents","discountCents","subtotalCents","taxCents","taxInclusive","taxRateBps","taxRateName","taxableSubtotalCents","totalCents"],"additionalProperties":false},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"handoffUrl":{"type":"string"},"payment":{"type":"object","properties":{"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sptRequirements":{"anyOf":[{"type":"null"},{"type":"object","properties":{"currency":{"type":"string"},"expiresAtMinimum":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAtRecommended":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxAmount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["currency","expiresAtMinimum","expiresAtRecommended","maxAmount"],"additionalProperties":false}]}},"required":["modes","networkId","sptRequirements"],"additionalProperties":false},"pricingHash":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"quoteVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"required":["id","kind"],"additionalProperties":false}},"required":["amountCents","applicationFeeCents","breakdown","currency","expiresAt","handoffUrl","payment","pricingHash","quoteId","quoteVersion","target"],"additionalProperties":false}},{"id":"account.purchases.checkout","group":"account","title":"Open purchase checkout","summary":"Reserve card checkout for the caller's marketplace commerce order and return a Stripe URL or an unavailable reason.","tiers":["customer"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra account purchases checkout","mcpTool":"account_purchases_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"orderId":{"type":"string","x-convex-table":"commerceOrders"}},"required":["orderId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"account.quotes.accept","group":"account","title":"Accept saved quote terms","summary":"Record version-bound recipient acceptance evidence and convert the quote without charging.","tiers":["customer"],"kind":"mutation","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["acceptanceEvidence","sharedPaymentToken","sessionUrl","checkoutUrl"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra account quotes accept","mcpTool":"account_quotes_accept","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"evidence":{"type":"string"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"quoteId":{"type":"string","x-convex-table":"salesQuotes"},"termsAccepted":{"type":"boolean"},"termsVersion":{"type":"string"}},"required":["evidence","expectedVersion","quoteId","termsAccepted","termsVersion"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"anyOf":[{"type":"string","x-convex-table":"bookings"},{"type":"null"}]},"handoffUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"invoiceId":{"anyOf":[{"type":"string","x-convex-table":"invoices"},{"type":"null"}]},"paymentMode":{"type":"string"},"planId":{"anyOf":[{"type":"string","x-convex-table":"invoicePaymentPlans"},{"type":"null"}]},"quoteId":{"type":"string","x-convex-table":"salesQuotes"},"subscriptionId":{"anyOf":[{"type":"string","x-convex-table":"memberSubscriptions"},{"type":"null"}]}},"required":["bookingId","handoffUrl","invoiceId","paymentMode","planId","quoteId","subscriptionId"],"additionalProperties":false}},{"id":"account.quotes.acceptTerms","group":"account","title":"Review and accept quote terms","summary":"Open the browser flow to review and accept quote terms.","tiers":["customer"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra account quotes accept-terms","mcpTool":"account_quotes_acceptTerms","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"quoteId":{"type":"string","x-convex-table":"salesQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"account.quotes.get","group":"account","title":"Get own quote","summary":"Return a sent or accepted quote for its verified recipient.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account quotes get","mcpTool":"account_quotes_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"quoteId":{"type":"string","x-convex-table":"salesQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"salesQuotes"},"acceptanceEvidence":{"type":"string"},"acceptedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"acceptedByMemberId":{"type":"string","x-convex-table":"members"},"acceptedByUserId":{"type":"string","x-convex-table":"users"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"convertedBookingId":{"type":"string","x-convex-table":"bookings"},"convertedSubscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"depositCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"leadId":{"type":"string","x-convex-table":"salesLeads"},"memberId":{"type":"string","x-convex-table":"members"},"note":{"type":"string"},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"status":{"anyOf":[{"const":"draft"},{"const":"sent"},{"const":"accepted"},{"const":"canceled"}]},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"anyOf":[{"type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"const":"booking"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"snapshot":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"capturedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"currency":{"type":"string"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"remoteFulfillmentPolicy":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"rules":{"type":"object","properties":{"bufferMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"horizonDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberOnly":{"type":"boolean"},"minimumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"passValidityMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"}},"required":["bufferMinutes","horizonDays","leadMinutes","memberOnly","minimumMinutes","requiresApproval"],"additionalProperties":false},"terms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","capturedAt","channelId","currency","name","offerId","quantity","resourceId","rules","terms","version"],"additionalProperties":false},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","endMs","kind","offerId","offerVersion","snapshot","spaceId","startMs"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"membership"},"planId":{"type":"string","x-convex-table":"membershipPlans"},"planVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"snapshot":{"type":"object","properties":{"benefits":{"type":"array","items":{"type":"object","properties":{"expiresAfterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"label":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["key","label","propertyIds","quantity","resourceIds","unit"],"additionalProperties":false}},"currency":{"type":"string"},"description":{"type":"string"},"interval":{"anyOf":[{"const":"month"},{"const":"year"}]},"name":{"type":"string"},"priceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"seatLimit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["benefits","currency","description","interval","name","priceCents","propertyIds","seatLimit"],"additionalProperties":false}},"required":["kind","planId","planVersion","snapshot"],"additionalProperties":false}]},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxRateName":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"title":{"type":"string"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","benefitCents","createdAt","currency","depositCents","expiresAt","leadId","memberId","note","salesChannel","status","subtotalCents","target","taxCents","taxInclusive","taxRateBps","taxRateId","taxRateName","tenantId","title","totalCents","updatedAt","version"],"additionalProperties":false}},{"id":"account.reviews.create","group":"account","title":"Review an account booking","summary":"Publish a verified review for a completed, paid booking owned by the caller.","tiers":["customer"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account reviews create","mcpTool":"account_reviews_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"bookingId":{"type":"string","x-convex-table":"bookings"},"rating":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["body","bookingId","rating"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"account.statements.get","group":"account","title":"Get an invoice statement","summary":"Return the caller's invoice statement, installment balances, receipt/credit-note history and customer-safe card collections.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account statements get","mcpTool":"account_statements_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"invoiceId":{"type":"string","x-convex-table":"invoices"}},"required":["invoiceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"collections":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"invoicePaymentCollections"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"browserRecoveryAllowed":{"type":"boolean"},"currency":{"type":"string"},"installmentKey":{"type":"string"},"refund":{"type":"object","properties":{"effectsDeferred":{"type":"boolean"},"providerStatus":{"type":"string"},"request":{"type":"object","properties":{"accountScope":{"type":"string"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"identity":{"type":"string"},"providerStatus":{"type":"string"},"refundId":{"type":"string"}},"required":["accountScope","amountCents","currency","identity","providerStatus"],"additionalProperties":false},"status":{"anyOf":[{"const":"pending"},{"const":"uncertain"},{"const":"failed"},{"const":"succeeded"},{"const":"completed"},{"const":"refunded"},{"const":"partially_refunded"},{"const":"manually_settled"},{"const":"review_blocked"}]},"statusOnly":{"type":"boolean"}},"required":["effectsDeferred","providerStatus","status","statusOnly"],"additionalProperties":false},"refundStatus":{"anyOf":[{"const":"pending"},{"const":"failed"},{"const":"succeeded"}]},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"status":{"type":"string"}},"required":["_id","amountCents","browserRecoveryAllowed","currency","installmentKey","refundedCents","status"],"additionalProperties":false}},"historyTruncated":{"type":"boolean"},"installments":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"browserCheckoutAllowed":{"type":"boolean"},"dueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"outstandingCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"receivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","dueAt","key","outstandingCents","receivedCents"],"additionalProperties":false}},"invoiceNumber":{"type":"string"},"notes":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"reason":{"type":"string"},"reference":{"type":"string"}},"required":["amountCents","createdAt","currency","reason","reference"],"additionalProperties":false}},"plan":{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"invoicePaymentPlans"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"originalTotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"receivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]}},"required":["_id","createdAt","creditedCents","currency","invoiceId","originalTotalCents","receivedCents","refundedCents"],"additionalProperties":false},"receipts":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"id":{"type":"string","x-convex-table":"invoicePaymentReceipts"},"kind":{"anyOf":[{"const":"payment"},{"const":"refund"}]},"method":{"anyOf":[{"const":"manual"},{"const":"stripe"}]}},"required":["amountCents","createdAt","currency","id","kind","method"],"additionalProperties":false}},"supplierName":{"type":"string"},"totals":{"type":"object","properties":{"adjustedTotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"customerCreditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"netReceivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"outstandingCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"receivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"settled":{"type":"boolean"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["adjustedTotalCents","creditedCents","customerCreditCents","netReceivedCents","outstandingCents","receivedCents","refundedCents","settled","totalCents"],"additionalProperties":false}},"required":["collections","historyTruncated","installments","invoiceNumber","notes","plan","receipts","supplierName","totals"],"additionalProperties":false}},{"id":"account.statements.list","group":"account","title":"List invoice statements","summary":"Return paginated customer-safe payment-plan summaries for one owned supplier account.","tiers":["customer"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra account statements list","mcpTool":"account_statements_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memberId":{"type":"string","x-convex-table":"members"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["memberId","paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"invoicePaymentPlans"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"originalTotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"receivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]}},"required":["_id","createdAt","creditedCents","currency","invoiceId","originalTotalCents","receivedCents","refundedCents"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"ai.memory.list","group":"ai","title":"List AI memory","summary":"Return active memory entries for the caller's tenant, user principal, and requested scope.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra ai memory list","mcpTool":"ai_memory_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"scope":{"type":"string"}},"required":["scope"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"ai.memory.remember","group":"ai","title":"Remember AI context","summary":"Store a memory entry for the caller and expire older entries beyond the scope limit.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":["destructive"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra ai memory remember","mcpTool":"ai_memory_remember","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxEntries":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"scope":{"type":"string"},"source":{"type":"string"},"value":{}},"required":["expiresAt","scope","source","value"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"ai.settings.get","group":"ai","title":"Get AI settings","summary":"Return AI purpose availability, destructive-tool policies, budget usage, and recent approval history.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["ai-manage"],"requiresApproval":false,"cli":"keyvra ai settings get","mcpTool":"ai_settings_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"approvals.tools.listPending","group":"approvals","title":"List pending tool approvals","summary":"Return pending, unexpired approvals with dry-run details, optionally filtered by conversation.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["ai-manage"],"requiresApproval":false,"cli":"keyvra approvals tools list-pending","mcpTool":"approvals_tools_listPending","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sessionId":{"type":"string","x-convex-table":"agentSessions"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"approvals.tools.listPendingPage","group":"approvals","title":"List pending approval page","summary":"Return a cursor page of pending approvals, excluding expired requests.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["ai-manage"],"requiresApproval":false,"cli":"keyvra approvals tools list-pending-page","mcpTool":"approvals_tools_listPendingPage","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"billing.invoiceTemplate.get","group":"billing","title":"Get invoice template settings","summary":"Return the workspace's current invoice text, logo and tax-display preferences, with update time.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra billing invoice-template get","mcpTool":"billing_invoiceTemplate_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"billing.invoiceTemplate.update","group":"billing","title":"Save invoice template settings","summary":"Save workspace invoice presentation settings and return the normalized settings and update time.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":false,"cli":"keyvra billing invoice-template update","mcpTool":"billing_invoiceTemplate_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"footerText":{"type":"string"},"headerText":{"type":"string"},"paymentTerms":{"type":"string"},"showLogo":{"type":"boolean"},"taxDisplay":{"anyOf":[{"const":"itemized"},{"const":"summary"},{"const":"hidden"}]}},"required":["footerText","headerText","paymentTerms","showLogo","taxDisplay"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"billing.invoices.list","group":"billing","title":"List billing invoices","summary":"Return workspace invoice projections, tenant presentation/template details and pagination metadata.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra billing invoices list","mcpTool":"billing_invoices_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"billing.payments.list","group":"billing","title":"List billing payments","summary":"Return workspace payment and refund projections, recent webhook events and pagination metadata.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra billing payments list","mcpTool":"billing_payments_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"billing.stripeSubscription.checkout","group":"billing","title":"Open Stripe subscription checkout","summary":"Create workspace subscription checkout or a managed plan-change confirmation session and return its ID and URL.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["subscription-manage"],"requiresApproval":true,"cli":"keyvra billing stripe-subscription checkout","mcpTool":"billing_stripeSubscription_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cancelUrl":{"type":"string"},"priceId":{"type":"string"},"successUrl":{"type":"string"}},"required":["cancelUrl","priceId","successUrl"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"configured":{"const":true},"url":{"type":"string"}},"required":["configured","url"],"additionalProperties":false},{"type":"object","properties":{"configured":{"const":false},"envVar":{"anyOf":[{"const":"STRIPE_SECRET_KEY"},{"const":"STRIPE_WEBHOOK_SECRET"}]},"reason":{"type":"string"},"service":{"const":"Stripe"}},"required":["configured","envVar","reason","service"],"additionalProperties":false}]}},{"id":"billing.subscription.activateTrial","group":"billing","title":"Activate a workspace trial","summary":"Select an active subscription plan, reset the tenant to trialing, and return plan and tenant signup state.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra billing subscription activate-trial","mcpTool":"billing_subscription_activateTrial","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planSlug":{"type":"string"}},"required":["planSlug"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"billing.subscription.checkout","group":"billing","title":"Open workspace subscription checkout","summary":"Resolve an active plan's monthly or annual Stripe price and return a hosted checkout or plan-change URL.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["subscription-manage"],"requiresApproval":true,"cli":"keyvra billing subscription checkout","mcpTool":"billing_subscription_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cancelUrl":{"type":"string"},"interval":{"anyOf":[{"const":"monthly"},{"const":"annual"}]},"planId":{"type":"string","x-convex-table":"subscriptionPlans"},"successUrl":{"type":"string"}},"required":["cancelUrl","interval","planId","successUrl"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"billing.subscription.get","group":"billing","title":"Get workspace subscription","summary":"Return available/current plans, subscription state, Stripe configuration and workspace usage.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra billing subscription get","mcpTool":"billing_subscription_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"billing.subscription.getLifecycle","group":"billing","title":"Get workspace subscription lifecycle","summary":"Read the caller's Stripe subscription cancellation state and current period end, or return disconnected or unavailable status.","tiers":["operator"],"kind":"action","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":false,"cli":"keyvra billing subscription get-lifecycle","mcpTool":"billing_subscription_getLifecycle","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"billing.subscriptionPayments.checkout","group":"billing","title":"Open recurring checkout","summary":"Return the existing hosted checkout URL for the person to confirm recurring billing.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["subscription-manage"],"requiresApproval":true,"cli":"keyvra billing subscription-payments checkout","mcpTool":"billing_subscriptionPayments_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"interval":{"anyOf":[{"const":"monthly"},{"const":"annual"}]},"planId":{"type":"string","x-convex-table":"subscriptionPlans"}},"required":["interval","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"paymentMode":{"const":"handoff"},"recurring":{"const":true},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","paymentMode","recurring","url"],"additionalProperties":false}},{"id":"billing.subscriptionPayments.get","group":"billing","title":"Read recurring payment status","summary":"Read persisted recurring billing status without collecting another payment.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra billing subscription-payments get","mcpTool":"billing_subscriptionPayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paymentMode":{"const":"handoff"},"recurring":{"const":true},"renewalAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"status":{"type":"string"}},"required":["paymentMode","recurring","renewalAt","status"],"additionalProperties":false}},{"id":"bookings.attendees.update","group":"bookings","title":"Update booking attendees","summary":"Update attendee count and notes and return the stored values.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":false,"cli":"keyvra bookings attendees update","mcpTool":"bookings_attendees_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attendeeNotes":{"type":"string"},"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["attendeeCount","bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.availability.get","group":"bookings","title":"Get space availability","summary":"Return free intervals after schedules, blackouts, bookings, buffers, and connected availability are applied.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","space-read"],"requiresApproval":false,"cli":"keyvra bookings availability get","mcpTool":"bookings_availability_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","spaceId","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.bulk.cancel","group":"bookings","title":"Cancel multiple bookings","summary":"Cancel bookings independently using cancellation policies and waitlist notifications, returning per-item results and cancellation counts.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":["destructive","financial"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra bookings bulk cancel","mcpTool":"bookings_bulk_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingIds":{"type":"array","items":{"type":"string","x-convex-table":"bookings"}},"notes":{"type":"string"}},"required":["bookingIds"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.bulk.transition","group":"bookings","title":"Transition multiple bookings (checked_in)","summary":"Check in or mark bookings no-show in independent transactions and return per-item results.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":true,"cli":"keyvra bookings bulk transition","mcpTool":"bookings_bulk_transition","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingIds":{"type":"array","items":{"type":"string","x-convex-table":"bookings"}}},"required":["bookingIds"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"failed":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"results":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"const":"CONNECT_ONBOARDING_INCOMPLETE"},{"const":"SPACE_BLOCKED_FOR_MAINTENANCE"},{"const":"SUBSCRIPTION_LIMIT_REACHED"},{"const":"TASK_ALREADY_CLAIMED"},{"const":"TENANT_MISMATCH"},{"const":"UNAUTHORIZED"},{"const":"FORBIDDEN"},{"const":"MFA_REQUIRED"},{"const":"LEGAL_ACCEPTANCE_REQUIRED"},{"const":"NOT_FOUND"},{"const":"VALIDATION_FAILED"},{"const":"SLUG_TAKEN"},{"const":"PROMOTION_INVALID"},{"const":"REVIEW_NOT_VERIFIED"},{"const":"BOOKING_SLOT_CONFLICT"},{"const":"BOOKING_BLACKOUT"},{"const":"BOOKING_ILLEGAL_TRANSITION"},{"const":"IDEMPOTENCY_CONFLICT"},{"const":"APPROVAL_MISMATCH"},{"const":"APPROVAL_EXPIRED"},{"const":"WAITLIST_FULL"},{"const":"AI_PROVIDER_DISABLED"},{"const":"AI_QUOTA_EXCEEDED"},{"const":"RATE_LIMITED"},{"const":"INTERNAL"}]},"detail":{"anyOf":[{"const":"refund_manual"},{"const":"assignee_unavailable"},{"const":"checkin_not_open"},{"const":"offer_not_published"},{"const":"ticket_not_in_progress"}]},"id":{"type":"string"},"ok":{"type":"boolean"},"unchanged":{"type":"boolean"}},"required":["id","ok"],"additionalProperties":false}},"succeeded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unchanged":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["failed","results","succeeded","unchanged"],"additionalProperties":false}},{"id":"bookings.bulk.transition.noshow","group":"bookings","title":"Transition multiple bookings (no_show)","summary":"Check in or mark bookings no-show in independent transactions and return per-item results.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":["destructive"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":true,"cli":"keyvra bookings bulk transition noshow","mcpTool":"bookings_bulk_transition_noshow","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingIds":{"type":"array","items":{"type":"string","x-convex-table":"bookings"}}},"required":["bookingIds"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"failed":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"results":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"const":"CONNECT_ONBOARDING_INCOMPLETE"},{"const":"SPACE_BLOCKED_FOR_MAINTENANCE"},{"const":"SUBSCRIPTION_LIMIT_REACHED"},{"const":"TASK_ALREADY_CLAIMED"},{"const":"TENANT_MISMATCH"},{"const":"UNAUTHORIZED"},{"const":"FORBIDDEN"},{"const":"MFA_REQUIRED"},{"const":"LEGAL_ACCEPTANCE_REQUIRED"},{"const":"NOT_FOUND"},{"const":"VALIDATION_FAILED"},{"const":"SLUG_TAKEN"},{"const":"PROMOTION_INVALID"},{"const":"REVIEW_NOT_VERIFIED"},{"const":"BOOKING_SLOT_CONFLICT"},{"const":"BOOKING_BLACKOUT"},{"const":"BOOKING_ILLEGAL_TRANSITION"},{"const":"IDEMPOTENCY_CONFLICT"},{"const":"APPROVAL_MISMATCH"},{"const":"APPROVAL_EXPIRED"},{"const":"WAITLIST_FULL"},{"const":"AI_PROVIDER_DISABLED"},{"const":"AI_QUOTA_EXCEEDED"},{"const":"RATE_LIMITED"},{"const":"INTERNAL"}]},"detail":{"anyOf":[{"const":"refund_manual"},{"const":"assignee_unavailable"},{"const":"checkin_not_open"},{"const":"offer_not_published"},{"const":"ticket_not_in_progress"}]},"id":{"type":"string"},"ok":{"type":"boolean"},"unchanged":{"type":"boolean"}},"required":["id","ok"],"additionalProperties":false}},"succeeded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unchanged":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["failed","results","succeeded","unchanged"],"additionalProperties":false}},{"id":"bookings.checkInTokens.redeem","group":"bookings","title":"Check in with a booking code","summary":"Validate an unexpired signed booking code, check in the booking, and return the updated document.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings check-in-tokens redeem","mcpTool":"bookings_checkInTokens_redeem","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.create","group":"bookings","title":"Create a booking","summary":"Create a priced confirmed booking with optional offer terms, approval, and idempotency, returning the booking document.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra bookings create","mcpTool":"bookings_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"idempotencyKey":{"type":"string"},"memberId":{"type":"string","x-convex-table":"members"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","spaceId","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.displays.list","group":"bookings","title":"List display sessions","summary":"Return up to 100 workspace display sessions with resource, label, expiration, and revocation metadata.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra bookings displays list","mcpTool":"bookings_displays_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"id":{"type":"string","x-convex-table":"displaySessions"},"label":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"revokedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["expiresAt","id","label","resourceId"],"additionalProperties":false}}},{"id":"bookings.eventAttendance.checkIn","group":"bookings","title":"Check in an event attendee","summary":"Mark a confirmed registration attended and record resource arrival, returning the registration ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings event-attendance check-in","mcpTool":"bookings_eventAttendance_checkIn","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"registrationId":{"type":"string","x-convex-table":"eventRegistrations"}},"required":["registrationId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"eventRegistrations"}},{"id":"bookings.eventRegistrations.cancel","group":"bookings","title":"Cancel an event registration","summary":"Cancel a workspace event registration, refresh its access and waitlist, and return null.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel"],"requiresApproval":true,"cli":"keyvra bookings event-registrations cancel","mcpTool":"bookings_eventRegistrations_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"registrationId":{"type":"string","x-convex-table":"eventRegistrations"}},"required":["registrationId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"bookings.eventRegistrations.create","group":"bookings","title":"Register a member for an event","summary":"Register a workspace member and return an existing or new registration ID with confirmed, pending-payment, or waitlisted state.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create"],"requiresApproval":true,"cli":"keyvra bookings event-registrations create","mcpTool":"bookings_eventRegistrations_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"eventId":{"type":"string","x-convex-table":"eventSessions"},"memberId":{"type":"string","x-convex-table":"members"},"requestKey":{"type":"string"}},"required":["eventId","memberId","requestKey"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"eventRegistrations"}},{"id":"bookings.eventRegistrations.list","group":"bookings","title":"List event registrations","summary":"Return the registration roster for a workspace event.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra bookings event-registrations list","mcpTool":"bookings_eventRegistrations_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"eventId":{"type":"string","x-convex-table":"eventSessions"}},"required":["eventId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"eventRegistrations"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attendedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"eventId":{"type":"string","x-convex-table":"eventSessions"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"memberId":{"type":"string","x-convex-table":"members"},"paymentDueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentRevokedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"status":{"anyOf":[{"const":"waitlisted"},{"const":"pending_payment"},{"const":"confirmed"},{"const":"attended"},{"const":"cancelled"},{"const":"expired"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","createdAt","currency","eventId","memberId","requestKey","status","tenantId","updatedAt"],"additionalProperties":false}}},{"id":"bookings.events.cancel","group":"bookings","title":"Cancel an event","summary":"Cancel an event and its unsettled registrations, release inventory, and return null.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":["destructive"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel"],"requiresApproval":true,"cli":"keyvra bookings events cancel","mcpTool":"bookings_events_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"eventId":{"type":"string","x-convex-table":"eventSessions"}},"required":["eventId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"bookings.events.create","group":"bookings","title":"Create an event","summary":"Create a priced event session from published offer terms, reserve its resources, and return its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":true,"cli":"keyvra bookings events create","mcpTool":"bookings_events_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"capacity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"description":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"title":{"type":"string"}},"required":["capacity","channelId","description","endMs","expectedVersion","offerId","startMs","title"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"eventSessions"}},{"id":"bookings.events.list","group":"bookings","title":"List events","summary":"Return a paginated list of workspace event sessions.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra bookings events list","mcpTool":"bookings_events_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"eventSessions"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"capacity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"description":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"open"},{"const":"cancelled"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"title":{"type":"string"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","capacity","createdAt","currency","description","endMs","offerId","offerVersion","startMs","status","tenantId","title","updatedAt"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"bookings.exceptions.acknowledge","group":"bookings","title":"Acknowledge a no-show exception","summary":"Mark a workspace no-show exception reviewed and return acknowledged true.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":false,"cli":"keyvra bookings exceptions acknowledge","mcpTool":"bookings_exceptions_acknowledge","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"exceptionId":{"type":"string","x-convex-table":"bookingExceptions"}},"required":["exceptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.exceptions.list","group":"bookings","title":"List booking exceptions","summary":"Return up to 50 open booking exceptions with booking and turnover links.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["bookingReference"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra bookings exceptions list","mcpTool":"bookings_exceptions_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.lifecycle.set","group":"bookings","title":"Set a booking lifecycle state (confirmed)","summary":"Apply a legal lifecycle transition and return the updated booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":false,"cli":"keyvra bookings lifecycle set","mcpTool":"bookings_lifecycle_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.lifecycle.set.cancelled","group":"bookings","title":"Set a booking lifecycle state (cancelled)","summary":"Apply a legal lifecycle transition and return the updated booking.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":["financial"],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel"],"requiresApproval":true,"cli":"keyvra bookings lifecycle set cancelled","mcpTool":"bookings_lifecycle_set_cancelled","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.lifecycle.set.checkedin","group":"bookings","title":"Set a booking lifecycle state (checked_in)","summary":"Apply a legal lifecycle transition and return the updated booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings lifecycle set checkedin","mcpTool":"bookings_lifecycle_set_checkedin","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.lifecycle.set.completed","group":"bookings","title":"Set a booking lifecycle state (completed)","summary":"Apply a legal lifecycle transition and return the updated booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":false,"cli":"keyvra bookings lifecycle set completed","mcpTool":"bookings_lifecycle_set_completed","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.lifecycle.set.noshow","group":"bookings","title":"Set a booking lifecycle state (no_show)","summary":"Apply a legal lifecycle transition and return the updated booking.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":true,"cli":"keyvra bookings lifecycle set noshow","mcpTool":"bookings_lifecycle_set_noshow","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.lifecycleCancellation.cancel","group":"bookings","title":"Cancel a booking lifecycle","summary":"Apply the terminal canceled lifecycle state and return the updated booking.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":["financial"],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel"],"requiresApproval":true,"cli":"keyvra bookings lifecycle-cancellation cancel","mcpTool":"bookings_lifecycleCancellation_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.lifecycleCheckIn.run","group":"bookings","title":"Set a booking checked in","summary":"Apply the checked-in lifecycle state within the permitted window and return the updated booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings lifecycle-check-in run","mcpTool":"bookings_lifecycleCheckIn_run","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.lifecycleCompletion.complete","group":"bookings","title":"Complete a booking lifecycle","summary":"Apply the completed lifecycle state and return the updated booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":false,"cli":"keyvra bookings lifecycle-completion complete","mcpTool":"bookings_lifecycleCompletion_complete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.lifecycleNoShow.set","group":"bookings","title":"Set a booking no-show","summary":"Apply the terminal no-show lifecycle state and return the updated booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":false,"cli":"keyvra bookings lifecycle-no-show set","mcpTool":"bookings_lifecycleNoShow_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.list","group":"bookings","title":"List bookings","summary":"Return filtered, cursor-paginated bookings with member, space, invoice summaries, and filter/count metadata.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["confirmationId","shortId"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","space-read","member-read"],"requiresApproval":false,"cli":"keyvra bookings list","mcpTool":"bookings_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pageSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyId":{"type":"string","x-convex-table":"properties"},"search":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"statuses":{"type":"array","items":{"anyOf":[{"const":"confirmed"},{"const":"checked_in"},{"const":"completed"},{"const":"no_show"},{"const":"cancelled"}]}}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.manual.create","group":"bookings","title":"Create a manual booking","summary":"Create a member or guest booking with attendance and payment mode, returning the booking ID, amount, currency, and payment setup state.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra bookings manual create","mcpTool":"bookings_manual_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attendeeNotes":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"guestEmail":{"type":"string"},"guestName":{"type":"string"},"memberId":{"type":"string","x-convex-table":"members"},"notes":{"type":"string"},"paymentMode":{"anyOf":[{"const":"paid_external"},{"const":"send_payment_link"},{"const":"no_charge"}]},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["attendeeCount","endMs","paymentMode","spaceId","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.manualCheckIn.run","group":"bookings","title":"Check in a booking manually","summary":"Check in a workspace booking and record its arrival, returning the updated booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings manual-check-in run","mcpTool":"bookings_manualCheckIn_run","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.operatorCheckIn.run","group":"bookings","title":"Check in a booking","summary":"Check in a workspace booking, record presence and an audit event, and return the updated booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings operator-check-in run","mcpTool":"bookings_operatorCheckIn_run","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.operatorCompletion.complete","group":"bookings","title":"Complete a booking","summary":"Complete a checked-in booking, enqueue cleaning, record an audit event, and return the booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":false,"cli":"keyvra bookings operator-completion complete","mcpTool":"bookings_operatorCompletion_complete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.operatorNoShow.set","group":"bookings","title":"Mark a booking as a no-show","summary":"Apply the terminal no-show state and record an operator audit event, returning the updated booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":false,"cli":"keyvra bookings operator-no-show set","mcpTool":"bookings_operatorNoShow_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.operatorReschedule.run","group":"bookings","title":"Reschedule a booking","summary":"Reschedule a confirmed booking with availability and price checks, returning the updated booking.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update","space-read"],"requiresApproval":true,"cli":"keyvra bookings operator-reschedule run","mcpTool":"bookings_operatorReschedule_run","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"notes":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["bookingId","endMs","spaceId","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.passes.list","group":"bookings","title":"List passes","summary":"Return paginated workspace day passes, excluding rental and service purchases.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra bookings passes list","mcpTool":"bookings_passes_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"dayPasses"},"allocationStartMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"bufferAfterMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bufferBeforeMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"fulfilledAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"inventoryAllocationVersion":{"const":1},"memberId":{"type":"string","x-convex-table":"members"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentDueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pricingUnit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]},"purchaseKind":{"anyOf":[{"const":"pass"},{"const":"rental"},{"const":"service"}]},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"returnedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"status":{"anyOf":[{"const":"pending_payment"},{"const":"active"},{"const":"redeemed"},{"const":"revoked"},{"const":"expired"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"unitPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","components","createdAt","currency","memberId","name","offerId","offerVersion","paymentDueAt","requestKey","resourceId","status","tenantId","updatedAt","validFrom","validUntil"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"bookings.passes.purchase","group":"bookings","title":"Purchase a pass for a member","summary":"Create or replay a pass purchase, reserve inventory, and return the pass ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create"],"requiresApproval":true,"cli":"keyvra bookings passes purchase","mcpTool":"bookings_passes_purchase","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"offerId":{"type":"string","x-convex-table":"offers"},"requestKey":{"type":"string"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","expectedVersion","memberId","offerId","requestKey","validFrom"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"dayPasses"}},{"id":"bookings.passes.redeem","group":"bookings","title":"Redeem a pass","summary":"Redeem an active pass, record resource presence and benefit usage, and return the redemption ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings passes redeem","mcpTool":"bookings_passes_redeem","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"passId":{"type":"string","x-convex-table":"dayPasses"},"requestKey":{"type":"string"}},"required":["passId","requestKey"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"passRedemptions"}},{"id":"bookings.policyCancellation.cancel","group":"bookings","title":"Cancel a booking with its refund policy","summary":"Cancel a booking, notify an eligible waitlist entry, and return the applied policy and refund state.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":["destructive"],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra bookings policy-cancellation cancel","mcpTool":"bookings_policyCancellation_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"},"notes":{"type":"string"},"refundOverrideCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.presence.arrive","group":"bookings","title":"Record a member arrival","summary":"Record staff-confirmed member presence at a property and return the presence-session ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings presence arrive","mcpTool":"bookings_presence_arrive","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memberId":{"type":"string","x-convex-table":"members"},"propertyId":{"type":"string","x-convex-table":"properties"},"requestKey":{"type":"string"}},"required":["memberId","propertyId","requestKey"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"presenceSessions"}},{"id":"bookings.presence.depart","group":"bookings","title":"Record a departure","summary":"Record departure for a workspace presence session and return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings presence depart","mcpTool":"bookings_presence_depart","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"presenceId":{"type":"string","x-convex-table":"presenceSessions"}},"required":["presenceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"bookings.presence.list","group":"bookings","title":"List property presence","summary":"Return paginated presence sessions with names and present, departed, or unknown observed state.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra bookings presence list","mcpTool":"bookings_presence_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false},"propertyId":{"type":"string","x-convex-table":"properties"}},"required":["paginationOpts","propertyId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"presenceSessions"},"arrivedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"departedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"displayName":{"type":"string"},"evidence":{"anyOf":[{"const":"staff"},{"const":"self_reported"}]},"freshUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"observedState":{"anyOf":[{"const":"present"},{"const":"departed"},{"const":"unknown"}]},"propertyId":{"type":"string","x-convex-table":"properties"},"recordedBy":{"type":"string","x-convex-table":"users"},"resourceId":{"type":"string","x-convex-table":"resources"},"source":{"anyOf":[{"type":"object","properties":{"kind":{"const":"visitor"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"},"kind":{"const":"booking"}},"required":["bookingId","kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"pass"},"passId":{"type":"string","x-convex-table":"dayPasses"}},"required":["kind","passId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"event"},"registrationId":{"type":"string","x-convex-table":"eventRegistrations"}},"required":["kind","registrationId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"membership"},"memberId":{"type":"string","x-convex-table":"members"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["kind","memberId","subscriptionId"],"additionalProperties":false}]},"sourceKey":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","arrivedAt","createdAt","displayName","evidence","freshUntil","observedState","propertyId","source","sourceKey","tenantId","updatedAt"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"bookings.rawSeries.create","group":"bookings","title":"Create a booking series","summary":"Create a recurrence series and priced bookings, returning confirmed or skipped outcomes per occurrence.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":["financial"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra bookings raw-series create","mcpTool":"bookings_rawSeries_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"count":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"durationMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"frequency":{"anyOf":[{"const":"daily"},{"const":"weekly"},{"const":"monthly"}]},"idempotencyKey":{"type":"string"},"interval":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startsAtMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"timezone":{"type":"string"},"untilMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["count","durationMinutes","frequency","interval","spaceId","startsAtMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.recurring.create","group":"bookings","title":"Create recurring bookings","summary":"Create a series of priced member or guest bookings, returning the series ID, generated count, and per-occurrence outcomes.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":["financial"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra bookings recurring create","mcpTool":"bookings_recurring_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"count":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"durationMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"frequency":{"anyOf":[{"const":"daily"},{"const":"weekly"},{"const":"monthly"}]},"interval":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"notes":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startsAtMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"timezone":{"type":"string"},"untilMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["count","durationMinutes","frequency","interval","spaceId","startsAtMs","memberId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.recurring.createAnonymous","group":"bookings","title":"Create recurring bookings","summary":"Create a series of priced member or guest bookings, returning the series ID, generated count, and per-occurrence outcomes.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":["financial"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra bookings recurring create-anonymous","mcpTool":"bookings_recurring_createAnonymous","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"count":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"durationMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"frequency":{"anyOf":[{"const":"daily"},{"const":"weekly"},{"const":"monthly"}]},"interval":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"notes":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startsAtMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"timezone":{"type":"string"},"untilMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["count","durationMinutes","frequency","interval","spaceId","startsAtMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.recurring.createGuest","group":"bookings","title":"Create recurring bookings","summary":"Create a series of priced member or guest bookings, returning the series ID, generated count, and per-occurrence outcomes.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":["financial"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create","booking-read","member-create","space-read"],"requiresApproval":true,"cli":"keyvra bookings recurring create-guest","mcpTool":"bookings_recurring_createGuest","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"count":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"durationMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"frequency":{"anyOf":[{"const":"daily"},{"const":"weekly"},{"const":"monthly"}]},"guestEmail":{"type":"string"},"guestName":{"type":"string"},"interval":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"notes":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startsAtMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"timezone":{"type":"string"},"untilMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["count","durationMinutes","frequency","interval","spaceId","startsAtMs","guestEmail"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.requests.create","group":"bookings","title":"Create a booking request","summary":"Create or replay an approval request with quoted terms and expiration, returning its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create"],"requiresApproval":true,"cli":"keyvra bookings requests create","mcpTool":"bookings_requests_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"note":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","endMs","memberId","note","offerId","offerVersion","requestKey","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"bookingRequests"}},{"id":"bookings.requests.decide","group":"bookings","title":"Decide a booking request","summary":"Approve or decline a request, reserve or release resources, and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":false,"cli":"keyvra bookings requests decide","mcpTool":"bookings_requests_decide","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"decision":{"anyOf":[{"const":"approve"},{"const":"decline"}]},"reason":{"type":"string"},"requestId":{"type":"string","x-convex-table":"bookingRequests"}},"required":["decision","reason","requestId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"bookingRequests"}},{"id":"bookings.requests.list","group":"bookings","title":"List booking requests","summary":"Return paginated workspace requests with quoted terms and decisions.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra bookings requests list","mcpTool":"bookings_requests_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"bookingRequests"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"apiReviewedTerms":{"type":"string"},"bookingId":{"type":"string","x-convex-table":"bookings"},"bufferMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"decidedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"decidedBy":{"type":"string","x-convex-table":"users"},"decidedByApiKeyRef":{"type":"string"},"decisionReason":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"note":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"purchaseId":{"type":"string","x-convex-table":"dayPasses"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"requestedByApiKeyRef":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"pending"},{"const":"approved"},{"const":"declined"},{"const":"expired"},{"const":"consumed"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"title":{"type":"string"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","bufferMs","channelId","components","createdAt","currency","endMs","expiresAt","memberId","note","offerId","offerVersion","requestKey","resourceId","startMs","status","tenantId","title","updatedAt"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"bookings.resourcePurchases.cancel","group":"bookings","title":"Cancel a resource purchase","summary":"Cancel an unpaid or free rental/service purchase, release allocations, refresh access, and return null.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel"],"requiresApproval":true,"cli":"keyvra bookings resource-purchases cancel","mcpTool":"bookings_resourcePurchases_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"purchaseId":{"type":"string","x-convex-table":"dayPasses"}},"required":["purchaseId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"bookings.resourcePurchases.complete","group":"bookings","title":"Complete a resource purchase","summary":"Record return/completion of a fulfilled purchase, release allocations, refresh access, and return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings resource-purchases complete","mcpTool":"bookings_resourcePurchases_complete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"purchaseId":{"type":"string","x-convex-table":"dayPasses"}},"required":["purchaseId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"bookings.resourcePurchases.fulfill","group":"bookings","title":"Fulfill a resource purchase","summary":"Mark an active rental/service purchase fulfilled during its validity window and return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings resource-purchases fulfill","mcpTool":"bookings_resourcePurchases_fulfill","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"purchaseId":{"type":"string","x-convex-table":"dayPasses"}},"required":["purchaseId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"bookings.resourcePurchases.list","group":"bookings","title":"List resource purchases","summary":"Return paginated workspace rental and service purchases stored in dayPasses.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra bookings resource-purchases list","mcpTool":"bookings_resourcePurchases_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"dayPasses"},"allocationStartMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"bufferAfterMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bufferBeforeMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"fulfilledAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"inventoryAllocationVersion":{"const":1},"memberId":{"type":"string","x-convex-table":"members"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentDueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pricingUnit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]},"purchaseKind":{"anyOf":[{"const":"pass"},{"const":"rental"},{"const":"service"}]},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"returnedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"status":{"anyOf":[{"const":"pending_payment"},{"const":"active"},{"const":"redeemed"},{"const":"revoked"},{"const":"expired"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"unitPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","components","createdAt","currency","memberId","name","offerId","offerVersion","paymentDueAt","requestKey","resourceId","status","tenantId","updatedAt","validFrom","validUntil"],"additionalProperties":false}}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"bookings.resourcePurchases.purchase","group":"bookings","title":"Purchase a rental or service","summary":"Create or replay a priced rental/service purchase and reserve inventory, returning its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create"],"requiresApproval":true,"cli":"keyvra bookings resource-purchases purchase","mcpTool":"bookings_resourcePurchases_purchase","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"channelId":{"type":"string","x-convex-table":"channels"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"offerId":{"type":"string","x-convex-table":"offers"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","expectedVersion","memberId","offerId","quantity","requestKey","validFrom","validUntil"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"dayPasses"}},{"id":"bookings.resourcePurchases.quote","group":"bookings","title":"Quote a rental or service","summary":"Return amount, currency, units, quantity, and tax snapshot without creating a purchase.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create"],"requiresApproval":false,"cli":"keyvra bookings resource-purchases quote","mcpTool":"bookings_resourcePurchases_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"offerId":{"type":"string","x-convex-table":"offers"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","expectedVersion","memberId","offerId","quantity","validFrom","validUntil"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"unit":{"type":"string"},"units":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","currency","quantity","tax","unit","units"],"additionalProperties":false}},{"id":"bookings.series.cancel","group":"bookings","title":"Cancel a recurring series","summary":"Cancel a series and, by default, its future confirmed occurrences, returning the series ID and occurrence count.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":["destructive","financial"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel"],"requiresApproval":true,"cli":"keyvra bookings series cancel","mcpTool":"bookings_series_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"seriesId":{"type":"string","x-convex-table":"bookingSeries"}},"required":["seriesId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.series.list","group":"bookings","title":"List recurring series","summary":"Return recurring series with recurrence settings, occurrence counts, and up to five upcoming occurrences.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","space-read","member-read"],"requiresApproval":false,"cli":"keyvra bookings series list","mcpTool":"bookings_series_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"anyOf":[{"const":"active"},{"const":"completed"},{"const":"cancelled"}]}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.series.stop","group":"bookings","title":"Stop a booking series without cancelling occurrences","summary":"Cancel a series and, by default, its future confirmed occurrences, returning the series ID and occurrence count.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel"],"requiresApproval":true,"cli":"keyvra bookings series stop","mcpTool":"bookings_series_stop","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"seriesId":{"type":"string","x-convex-table":"bookingSeries"}},"required":["seriesId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.series.update","group":"bookings","title":"Update a recurring pattern","summary":"Reconcile a new recurrence pattern and return the series and created, canceled, preserved, unchanged, and conflicting occurrence counts.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":["destructive","financial"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel","booking-create","booking-read","booking-update","space-read"],"requiresApproval":true,"cli":"keyvra bookings series update","mcpTool":"bookings_series_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"count":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"durationMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"frequency":{"anyOf":[{"const":"daily"},{"const":"weekly"},{"const":"monthly"}]},"interval":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"seriesId":{"type":"string","x-convex-table":"bookingSeries"},"startsAtMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"timezone":{"type":"string"},"untilMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["durationMinutes","frequency","interval","seriesId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.timeline.list","group":"bookings","title":"List booking timeline entries","summary":"Return paginated audit-derived timeline entries with a continuation cursor.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","space-read","member-read"],"requiresApproval":false,"cli":"keyvra bookings timeline list","mcpTool":"bookings_timeline_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"},"cursor":{"type":"string"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"id":{"type":"string"},"label":{"type":"string"},"metadata":{}},"required":["action","createdAt","id","label"],"additionalProperties":false}}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"bookings.turnover.complete","group":"bookings","title":"Complete a booking and schedule cleaning","summary":"Complete a checked-in booking, enqueue a cleaning task, and return the completed booking.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":false,"cli":"keyvra bookings turnover complete","mcpTool":"bookings_turnover_complete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.visitors.checkIn","group":"bookings","title":"Check in a visitor","summary":"Record staff-confirmed visitor arrival and return the presence-session ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings visitors check-in","mcpTool":"bookings_visitors_checkIn","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"invitationId":{"type":"string","x-convex-table":"visitorInvitations"}},"required":["invitationId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"presenceSessions"}},{"id":"bookings.visitors.checkOut","group":"bookings","title":"Check out a visitor","summary":"Record departure, update the invitation, refresh access, and return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra bookings visitors check-out","mcpTool":"bookings_visitors_checkOut","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"invitationId":{"type":"string","x-convex-table":"visitorInvitations"}},"required":["invitationId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"bookings.visitors.list","group":"bookings","title":"List visitor invitations","summary":"Return paginated workspace visitor invitations without bearer-token hashes.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra bookings visitors list","mcpTool":"bookings_visitors_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"visitorInvitations"},"arrivedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdBy":{"type":"string","x-convex-table":"users"},"deliveryId":{"type":"string"},"deliveryLeaseUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"deliveryStatus":{"anyOf":[{"const":"not_sent"},{"const":"sending"},{"const":"sent"},{"const":"failed"},{"const":"not_configured"}]},"departedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"hostUserId":{"type":"string","x-convex-table":"users"},"propertyId":{"type":"string","x-convex-table":"properties"},"requestKey":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"invited"},{"const":"arrived"},{"const":"departed"},{"const":"revoked"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"visitorEmail":{"type":"string"},"visitorName":{"type":"string"}},"required":["_creationTime","_id","createdAt","createdBy","deliveryStatus","endMs","hostUserId","propertyId","requestKey","startMs","status","tenantId","updatedAt","visitorEmail","visitorName"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"bookings.visitors.revoke","group":"bookings","title":"Revoke a visitor invitation","summary":"Revoke a workspace visitor invitation and refresh physical access, returning null.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update"],"requiresApproval":true,"cli":"keyvra bookings visitors revoke","mcpTool":"bookings_visitors_revoke","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"invitationId":{"type":"string","x-convex-table":"visitorInvitations"}},"required":["invitationId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"bookings.waitlist.create","group":"bookings","title":"Add a member to the waitlist","summary":"Add a workspace member's requested space interval and return the waitlist ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create"],"requiresApproval":false,"cli":"keyvra bookings waitlist create","mcpTool":"bookings_waitlist_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","memberId","spaceId","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.waitlist.list","group":"bookings","title":"List waitlist entries","summary":"Return waitlist entries with contact, space, requested interval, status, and current availability.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","space-read","member-read"],"requiresApproval":false,"cli":"keyvra bookings waitlist list","mcpTool":"bookings_waitlist_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"anyOf":[{"const":"waiting"},{"const":"notified"},{"const":"booked"},{"const":"expired"},{"const":"cancelled"}]}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.waitlist.promote","group":"bookings","title":"Promote a waitlist entry","summary":"Create a booking for an available waiting or notified entry and return booking and waitlist IDs.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra bookings waitlist promote","mcpTool":"bookings_waitlist_promote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"notes":{"type":"string"},"waitlistId":{"type":"string","x-convex-table":"waitlist"}},"required":["waitlistId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.waitlist.remove","group":"bookings","title":"Remove a waitlist entry","summary":"Soft-delete and cancel a workspace waitlist entry, returning its ID and removed true.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel"],"requiresApproval":true,"cli":"keyvra bookings waitlist remove","mcpTool":"bookings_waitlist_remove","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"notes":{"type":"string"},"waitlistId":{"type":"string","x-convex-table":"waitlist"}},"required":["waitlistId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"bookings.waitlistCancellation.cancel","group":"bookings","title":"Cancel a booking and notify its waitlist","summary":"Cancel a booking and notify the first eligible waiting entry, returning the booking and notified entry ID.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":["financial"],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra bookings waitlist-cancellation cancel","mcpTool":"bookings_waitlistCancellation_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"calendar.bookings.create","group":"calendar","title":"Create a calendar booking","summary":"Create a confirmed member or guest booking and return the booking document.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra calendar bookings create","mcpTool":"calendar_bookings_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"notes":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","spaceId","startMs","memberId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"calendar.bookings.createGuest","group":"calendar","title":"Create a calendar booking","summary":"Create a confirmed member or guest booking and return the booking document.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-create","booking-read","member-create","space-read"],"requiresApproval":true,"cli":"keyvra calendar bookings create-guest","mcpTool":"calendar_bookings_createGuest","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"guestEmail":{"type":"string"},"guestName":{"type":"string"},"notes":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","spaceId","startMs","guestEmail"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"calendar.bookings.reschedule","group":"calendar","title":"Reschedule a calendar booking","summary":"Move a confirmed booking to an available space and interval, returning the updated booking.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":["confirmationId","shortId","bookingReference","bookingRef"],"permissionAlternatives":[],"policy":"allow","permissions":["booking-update","space-read"],"requiresApproval":true,"cli":"keyvra calendar bookings reschedule","mcpTool":"calendar_bookings_reschedule","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["bookingId","endMs","spaceId","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"calendar.feed.get","group":"calendar","title":"Get the calendar feed","summary":"Return calendar resources, filters, bookings, blackouts, and maintenance blocks for a date range.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","space-read"],"requiresApproval":false,"cli":"keyvra calendar feed get","mcpTool":"calendar_feed_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"floorIds":{"type":"array","items":{"type":"string"}},"propertyIds":{"type":"array","items":{"type":"string"}},"spaceIds":{"type":"array","items":{"type":"string"}},"spaceTypes":{"type":"array","items":{"type":"string"}},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"communications.audiences.listOptions","group":"communications","title":"List audience options","summary":"Return tenant groups, companies, plans, locations, and member names for communication targeting.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":false,"cli":"keyvra communications audiences list-options","mcpTool":"communications_audiences_listOptions","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"companies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"locations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"plans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["companies","groups","locations","members","plans","truncated"],"additionalProperties":false}},{"id":"communications.audiences.preview","group":"communications","title":"Preview communication audience","summary":"Return eligible and excluded recipient counts plus a sample of recipient names.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":false,"cli":"keyvra communications audiences preview","mcpTool":"communications_audiences_preview","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"purpose":{"anyOf":[{"const":"newsletter"},{"const":"community"},{"const":"service"}]},"segment":{"type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"kind":{"anyOf":[{"const":"all"},{"const":"group"},{"const":"company"},{"const":"plan"},{"const":"location"},{"const":"selected"}]},"memberIds":{"type":"array","items":{"type":"string","x-convex-table":"members"}},"planId":{"type":"string","x-convex-table":"membershipPlans"},"propertyId":{"type":"string","x-convex-table":"properties"}},"required":["kind"],"additionalProperties":false}},"required":["purpose","segment"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"eligible":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"excluded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"names":{"type":"array","items":{"type":"string"}}},"required":["eligible","excluded","names"],"additionalProperties":false}},{"id":"communications.automationTemplates.list","group":"communications","title":"List reminder templates","summary":"Return the tenant's configured booking, invoice, membership, payment-failure, and event reminder templates.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra communications automation-templates list","mcpTool":"communications_automationTemplates_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"automationTemplateSettings"},"bodyEn":{"type":"string"},"bodyFr":{"type":"string"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"enabled":{"type":"boolean"},"kind":{"anyOf":[{"const":"booking_reminder"},{"const":"invoice_reminder"},{"const":"membership_renewal"},{"const":"failed_payment"},{"const":"event_reminder"}]},"lastRunAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lastRunStatus":{"anyOf":[{"const":"ok"},{"const":"bounded"}]},"offsetMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subjectEn":{"type":"string"},"subjectFr":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedBy":{"type":"string","x-convex-table":"users"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","bodyEn","bodyFr","createdAt","enabled","kind","offsetMinutes","subjectEn","subjectFr","tenantId","updatedAt","updatedBy","version"],"additionalProperties":false}}},{"id":"communications.automations.listDeliveries","group":"communications","title":"List reminder deliveries","summary":"Return a cursor page of delivery status, recipient, attempt, and provider information for an automation.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read","member-read"],"requiresApproval":false,"cli":"keyvra communications automations list-deliveries","mcpTool":"communications_automations_listDeliveries","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"automationId":{"type":"string","x-convex-table":"automationTemplateSettings"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["automationId","paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string"},"attempts":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"deliveryId":{"anyOf":[{"type":"string","x-convex-table":"communicationDeliveries"},{"type":"null"}]},"providerMessageId":{"anyOf":[{"type":"string"},{"type":"null"}]},"recipientEmail":{"type":"string"},"status":{"anyOf":[{"const":"queued"},{"const":"sending"},{"const":"accepted"},{"const":"failed"},{"const":"skipped"},{"const":"cancelled"}]}},"required":["_id","attempts","deliveryId","providerMessageId","recipientEmail","status"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"communications.campaigns.cancel","group":"communications","title":"Cancel communication campaign","summary":"Cancel an unfinished campaign and its queued deliveries for the current delivery version.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":true,"cli":"keyvra communications campaigns cancel","mcpTool":"communications_campaigns_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"campaignId":{"type":"string","x-convex-table":"communicationCampaigns"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["campaignId","expectedVersion"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"communications.campaigns.get","group":"communications","title":"Get communication campaign","summary":"Return a tenant communication campaign's content, audience, lifecycle, and version.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[["community-manage"],["cms-read"]],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra communications campaigns get","mcpTool":"communications_campaigns_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"campaignId":{"type":"string","x-convex-table":"communicationCampaigns"}},"required":["campaignId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"communicationCampaigns"},"bodyEn":{"type":"string"},"bodyFr":{"type":"string"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdBy":{"type":"string","x-convex-table":"users"},"deliveryVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"purpose":{"anyOf":[{"const":"newsletter"},{"const":"community"},{"const":"service"}]},"reviewedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reviewedBy":{"type":"string","x-convex-table":"users"},"reviewedMemberIds":{"type":"array","items":{"type":"string","x-convex-table":"members"}},"scheduledAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"segment":{"type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"kind":{"anyOf":[{"const":"all"},{"const":"group"},{"const":"company"},{"const":"plan"},{"const":"location"},{"const":"selected"}]},"memberIds":{"type":"array","items":{"type":"string","x-convex-table":"members"}},"planId":{"type":"string","x-convex-table":"membershipPlans"},"propertyId":{"type":"string","x-convex-table":"properties"}},"required":["kind"],"additionalProperties":false},"status":{"anyOf":[{"const":"draft"},{"const":"reviewed"},{"const":"scheduled"},{"const":"completed"},{"const":"cancelled"}]},"subjectEn":{"type":"string"},"subjectFr":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","bodyEn","bodyFr","createdAt","createdBy","name","purpose","reviewedMemberIds","segment","status","subjectEn","subjectFr","tenantId","updatedAt","version"],"additionalProperties":false}},{"id":"communications.campaigns.list","group":"communications","title":"List communication campaigns","summary":"Return a cursor page of tenant communication campaigns in descending order.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[["community-manage"],["cms-read"]],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra communications campaigns list","mcpTool":"communications_campaigns_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"communicationCampaigns"},"bodyEn":{"type":"string"},"bodyFr":{"type":"string"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdBy":{"type":"string","x-convex-table":"users"},"deliveryVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"purpose":{"anyOf":[{"const":"newsletter"},{"const":"community"},{"const":"service"}]},"reviewedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reviewedBy":{"type":"string","x-convex-table":"users"},"reviewedMemberIds":{"type":"array","items":{"type":"string","x-convex-table":"members"}},"scheduledAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"segment":{"type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"kind":{"anyOf":[{"const":"all"},{"const":"group"},{"const":"company"},{"const":"plan"},{"const":"location"},{"const":"selected"}]},"memberIds":{"type":"array","items":{"type":"string","x-convex-table":"members"}},"planId":{"type":"string","x-convex-table":"membershipPlans"},"propertyId":{"type":"string","x-convex-table":"properties"}},"required":["kind"],"additionalProperties":false},"status":{"anyOf":[{"const":"draft"},{"const":"reviewed"},{"const":"scheduled"},{"const":"completed"},{"const":"cancelled"}]},"subjectEn":{"type":"string"},"subjectFr":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","bodyEn","bodyFr","createdAt","createdBy","name","purpose","reviewedMemberIds","segment","status","subjectEn","subjectFr","tenantId","updatedAt","version"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"communications.campaigns.listRecipientOutcomes","group":"communications","title":"List campaign recipient outcomes","summary":"Return a cursor page of recipient delivery statuses, attempts, errors, and provider message IDs.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[["community-manage"],["cms-read"]],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra communications campaigns list-recipient-outcomes","mcpTool":"communications_campaigns_listRecipientOutcomes","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"campaignId":{"type":"string","x-convex-table":"communicationCampaigns"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["campaignId","paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"attempts":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"email":{"type":"string"},"errorCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"type":"string","x-convex-table":"communicationDeliveries"},"isTest":{"type":"boolean"},"providerMessageId":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"const":"queued"},{"const":"sending"},{"const":"accepted"},{"const":"failed"},{"const":"skipped"},{"const":"cancelled"}]}},"required":["attempts","email","errorCode","id","isTest","providerMessageId","status"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"communications.campaigns.review","group":"communications","title":"Review communication campaign","summary":"Snapshot a draft's currently eligible audience, mark it reviewed, and return its new version and recipient count.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":false,"cli":"keyvra communications campaigns review","mcpTool":"communications_campaigns_review","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"campaignId":{"type":"string","x-convex-table":"communicationCampaigns"},"confirmed":{"const":true},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["campaignId","confirmed","expectedVersion"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"eligible":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["eligible","version"],"additionalProperties":false}},{"id":"communications.campaigns.save","group":"communications","title":"Save communication campaign","summary":"Create or edit a bilingual campaign draft and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":false,"cli":"keyvra communications campaigns save","mcpTool":"communications_campaigns_save","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bodyEn":{"type":"string"},"bodyFr":{"type":"string"},"campaignId":{"type":"string","x-convex-table":"communicationCampaigns"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"purpose":{"anyOf":[{"const":"newsletter"},{"const":"community"},{"const":"service"}]},"segment":{"type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"kind":{"anyOf":[{"const":"all"},{"const":"group"},{"const":"company"},{"const":"plan"},{"const":"location"},{"const":"selected"}]},"memberIds":{"type":"array","items":{"type":"string","x-convex-table":"members"}},"planId":{"type":"string","x-convex-table":"membershipPlans"},"propertyId":{"type":"string","x-convex-table":"properties"}},"required":["kind"],"additionalProperties":false},"subjectEn":{"type":"string"},"subjectFr":{"type":"string"}},"required":["bodyEn","bodyFr","name","purpose","segment","subjectEn","subjectFr"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"communicationCampaigns"}},{"id":"communications.deliveries.retry","group":"communications","title":"Retry failed communication","summary":"Requeue an eligible failed delivery and schedule dispatch.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":false,"cli":"keyvra communications deliveries retry","mcpTool":"communications_deliveries_retry","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmed":{"const":true},"deliveryId":{"type":"string","x-convex-table":"communicationDeliveries"}},"required":["confirmed","deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"communications.documents.download","group":"communications","title":"Download a community document","summary":"Open the browser flow to download a community document.","tiers":["operator"],"kind":"action","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[["community-manage"],["cms-read"]],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra communications documents download","mcpTool":"communications_documents_download","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"postId":{"type":"string","x-convex-table":"communityPosts"}},"required":["postId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"communications.documents.upload","group":"communications","title":"Upload a community document","summary":"Open the browser flow to upload a community document.","tiers":["operator"],"kind":"action","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":false,"cli":"keyvra communications documents upload","mcpTool":"communications_documents_upload","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fileName":{"type":"string","minLength":1,"maxLength":120},"contentType":{"enum":["application/pdf","text/plain"]},"contentBase64":{"type":"string","minLength":4,"maxLength":174764}},"required":["fileName","contentType","contentBase64"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"communications.rules.get","group":"communications","title":"Get automation rule","summary":"Return a tenant-owned automation rule document.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra communications rules get","mcpTool":"communications_rules_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ruleId":{"type":"string","x-convex-table":"automationRules"}},"required":["ruleId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"automationRules"},"action":{"anyOf":[{"type":"object","properties":{"bodyEn":{"type":"string"},"bodyFr":{"type":"string"},"channel":{"const":"email"},"kind":{"const":"send_communication"},"purpose":{"anyOf":[{"const":"newsletter"},{"const":"community"},{"const":"service"}]},"subjectEn":{"type":"string"},"subjectFr":{"type":"string"}},"required":["bodyEn","bodyFr","channel","kind","purpose","subjectEn","subjectFr"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"create_sales_activity"},"note":{"type":"string"}},"required":["kind","note"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"kind":{"const":"create_task"},"priority":{"anyOf":[{"const":"low"},{"const":"medium"},{"const":"high"}]},"taskKind":{"const":"maintenance"},"title":{"type":"string"}},"required":["kind","priority","taskKind","title"],"additionalProperties":false},{"type":"object","properties":{"body":{"type":"string"},"kind":{"const":"propose_agent_action"},"recipientUserId":{"type":"string","x-convex-table":"users"},"title":{"type":"string"},"tool":{"anyOf":[{"const":"send-member-message"}]}},"required":["body","kind","recipientUserId","title","tool"],"additionalProperties":false}]},"activatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"archivedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"conditions":{"type":"array","items":{"type":"object","properties":{"field":{"anyOf":[{"const":"bookingSource"},{"const":"bookingPriceCents"},{"const":"bookingAttendeeCount"},{"const":"bookingDurationMinutes"},{"const":"leadSource"},{"const":"leadStage"},{"const":"quoteTotalCents"},{"const":"quoteTargetKind"},{"const":"quoteSalesChannel"},{"const":"planPriceCents"},{"const":"subscriptionStatus"},{"const":"arrivalEvidence"}]},"op":{"anyOf":[{"const":"eq"},{"const":"neq"},{"const":"gte"},{"const":"lte"},{"const":"in"}]},"value":{"anyOf":[{"type":"string"},{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"array","items":{"type":"string"}}]}},"required":["field","op","value"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdBy":{"type":"string","x-convex-table":"users"},"enabled":{"type":"boolean"},"killSwitchAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lastSweepAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lastSweepStatus":{"anyOf":[{"const":"ok"},{"const":"bounded"}]},"maxRunsPerDay":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"runWindowCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"runWindowStartedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"tenantId":{"type":"string","x-convex-table":"tenants"},"trigger":{"anyOf":[{"type":"object","properties":{"kind":{"const":"booking.confirmed"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"lead.created"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"afterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"const":"quote.sent_unanswered"}},"required":["afterDays","kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"membership.payment_failed"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"visitor.checked_in"}},"required":["kind"],"additionalProperties":false}]},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedBy":{"type":"string","x-convex-table":"users"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","action","activatedAt","conditions","createdAt","createdBy","enabled","maxRunsPerDay","name","tenantId","trigger","updatedAt","updatedBy","version"],"additionalProperties":false}},{"id":"communications.rules.list","group":"communications","title":"List automation rules","summary":"Return nonarchived tenant rules and the workspace kill-switch state.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra communications rules list","mcpTool":"communications_rules_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"rules":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"automationRules"},"action":{"anyOf":[{"type":"object","properties":{"bodyEn":{"type":"string"},"bodyFr":{"type":"string"},"channel":{"const":"email"},"kind":{"const":"send_communication"},"purpose":{"anyOf":[{"const":"newsletter"},{"const":"community"},{"const":"service"}]},"subjectEn":{"type":"string"},"subjectFr":{"type":"string"}},"required":["bodyEn","bodyFr","channel","kind","purpose","subjectEn","subjectFr"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"create_sales_activity"},"note":{"type":"string"}},"required":["kind","note"],"additionalProperties":false},{"type":"object","properties":{"description":{"type":"string"},"kind":{"const":"create_task"},"priority":{"anyOf":[{"const":"low"},{"const":"medium"},{"const":"high"}]},"taskKind":{"const":"maintenance"},"title":{"type":"string"}},"required":["kind","priority","taskKind","title"],"additionalProperties":false},{"type":"object","properties":{"body":{"type":"string"},"kind":{"const":"propose_agent_action"},"recipientUserId":{"type":"string","x-convex-table":"users"},"title":{"type":"string"},"tool":{"anyOf":[{"const":"send-member-message"}]}},"required":["body","kind","recipientUserId","title","tool"],"additionalProperties":false}]},"activatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"archivedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"conditions":{"type":"array","items":{"type":"object","properties":{"field":{"anyOf":[{"const":"bookingSource"},{"const":"bookingPriceCents"},{"const":"bookingAttendeeCount"},{"const":"bookingDurationMinutes"},{"const":"leadSource"},{"const":"leadStage"},{"const":"quoteTotalCents"},{"const":"quoteTargetKind"},{"const":"quoteSalesChannel"},{"const":"planPriceCents"},{"const":"subscriptionStatus"},{"const":"arrivalEvidence"}]},"op":{"anyOf":[{"const":"eq"},{"const":"neq"},{"const":"gte"},{"const":"lte"},{"const":"in"}]},"value":{"anyOf":[{"type":"string"},{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"array","items":{"type":"string"}}]}},"required":["field","op","value"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdBy":{"type":"string","x-convex-table":"users"},"enabled":{"type":"boolean"},"killSwitchAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lastSweepAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lastSweepStatus":{"anyOf":[{"const":"ok"},{"const":"bounded"}]},"maxRunsPerDay":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"runWindowCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"runWindowStartedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"tenantId":{"type":"string","x-convex-table":"tenants"},"trigger":{"anyOf":[{"type":"object","properties":{"kind":{"const":"booking.confirmed"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"lead.created"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"afterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"const":"quote.sent_unanswered"}},"required":["afterDays","kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"membership.payment_failed"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"visitor.checked_in"}},"required":["kind"],"additionalProperties":false}]},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedBy":{"type":"string","x-convex-table":"users"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","action","activatedAt","conditions","createdAt","createdBy","enabled","maxRunsPerDay","name","tenantId","trigger","updatedAt","updatedBy","version"],"additionalProperties":false}},"workspaceKillSwitchAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]}},"required":["rules","workspaceKillSwitchAt"],"additionalProperties":false}},{"id":"communications.rules.listRecipients","group":"communications","title":"List rule proposal recipients","summary":"Return tenant staff IDs and names available as recipients of proposed agent actions.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra communications rules list-recipients","mcpTool":"communications_rules_listRecipients","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"users"},"name":{"type":"string"}},"required":["_id","name"],"additionalProperties":false}}},{"id":"communications.rules.listRuns","group":"communications","title":"List automation rule runs","summary":"Return rule-run history with status, attempts, errors, and current downstream delivery or approval outcomes.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra communications rules list-runs","mcpTool":"communications_rules_listRuns","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false},"ruleId":{"type":"string","x-convex-table":"automationRules"}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"automationRuns"},"attempts":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"effect":{"anyOf":[{"type":"null"},{"type":"object","properties":{"errorCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"const":"delivery"},"status":{"anyOf":[{"const":"queued"},{"const":"sending"},{"const":"accepted"},{"const":"failed"},{"const":"skipped"},{"const":"cancelled"}]}},"required":["errorCode","kind","status"],"additionalProperties":false},{"type":"object","properties":{"executed":{"type":"boolean"},"kind":{"const":"approval"},"status":{"anyOf":[{"const":"pending"},{"const":"approved"},{"const":"rejected"},{"const":"expired"}]}},"required":["executed","kind","status"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"sales_activity"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"task"}},"required":["kind"],"additionalProperties":false}]},"errorCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"ruleId":{"type":"string","x-convex-table":"automationRules"},"ruleName":{"anyOf":[{"type":"string"},{"type":"null"}]},"ruleVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"pending"},{"const":"running"},{"const":"succeeded"},{"const":"skipped"},{"const":"failed"},{"const":"cancelled"}]},"triggerKind":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_id","attempts","createdAt","effect","errorCode","ruleId","ruleName","ruleVersion","status","triggerKind","updatedAt"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"community.documents.delete","group":"community","title":"Delete community document","summary":"Detach an eligible community attachment and permanently delete its file and document record.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":true,"cli":"keyvra community documents delete","mcpTool":"community_documents_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"documentId":{"type":"string","x-convex-table":"communityDocuments"}},"required":["documentId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"community.posts.list","group":"community","title":"List community posts","summary":"Return a cursor page of tenant community posts across publication states.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[["community-manage"],["cms-read"]],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra community posts list","mcpTool":"community_posts_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"communityPosts"},"bodyEn":{"type":"string"},"bodyFr":{"type":"string"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdBy":{"type":"string","x-convex-table":"users"},"documentId":{"type":"string","x-convex-table":"communityDocuments"},"publishedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"segment":{"type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"kind":{"anyOf":[{"const":"all"},{"const":"group"},{"const":"company"},{"const":"plan"},{"const":"location"},{"const":"selected"}]},"memberIds":{"type":"array","items":{"type":"string","x-convex-table":"members"}},"planId":{"type":"string","x-convex-table":"membershipPlans"},"propertyId":{"type":"string","x-convex-table":"properties"}},"required":["kind"],"additionalProperties":false},"status":{"anyOf":[{"const":"draft"},{"const":"published"},{"const":"withdrawn"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"titleEn":{"type":"string"},"titleFr":{"type":"string"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","bodyEn","bodyFr","createdAt","createdBy","segment","status","tenantId","titleEn","titleFr","updatedAt","version"],"additionalProperties":false}}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"community.posts.publish","group":"community","title":"Publish community post","summary":"Publish a validated community post for its selected member audience.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":false,"cli":"keyvra community posts publish","mcpTool":"community_posts_publish","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmed":{"type":"boolean"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"postId":{"type":"string","x-convex-table":"communityPosts"}},"required":["confirmed","expectedVersion","postId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"community.posts.save","group":"community","title":"Save community post","summary":"Create or edit a bilingual community draft and associate an optional document.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":false,"cli":"keyvra community posts save","mcpTool":"community_posts_save","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bodyEn":{"type":"string"},"bodyFr":{"type":"string"},"documentId":{"type":"string","x-convex-table":"communityDocuments"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"postId":{"type":"string","x-convex-table":"communityPosts"},"segment":{"type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"kind":{"anyOf":[{"const":"all"},{"const":"group"},{"const":"company"},{"const":"plan"},{"const":"location"},{"const":"selected"}]},"memberIds":{"type":"array","items":{"type":"string","x-convex-table":"members"}},"planId":{"type":"string","x-convex-table":"membershipPlans"},"propertyId":{"type":"string","x-convex-table":"properties"}},"required":["kind"],"additionalProperties":false},"titleEn":{"type":"string"},"titleFr":{"type":"string"}},"required":["bodyEn","bodyFr","segment","titleEn","titleFr"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"communityPosts"}},{"id":"community.posts.unpublish","group":"community","title":"Withdraw community post","summary":"Remove a community post from the published member feed and increment its version.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["community-manage","member-read"],"requiresApproval":false,"cli":"keyvra community posts unpublish","mcpTool":"community_posts_unpublish","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"postId":{"type":"string","x-convex-table":"communityPosts"}},"required":["expectedVersion","postId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"insights.opportunities.approve","group":"insights","title":"Approve an inventory opportunity","summary":"Create a draft offer from a reviewed opportunity, mark it approved and return the offer ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","space-publish","space-read","space-update"],"requiresApproval":true,"cli":"keyvra insights opportunities approve","mcpTool":"insights_opportunities_approve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"opportunityId":{"type":"string","x-convex-table":"inventoryOpportunities"}},"required":["expectedVersion","opportunityId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"offers"}},{"id":"insights.opportunities.defer","group":"insights","title":"Defer an inventory opportunity","summary":"Dismiss or snooze a nonpublished opportunity, clear its approval and return null.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-publish","space-update"],"requiresApproval":true,"cli":"keyvra insights opportunities defer","mcpTool":"insights_opportunities_defer","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"action":{"anyOf":[{"const":"dismiss"},{"const":"snooze"}]},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"opportunityId":{"type":"string","x-convex-table":"inventoryOpportunities"},"untilMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["action","expectedVersion","opportunityId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"insights.opportunities.generate","group":"insights","title":"Generate inventory opportunities","summary":"Create proposed offer windows from availability and aggregate search demand; return created/skipped counts and evidence status.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read","space-update","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra insights opportunities generate","mcpTool":"insights_opportunities_generate","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","endMs","offerId","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"created":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"insufficientData":{"type":"boolean"},"skipped":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["created","insufficientData","skipped"],"additionalProperties":false}},{"id":"insights.opportunities.list","group":"insights","title":"List inventory opportunities","summary":"Return a paginated tenant opportunity list, newest first.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read"],"requiresApproval":false,"cli":"keyvra insights opportunities list","mcpTool":"insights_opportunities_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"inventoryOpportunities"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedOfferId":{"type":"string","x-convex-table":"offers"},"approvedOfferVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdBy":{"type":"string","x-convex-table":"users"},"currency":{"type":"string"},"demandSearches":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"demandWindowStart":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"evidenceStatus":{"anyOf":[{"const":"observed"},{"const":"insufficient_data"}]},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"potentialValueCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"},"resourceUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reviewedBy":{"type":"string","x-convex-table":"users"},"snoozedUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"sourceOfferId":{"type":"string","x-convex-table":"offers"},"sourceOfferVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"},"spaceUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"proposed"},{"const":"approved"},{"const":"published"},{"const":"dismissed"},{"const":"snoozed"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"zeroResultSearches":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","channelId","createdAt","createdBy","currency","demandSearches","demandWindowStart","endMs","evidenceStatus","expiresAt","name","potentialValueCents","resourceId","resourceUpdatedAt","sourceOfferId","sourceOfferVersion","spaceId","spaceUpdatedAt","startMs","status","tenantId","updatedAt","version","zeroResultSearches"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"insights.opportunities.options","group":"insights","title":"Get opportunity options","summary":"Return eligible hourly offers and enabled public sales channels with a truncation flag.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read","space-read"],"requiresApproval":false,"cli":"keyvra insights opportunities options","mcpTool":"insights_opportunities_options","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channels":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","x-convex-table":"channels"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"offers":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"id":{"type":"string","x-convex-table":"offers"},"name":{"type":"string"}},"required":["amountCents","currency","id","name"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["channels","offers","truncated"],"additionalProperties":false}},{"id":"insights.opportunities.publish","group":"insights","title":"Publish an inventory opportunity","summary":"Publish an approved draft offer on its channel and return the offer ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","space-publish","space-read","space-update"],"requiresApproval":true,"cli":"keyvra insights opportunities publish","mcpTool":"insights_opportunities_publish","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"opportunityId":{"type":"string","x-convex-table":"inventoryOpportunities"}},"required":["expectedVersion","opportunityId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"offers"}},{"id":"insights.opportunities.update","group":"insights","title":"Edit an inventory opportunity","summary":"Update a proposed window, price and channel, invalidate evidence/approval and return null.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","space-publish","space-read","space-update"],"requiresApproval":true,"cli":"keyvra insights opportunities update","mcpTool":"insights_opportunities_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"opportunityId":{"type":"string","x-convex-table":"inventoryOpportunities"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","channelId","endMs","expectedVersion","opportunityId","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"insights.pricingForecast.analyze","group":"insights","title":"Analyze pricing and demand","summary":"Return a draft price-review recommendation, booking forecast, source digest and evidence limitations.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read","space-read"],"requiresApproval":false,"cli":"keyvra insights pricing-forecast analyze","mcpTool":"insights_pricingForecast_analyze","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"adjustmentBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"expectedOfferVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expectedSourceDigest":{"type":"string"},"forecastDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"historyDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"historyEndMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["adjustmentBps","channelId","expectedOfferVersion","forecastDays","historyDays","historyEndMs","offerId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"draftOnly":{"const":true},"forecast":{"anyOf":[{"type":"object","properties":{"backtestMeanAbsoluteError":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"backtestWeeks":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"calibrated":{"const":false},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expectedBookings":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lowerBookings":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"method":{"const":"weekly_mean_planning_range_v1"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"upperBookings":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["backtestMeanAbsoluteError","backtestWeeks","calibrated","endMs","expectedBookings","lowerBookings","method","startMs","upperBookings"],"additionalProperties":false},{"type":"null"}]},"generatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"marketContext":{"type":"object","properties":{"city":{"type":"string"},"complete":{"type":"boolean"},"sampleBuckets":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"scope":{"const":"aggregate_city_searches"},"searches":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"usedInModel":{"const":false},"windowEndMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"windowStartMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"zeroResultSearches":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["city","complete","sampleBuckets","scope","searches","usedInModel","windowEndMs","windowStartMs","zeroResultSearches"],"additionalProperties":false},"reasons":{"type":"array","items":{"anyOf":[{"const":"low_sample"},{"const":"limited_history"},{"const":"source_limit"},{"const":"unsupported_offer"},{"const":"inactive_source"},{"const":"stale_observations"},{"const":"source_changed"},{"const":"history_outdated"}]}},"recommendation":{"anyOf":[{"type":"object","properties":{"action":{"anyOf":[{"const":"review_increase"},{"const":"review_decrease"},{"const":"hold"}]},"adjustmentBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"method":{"const":"booking_trend_review_heuristic_v1"},"previousBookings":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"recentBookings":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rules":{"type":"object","properties":{"bufferMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"horizonDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberOnly":{"type":"boolean"},"minimumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"passValidityMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"}},"required":["bufferMinutes","horizonDays","leadMinutes","memberOnly","minimumMinutes","requiresApproval"],"additionalProperties":false},"terms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false},"trend":{"anyOf":[{"const":"rising"},{"const":"falling"},{"const":"steady"}]}},"required":["action","adjustmentBps","amountCents","method","previousBookings","recentBookings","rules","terms","trend"],"additionalProperties":false},{"type":"null"}]},"sample":{"type":"object","properties":{"activeWeeks":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"exclusions":{"type":"object","properties":{"inactive":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"invalid":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"otherCurrency":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"otherOffer":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"otherTerms":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"otherVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inactive","invalid","otherCurrency","otherOffer","otherTerms","otherVersion"],"additionalProperties":false},"minimumBookings":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"qualifyingBookings":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"scannedBookings":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"weeklyBookings":{"type":"array","items":{"type":"object","properties":{"bookings":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["bookings","startMs"],"additionalProperties":false}},"weeks":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["activeWeeks","exclusions","minimumBookings","qualifyingBookings","scannedBookings","weeklyBookings","weeks"],"additionalProperties":false},"source":{"type":"object","properties":{"approvedTerms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false},"bookingIds":{"type":"array","items":{"type":"string","x-convex-table":"bookings"}},"channelId":{"type":"string","x-convex-table":"channels"},"channelName":{"type":"string"},"complete":{"type":"boolean"},"currency":{"type":"string"},"historyEndMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"historyStartMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"offerName":{"type":"string"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"publishedAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"resourceId":{"type":"string","x-convex-table":"resources"},"rowLimit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"},"spaceName":{"type":"string"}},"required":["approvedTerms","bookingIds","channelId","channelName","complete","currency","historyEndMs","historyStartMs","offerId","offerName","offerVersion","publishedAt","resourceId","rowLimit","spaceId","spaceName"],"additionalProperties":false},"sourceDigest":{"type":"string"},"status":{"anyOf":[{"const":"ready"},{"const":"insufficient_data"},{"const":"stale_source"}]}},"required":["draftOnly","forecast","generatedAt","marketContext","reasons","recommendation","sample","source","sourceDigest","status"],"additionalProperties":false}},{"id":"insights.pricingForecast.options","group":"insights","title":"Get pricing forecast options","summary":"Return eligible published reservation offers with versions, enabled channels and truncation metadata.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read","space-read"],"requiresApproval":false,"cli":"keyvra insights pricing-forecast options","mcpTool":"insights_pricingForecast_options","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"offers":{"type":"array","items":{"type":"object","properties":{"channels":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","x-convex-table":"channels"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"currency":{"type":"string"},"id":{"type":"string","x-convex-table":"offers"},"name":{"type":"string"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channels","currency","id","name","version"],"additionalProperties":false}},"scanCapped":{"type":"boolean"},"truncated":{"type":"boolean"}},"required":["offers","scanCapped","truncated"],"additionalProperties":false}},{"id":"integrations.apiKeys.getUsage","group":"integrations","title":"Get API key usage","summary":"Return usage statistics for a tenant-owned managed API key.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations api-keys get-usage","mcpTool":"integrations_apiKeys_getUsage","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"keyRef":{"type":"string"}},"required":["keyRef"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.apiKeys.list","group":"integrations","title":"List API keys","summary":"List tenant API-key metadata, including statuses, scopes, prefixes, and partner-channel bindings.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations api-keys list","mcpTool":"integrations_apiKeys_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.calendar.disconnect","group":"integrations","title":"Disconnect calendar provider","summary":"Disable the selected tenant calendar connection and clear its stored credential references. Returns whether a connection was disconnected.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations calendar disconnect","mcpTool":"integrations_calendar_disconnect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"provider":{"anyOf":[{"const":"google"},{"const":"microsoft"}]}},"required":["provider"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.calendar.getDashboard","group":"integrations","title":"Get calendar dashboard","summary":"Return calendar connection summaries and unresolved inbound calendar conflicts for the tenant.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations calendar get-dashboard","mcpTool":"integrations_calendar_getDashboard","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.calendar.list","group":"integrations","title":"List calendar connections","summary":"Return Google and Microsoft calendar connection, configuration, and delivery summaries for the tenant.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra integrations calendar list","mcpTool":"integrations_calendar_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.calendar.select","group":"integrations","title":"Select provider calendar","summary":"Choose a discovered calendar for an active tenant connection and return the selected calendar ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations calendar select","mcpTool":"integrations_calendar_select","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"calendarId":{"type":"string"},"provider":{"anyOf":[{"const":"google"},{"const":"microsoft"}]}},"required":["calendarId","provider"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.calendar.sync","group":"integrations","title":"Sync calendar bookings","summary":"Queue booking updates for an active calendar connection and return the number enqueued.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations calendar sync","mcpTool":"integrations_calendar_sync","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"provider":{"anyOf":[{"const":"google"},{"const":"microsoft"}]}},"required":["provider"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.calendarConflicts.list","group":"integrations","title":"List calendar conflicts","summary":"List unresolved inbound calendar conflicts, newest updated first, with affected spaces, bookings, and time windows.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations calendar-conflicts list","mcpTool":"integrations_calendarConflicts_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.calendarConflicts.resolve","group":"integrations","title":"Ignore calendar conflict","summary":"Mark a tenant-owned inbound calendar conflict as ignored and return its event ID and status.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations calendar-conflicts resolve","mcpTool":"integrations_calendarConflicts_resolve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"eventId":{"type":"string","x-convex-table":"calendarInboundEvents"},"resolution":{"anyOf":[{"const":"ignore"}]}},"required":["eventId","resolution"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.calendarOAuth.connect","group":"integrations","title":"Connect a calendar provider","summary":"Open browser consent for Google or Microsoft, then finish the signed callback and provider watch setup.","tiers":["operator"],"kind":"action","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations calendar-o-auth connect","mcpTool":"integrations_calendarOAuth_connect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"provider":{"enum":["google","microsoft"]}},"required":["provider"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.connectorProposals.propose","group":"integrations","title":"Propose dynamic connector","summary":"Build and store a tenant connector proposal containing provider, authentication, endpoints, scopes, and field mapping. Returns a pending-approval summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations connector-proposals propose","mcpTool":"integrations_connectorProposals_propose","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"authType":{"anyOf":[{"const":"api_key"},{"const":"oauth2"}]},"baseUrl":{"type":"string"},"endpoints":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"key":{"type":"string"},"method":{"anyOf":[{"const":"GET"},{"const":"POST"},{"const":"PUT"},{"const":"PATCH"},{"const":"DELETE"}]},"path":{"type":"string"}},"required":["key","method","path"],"additionalProperties":false}},"fieldMap":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"providerName":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}}},"required":["authType","baseUrl","providerName"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.deliveries.retry","group":"integrations","title":"Retry integration delivery (calendar.create)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry","mcpTool":"integrations_deliveries_retry","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.accessgrant","group":"integrations","title":"Retry integration delivery (access.grant)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin","integration-manage"],"requiresApproval":true,"cli":"keyvra integrations deliveries retry accessgrant","mcpTool":"integrations_deliveries_retry_accessgrant","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.accessrevoke","group":"integrations","title":"Retry integration delivery (access.revoke)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin","integration-manage"],"requiresApproval":true,"cli":"keyvra integrations deliveries retry accessrevoke","mcpTool":"integrations_deliveries_retry_accessrevoke","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.calendardelete","group":"integrations","title":"Retry integration delivery (calendar.delete)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry calendardelete","mcpTool":"integrations_deliveries_retry_calendardelete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.calendarupdate","group":"integrations","title":"Retry integration delivery (calendar.update)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry calendarupdate","mcpTool":"integrations_deliveries_retry_calendarupdate","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.invoiceexport","group":"integrations","title":"Retry integration delivery (invoice.export)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations deliveries retry invoiceexport","mcpTool":"integrations_deliveries_retry_invoiceexport","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.slackbookingcancelled","group":"integrations","title":"Retry integration delivery (slack.booking.cancelled)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry slackbookingcancelled","mcpTool":"integrations_deliveries_retry_slackbookingcancelled","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.slackbookingcheckedin","group":"integrations","title":"Retry integration delivery (slack.booking.checked_in)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry slackbookingcheckedin","mcpTool":"integrations_deliveries_retry_slackbookingcheckedin","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.slackbookingcompleted","group":"integrations","title":"Retry integration delivery (slack.booking.completed)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry slackbookingcompleted","mcpTool":"integrations_deliveries_retry_slackbookingcompleted","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.slackbookingconfirmed","group":"integrations","title":"Retry integration delivery (slack.booking.confirmed)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry slackbookingconfirmed","mcpTool":"integrations_deliveries_retry_slackbookingconfirmed","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.slackmaintenanceticketcreated","group":"integrations","title":"Retry integration delivery (slack.maintenance.ticket.created)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry slackmaintenanceticketcreated","mcpTool":"integrations_deliveries_retry_slackmaintenanceticketcreated","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.webhookbookingcancelled","group":"integrations","title":"Retry integration delivery (webhook.booking.cancelled)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry webhookbookingcancelled","mcpTool":"integrations_deliveries_retry_webhookbookingcancelled","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.webhookbookingcheckedin","group":"integrations","title":"Retry integration delivery (webhook.booking.checked_in)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry webhookbookingcheckedin","mcpTool":"integrations_deliveries_retry_webhookbookingcheckedin","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.webhookbookingcompleted","group":"integrations","title":"Retry integration delivery (webhook.booking.completed)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry webhookbookingcompleted","mcpTool":"integrations_deliveries_retry_webhookbookingcompleted","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.deliveries.retry.webhookbookingcreated","group":"integrations","title":"Retry integration delivery (webhook.booking.created)","summary":"Reset a tenant dead-letter delivery to pending and update its booking access projection. Returns a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations deliveries retry webhookbookingcreated","mcpTool":"integrations_deliveries_retry_webhookbookingcreated","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"integrationDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requeued":{"type":"boolean"}},"required":["requeued"],"additionalProperties":false}},{"id":"integrations.entitlementAccess.getConfiguration","group":"integrations","title":"Get entitlement access configuration","summary":"Return whether Kisi and generic access connections are connected and whether entitlement access is enabled.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations entitlement-access get-configuration","mcpTool":"integrations_entitlementAccess_getConfiguration","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"connected":{"type":"boolean"},"enabled":{"type":"boolean"},"provider":{"anyOf":[{"const":"kisi"},{"const":"generic_access"}]}},"required":["connected","enabled","provider"],"additionalProperties":false}}},{"id":"integrations.entitlementAccess.inspect","group":"integrations","title":"Inspect entitlement access","summary":"Return eligibility, configuration availability, and recent provider access assignments for a resource and entitlement subject.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra integrations entitlement-access inspect","mcpTool":"integrations_entitlementAccess_inspect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"provider":{"anyOf":[{"const":"kisi"},{"const":"generic_access"}]},"resourceId":{"type":"string","x-convex-table":"resources"},"subject":{"anyOf":[{"type":"object","properties":{"invitationId":{"type":"string","x-convex-table":"visitorInvitations"},"kind":{"const":"visitor"}},"required":["invitationId","kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"pass"},"passId":{"type":"string","x-convex-table":"dayPasses"}},"required":["kind","passId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"event"},"registrationId":{"type":"string","x-convex-table":"eventRegistrations"}},"required":["kind","registrationId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"membership"},"memberId":{"type":"string","x-convex-table":"members"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["kind","memberId","subscriptionId"],"additionalProperties":false}]}},"required":["provider","resourceId","subject"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assignments":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"accessAssignments"},"acknowledgedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"desired":{"anyOf":[{"const":"grant"},{"const":"revoke"}]},"eligibilityFingerprint":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fingerprint":{"type":"string"},"grantAttemptedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"integrationId":{"type":"string","x-convex-table":"integrations"},"kisiGroupId":{"type":"string"},"lastDeliveryId":{"type":"string","x-convex-table":"integrationDeliveries"},"propertyId":{"type":"string","x-convex-table":"properties"},"provider":{"anyOf":[{"const":"kisi"},{"const":"generic_access"}]},"providerAssignmentId":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"revision":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"sourceKey":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"state":{"anyOf":[{"const":"pending"},{"const":"granted"},{"const":"revoked"},{"const":"failed"}]},"subject":{"anyOf":[{"type":"object","properties":{"kind":{"const":"visitor"}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"pass"},"passId":{"type":"string","x-convex-table":"dayPasses"}},"required":["kind","passId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"event"},"registrationId":{"type":"string","x-convex-table":"eventRegistrations"}},"required":["kind","registrationId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"membership"},"memberId":{"type":"string","x-convex-table":"members"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["kind","memberId","subscriptionId"],"additionalProperties":false}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","createdAt","desired","eligibilityFingerprint","endMs","fingerprint","integrationId","propertyId","provider","resourceId","revision","sourceKey","startMs","state","subject","tenantId","updatedAt"],"additionalProperties":false}},"configured":{"type":"boolean"},"eligible":{"type":"boolean"},"reason":{"type":"string"}},"required":["assignments","configured","eligible","reason"],"additionalProperties":false}},{"id":"integrations.entitlementAccess.request","group":"integrations","title":"Request entitlement access","summary":"Reconcile a subject's door-access eligibility and queue a provider grant when configured. Returns eligibility, state, reason, and an assignment ID.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":true,"cli":"keyvra integrations entitlement-access request","mcpTool":"integrations_entitlementAccess_request","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"provider":{"anyOf":[{"const":"kisi"},{"const":"generic_access"}]},"resourceId":{"type":"string","x-convex-table":"resources"},"subject":{"anyOf":[{"type":"object","properties":{"invitationId":{"type":"string","x-convex-table":"visitorInvitations"},"kind":{"const":"visitor"}},"required":["invitationId","kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"pass"},"passId":{"type":"string","x-convex-table":"dayPasses"}},"required":["kind","passId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"event"},"registrationId":{"type":"string","x-convex-table":"eventRegistrations"}},"required":["kind","registrationId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"membership"},"memberId":{"type":"string","x-convex-table":"members"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["kind","memberId","subscriptionId"],"additionalProperties":false}]}},"required":["provider","resourceId","subject"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assignmentId":{"anyOf":[{"type":"string","x-convex-table":"accessAssignments"},{"type":"null"}]},"eligible":{"type":"boolean"},"reason":{"type":"string"},"state":{"type":"string"}},"required":["assignmentId","eligible","reason","state"],"additionalProperties":false}},{"id":"integrations.entitlementAccess.retry","group":"integrations","title":"Retry entitlement access","summary":"Retry a failed tenant access assignment after rechecking grant eligibility. Returns null.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":true,"cli":"keyvra integrations entitlement-access retry","mcpTool":"integrations_entitlementAccess_retry","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assignmentId":{"type":"string","x-convex-table":"accessAssignments"}},"required":["assignmentId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"integrations.entitlementAccess.revoke","group":"integrations","title":"Revoke entitlement access","summary":"Queue revocation of a tenant access assignment. Returns null.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":true,"cli":"keyvra integrations entitlement-access revoke","mcpTool":"integrations_entitlementAccess_revoke","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assignmentId":{"type":"string","x-convex-table":"accessAssignments"}},"required":["assignmentId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"integrations.entitlementAccess.setEnabled","group":"integrations","title":"Set entitlement access","summary":"Enable or disable entitlement-based door access on an existing active provider connection. Returns null.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations entitlement-access set-enabled","mcpTool":"integrations_entitlementAccess_setEnabled","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"},"provider":{"anyOf":[{"const":"kisi"},{"const":"generic_access"}]}},"required":["enabled","provider"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"integrations.genericAccess.disconnect","group":"integrations","title":"Disconnect generic access","summary":"Disable the tenant's generic access connection, clear its local credential reference, and return connection status.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations generic-access disconnect","mcpTool":"integrations_genericAccess_disconnect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.genericAccess.get","group":"integrations","title":"Get generic access connection","summary":"Return the tenant's generic access connection status, configured endpoint URL, and update time.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations generic-access get","mcpTool":"integrations_genericAccess_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.genericAccess.listDeliveries","group":"integrations","title":"List generic access deliveries","summary":"Return the tenant's 40 most recently updated generic access deliveries with attempts, status, target reference, and errors.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations generic-access list-deliveries","mcpTool":"integrations_genericAccess_listDeliveries","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.genericAccess.test","group":"integrations","title":"Test generic access connection","summary":"Send a signed synthetic access-grant payload to the tenant's configured endpoint and return delivery success or a reason.","tiers":["operator"],"kind":"action","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations generic-access test","mcpTool":"integrations_genericAccess_test","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.hub.list","group":"integrations","title":"List integration hub status","summary":"Return catalog connector setup, connection, breaker, dead-letter, and management-path summaries for the tenant.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations hub list","mcpTool":"integrations_hub_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.kisi.disconnect","group":"integrations","title":"Disconnect Kisi","summary":"Disable the tenant's Kisi connection, clear its local credential reference, and return disconnected status.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations kisi disconnect","mcpTool":"integrations_kisi_disconnect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.kisi.get","group":"integrations","title":"Get Kisi connection","summary":"Return the tenant's Kisi connection status and stored validation summary.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations kisi get","mcpTool":"integrations_kisi_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.kisi.listDeliveries","group":"integrations","title":"List Kisi deliveries","summary":"Return the tenant's 40 most recently updated Kisi deliveries with attempts, status, target reference, and errors.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations kisi list-deliveries","mcpTool":"integrations_kisi_listDeliveries","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.kisi.test","group":"integrations","title":"Test Kisi connection","summary":"Validate the stored tenant Kisi API key with a provider groups request and return connection health.","tiers":["operator"],"kind":"action","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations kisi test","mcpTool":"integrations_kisi_test","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.quickBooks.connect","group":"integrations","title":"Start QuickBooks connection","summary":"Return an Intuit OAuth consent URL with signed tenant/user state, or a provider setup explanation.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations quick-books connect","mcpTool":"integrations_quickBooks_connect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.quickBooks.disconnect","group":"integrations","title":"Disconnect QuickBooks","summary":"Disable the tenant's QuickBooks connection, clear local OAuth credential references, and return connection status.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations quick-books disconnect","mcpTool":"integrations_quickBooks_disconnect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.quickBooks.get","group":"integrations","title":"Get QuickBooks connection","summary":"Return QuickBooks connection status, company identifier, and missing provider configuration names for the tenant.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations quick-books get","mcpTool":"integrations_quickBooks_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.quickBooks.listExports","group":"integrations","title":"List QuickBooks exports","summary":"Return up to 60 recent invoice export summaries with invoice totals, currency, export state, delivery ID, and errors.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations quick-books list-exports","mcpTool":"integrations_quickBooks_listExports","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.slack.disconnect","group":"integrations","title":"Disconnect Slack","summary":"Disable the tenant Slack notification connection, clear its local webhook credential reference, and return status.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations slack disconnect","mcpTool":"integrations_slack_disconnect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.slack.get","group":"integrations","title":"Get Slack connection","summary":"Return tenant Slack connection status, enabled notification event types, and webhook host.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations slack get","mcpTool":"integrations_slack_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.slack.listDeliveries","group":"integrations","title":"List Slack deliveries","summary":"Return the tenant's 40 most recently updated Slack deliveries with attempts, status, target reference, and errors.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations slack list-deliveries","mcpTool":"integrations_slack_listDeliveries","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.slack.listEventTypes","group":"integrations","title":"List Slack event types","summary":"Return supported Slack notification event identifiers and labels.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations slack list-event-types","mcpTool":"integrations_slack_listEventTypes","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.slack.test","group":"integrations","title":"Test Slack connection","summary":"Send a fixed test notification to the tenant's stored Slack webhook and return delivery success or an error reason.","tiers":["operator"],"kind":"action","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations slack test","mcpTool":"integrations_slack_test","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.status.list","group":"integrations","title":"List integration status","summary":"Return provider connection and circuit-breaker states with dead-letter summaries for the tenant.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations status list","mcpTool":"integrations_status_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.supplyMappings.getOptions","group":"integrations","title":"Get supply mapping options","summary":"Return active calendar connections, discovered calendar choices, tenant timezone, and whether the caller can configure mappings.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations supply-mappings get-options","mcpTool":"integrations_supplyMappings_getOptions","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"canConfigure":{"type":"boolean"},"connections":{"type":"array","items":{"type":"object","properties":{"calendars":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"id":{"type":"string","x-convex-table":"integrations"},"provider":{"anyOf":[{"const":"google"},{"const":"microsoft"}]}},"required":["calendars","id","provider"],"additionalProperties":false}},"timeZone":{"type":"string"}},"required":["canConfigure","connections","timeZone"],"additionalProperties":false}},{"id":"integrations.supplyMappings.list","group":"integrations","title":"List external supply mappings","summary":"Return a paginated tenant mapping list with resource names, provider calendars, versions, freshness, coverage, and errors.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations supply-mappings list","mcpTool":"integrations_supplyMappings_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"coverageEndMs":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"coverageStartMs":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"enabled":{"type":"boolean"},"externalCalendarId":{"type":"string"},"id":{"type":"string","x-convex-table":"calendarResourceMappings"},"integrationId":{"type":"string","x-convex-table":"integrations"},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastSyncAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"maximumSyncAgeMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"provider":{"anyOf":[{"const":"google"},{"const":"microsoft"}]},"resourceId":{"type":"string","x-convex-table":"resources"},"resourceName":{"type":"string"},"syncStatus":{"anyOf":[{"const":"pending"},{"const":"syncing"},{"const":"current"},{"const":"stale"},{"const":"error"},{"const":"paused"},{"const":"detached"}]},"timeZone":{"type":"string"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["coverageEndMs","coverageStartMs","enabled","externalCalendarId","id","integrationId","lastError","lastSyncAt","maximumSyncAgeMs","provider","resourceId","resourceName","syncStatus","timeZone","version"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"integrations.supplyMappings.pause","group":"integrations","title":"Pause external supply mapping","summary":"Pause a tenant calendar mapping and mark its external resource availability stale. Returns null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations supply-mappings pause","mcpTool":"integrations_supplyMappings_pause","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"mappingId":{"type":"string","x-convex-table":"calendarResourceMappings"}},"required":["expectedVersion","mappingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"integrations.usageMetering.disconnect","group":"integrations","title":"Disconnect usage metering","summary":"Disable the tenant usage-metering connection, clear its signing credential reference, and return an unconfigured summary.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations usage-metering disconnect","mcpTool":"integrations_usageMetering_disconnect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"endpointPath":{"type":"string"},"secretStored":{"type":"boolean"},"status":{"anyOf":[{"const":"not_configured"},{"const":"active"},{"const":"disabled"},{"const":"error"}]},"updatedAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]}},"required":["connectionId","endpointPath","secretStored","status","updatedAt"],"additionalProperties":false}},{"id":"integrations.usageMetering.get","group":"integrations","title":"Get usage metering connection","summary":"Return tenant metering status, inbound endpoint path, connection identifier, and whether a secret is stored.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations usage-metering get","mcpTool":"integrations_usageMetering_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"endpointPath":{"type":"string"},"secretStored":{"type":"boolean"},"status":{"anyOf":[{"const":"not_configured"},{"const":"active"},{"const":"disabled"},{"const":"error"}]},"updatedAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]}},"required":["connectionId","endpointPath","secretStored","status","updatedAt"],"additionalProperties":false}},{"id":"integrations.usageMetering.listEvents","group":"integrations","title":"List metered usage events","summary":"Return the tenant's 25 most recently received usage events with units, quantities, debits, overages, state, and error codes.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations usage-metering list-events","mcpTool":"integrations_usageMetering_listEvents","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"debitedQuantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"errorCode":{"anyOf":[{"anyOf":[{"const":"member_not_found"},{"const":"member_ambiguous"},{"const":"location_not_found"},{"const":"resource_mismatch"},{"const":"benefit_not_found"},{"const":"benefit_unavailable"},{"const":"connection_owner_unavailable"},{"const":"not_permitted"},{"const":"benefit_period_closed"}]},{"type":"null"}]},"externalId":{"type":"string"},"id":{"type":"string","x-convex-table":"usageEvents"},"occurredAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"overageQuantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"provider":{"type":"string"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"receivedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceKind":{"anyOf":[{"const":"wifi"},{"const":"printing"},{"const":"parking"}]},"state":{"anyOf":[{"const":"pending"},{"const":"applied"},{"const":"rejected"},{"const":"unbilled_overage"}]},"unit":{"anyOf":[{"const":"wifi_minute"},{"const":"print_page"},{"const":"parking_minute"}]}},"required":["debitedQuantity","errorCode","externalId","id","occurredAt","overageQuantity","provider","quantity","receivedAt","resourceKind","state","unit"],"additionalProperties":false}}},{"id":"integrations.webhooks.disable","group":"integrations","title":"Disable webhook subscription","summary":"Revoke and soft-delete a tenant webhook subscription, then return its updated summary.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":true,"cli":"keyvra integrations webhooks disable","mcpTool":"integrations_webhooks_disable","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"webhookSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.webhooks.list","group":"integrations","title":"List webhook subscriptions","summary":"List nondeleted tenant webhook subscriptions, newest first, with event types, target URLs, and status.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations webhooks list","mcpTool":"integrations_webhooks_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.webhooks.listDeliveries","group":"integrations","title":"List webhook deliveries","summary":"Return up to 80 recent tenant webhook deliveries with status, attempts, subscription target, errors, and payload previews.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations webhooks list-deliveries","mcpTool":"integrations_webhooks_listDeliveries","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"anyOf":[{"const":"pending"},{"const":"inflight"},{"const":"delivered"},{"const":"dead"}]}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.webhooks.listEventTypes","group":"integrations","title":"List webhook event types","summary":"Return supported outbound webhook event identifiers and labels.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-read"],"requiresApproval":false,"cli":"keyvra integrations webhooks list-event-types","mcpTool":"integrations_webhooks_listEventTypes","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"integrations.webhooks.redeliver","group":"integrations","title":"Redeliver webhook event","summary":"Reset an existing tenant webhook delivery and its associated integration delivery to pending, then return a delivery summary.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["integration-manage"],"requiresApproval":false,"cli":"keyvra integrations webhooks redeliver","mcpTool":"integrations_webhooks_redeliver","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliveryId":{"type":"string","x-convex-table":"webhookDeliveries"}},"required":["deliveryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.addOns.create","group":"inventory","title":"Create add-on service","summary":"Create a priced service for a tenant space and return its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory add-ons create","mcpTool":"inventory_addOns_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"active":{"type":"boolean"},"availableFromMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"availableUntilMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"description":{"type":"string"},"name":{"type":"string"},"priceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"},"taxable":{"type":"boolean"}},"required":["active","name","priceCents","spaceId","taxable"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.addOns.delete","group":"inventory","title":"Delete add-on service","summary":"Disable and soft-delete a tenant add-on service; return its ID.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory add-ons delete","mcpTool":"inventory_addOns_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"addOnServiceId":{"type":"string","x-convex-table":"addOnServices"}},"required":["addOnServiceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.addOns.list","group":"inventory","title":"List add-on services","summary":"Return nondeleted add-on services for a tenant-owned space.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory add-ons list","mcpTool":"inventory_addOns_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["spaceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.addOns.update","group":"inventory","title":"Update add-on service","summary":"Update service details, price, availability, and tax status; return its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory add-ons update","mcpTool":"inventory_addOns_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"active":{"type":"boolean"},"addOnServiceId":{"type":"string","x-convex-table":"addOnServices"},"availableFromMs":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"availableUntilMs":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"priceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxable":{"type":"boolean"}},"required":["addOnServiceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.amenities.create","group":"inventory","title":"Create amenity","summary":"Create a tenant amenity and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra inventory amenities create","mcpTool":"inventory_amenities_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"description":{"type":"string"},"iconName":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["name"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.amenities.delete","group":"inventory","title":"Delete amenity","summary":"Soft-delete a tenant amenity and return its ID.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory amenities delete","mcpTool":"inventory_amenities_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amenityId":{"type":"string","x-convex-table":"amenities"}},"required":["amenityId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.amenities.list","group":"inventory","title":"List amenities","summary":"Return tenant amenities ordered by sort order and name, optionally including deleted rows.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory amenities list","mcpTool":"inventory_amenities_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"includeDeleted":{"type":"boolean"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.amenities.update","group":"inventory","title":"Update amenity","summary":"Update a tenant amenity and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra inventory amenities update","mcpTool":"inventory_amenities_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amenityId":{"type":"string","x-convex-table":"amenities"},"description":{"type":"string"},"iconName":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amenityId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.availability.set","group":"inventory","title":"Set availability schedule","summary":"Replace the weekly schedule for a tenant space and return its normalized windows.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra inventory availability set","mcpTool":"inventory_availability_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"availabilitySchedule":{"type":"array","items":{"type":"object","properties":{"closeMinute":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"isClosed":{"type":"boolean"},"openMinute":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"weekday":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["closeMinute","isClosed","openMinute","weekday"],"additionalProperties":false}},"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["availabilitySchedule","spaceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.blackouts.create","group":"inventory","title":"Create blackout date","summary":"Create a scoped availability blackout and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra inventory blackouts create","mcpTool":"inventory_blackouts_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"floorId":{"type":"string","x-convex-table":"floors"},"propertyId":{"type":"string","x-convex-table":"properties"},"reason":{"type":"string"},"recurrence":{"type":"object","properties":{"frequency":{"anyOf":[{"const":"weekly"},{"const":"monthly"}]},"interval":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"untilAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"weekdays":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}}},"required":["frequency","interval"],"additionalProperties":false},"spaceId":{"type":"string","x-convex-table":"spaces"},"startAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endAt","reason","startAt"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.blackouts.delete","group":"inventory","title":"Delete blackout date","summary":"Soft-delete a tenant blackout and return its ID.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory blackouts delete","mcpTool":"inventory_blackouts_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"blackoutDateId":{"type":"string","x-convex-table":"blackoutDates"}},"required":["blackoutDateId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.blackouts.list","group":"inventory","title":"List blackout dates","summary":"Return tenant blackout definitions ordered by start time, optionally including deleted rows.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory blackouts list","mcpTool":"inventory_blackouts_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"includeDeleted":{"type":"boolean"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.bookingRules.set","group":"inventory","title":"Set booking rules","summary":"Replace a tenant space's booking rules and return the validated rules.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory booking-rules set","mcpTool":"inventory_bookingRules_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingRules":{"type":"object","properties":{"bufferMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"cancellationPolicy":{"anyOf":[{"const":"flexible"},{"const":"moderate"},{"const":"strict"}]},"cancellationWindowHours":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"checkInOpeningMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxDurationMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minDurationMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"noShowGraceMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"}},"required":["bufferMinutes","minDurationMinutes","requiresApproval"],"additionalProperties":false},"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["bookingRules","spaceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.channels.list","group":"inventory","title":"List channels","summary":"Return up to 50 nondeleted tenant distribution channels.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory channels list","mcpTool":"inventory_channels_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"channels"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"deletedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"enabled":{"type":"boolean"},"kind":{"anyOf":[{"const":"internal"},{"const":"members"},{"const":"direct"},{"const":"marketplace"},{"const":"corporate"},{"const":"partner"}]},"name":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","createdAt","enabled","kind","name","tenantId","updatedAt"],"additionalProperties":false}}},{"id":"inventory.commercialRules.get","group":"inventory","title":"Get commercial rules","summary":"Return workspace, region, and property rule policies with versions and management availability.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory commercial-rules get","mcpTool":"inventory_commercialRules_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"canManage":{"type":"boolean"},"policies":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"commercialRulePolicies"},"propertyId":{"anyOf":[{"type":"string","x-convex-table":"properties"},{"type":"null"}]},"regionId":{"anyOf":[{"type":"string","x-convex-table":"regions"},{"type":"null"}]},"rules":{"type":"object","properties":{"bufferMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"cancellationPolicy":{"anyOf":[{"const":"flexible"},{"const":"moderate"},{"const":"strict"}]},"cancellationWindowHours":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"checkInOpeningMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"horizonDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"noShowGraceMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"}},"required":[],"additionalProperties":false},"scope":{"anyOf":[{"const":"tenant"},{"const":"region"},{"const":"property"}]},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_id","propertyId","regionId","rules","scope","updatedAt","version"],"additionalProperties":false}},"properties":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"properties"},"name":{"type":"string"},"regionId":{"anyOf":[{"type":"string","x-convex-table":"regions"},{"type":"null"}]}},"required":["_id","name","regionId"],"additionalProperties":false}},"regions":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"regions"},"name":{"type":"string"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_id","name","updatedAt"],"additionalProperties":false}}},"required":["canManage","policies","properties","regions"],"additionalProperties":false}},{"id":"inventory.commercialRules.set","group":"inventory","title":"Save commercial rule policy","summary":"Replace rules at a workspace, region, or property level and return policy ID and version.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":true,"cli":"keyvra inventory commercial-rules set","mcpTool":"inventory_commercialRules_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyId":{"type":"string","x-convex-table":"properties"},"regionId":{"type":"string","x-convex-table":"regions"},"rules":{"type":"object","properties":{"bufferMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"cancellationPolicy":{"anyOf":[{"const":"flexible"},{"const":"moderate"},{"const":"strict"}]},"cancellationWindowHours":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"checkInOpeningMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"horizonDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"noShowGraceMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"}},"required":[],"additionalProperties":false},"scope":{"anyOf":[{"const":"tenant"},{"const":"region"},{"const":"property"}]}},"required":["rules","scope"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"policyId":{"type":"string","x-convex-table":"commercialRulePolicies"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["policyId","version"],"additionalProperties":false}},{"id":"inventory.floors.create","group":"inventory","title":"Create floor","summary":"Create a floor under a live tenant property and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-create"],"requiresApproval":false,"cli":"keyvra inventory floors create","mcpTool":"inventory_floors_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"level":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"slug":{"type":"string"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["level","name","propertyId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.floors.delete","group":"inventory","title":"Delete floor","summary":"Soft-delete a tenant floor and return its ID.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-delete"],"requiresApproval":true,"cli":"keyvra inventory floors delete","mcpTool":"inventory_floors_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"floorId":{"type":"string","x-convex-table":"floors"}},"required":["floorId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.floors.list","group":"inventory","title":"List floors","summary":"Return tenant floors ordered by level and name, optionally including deleted rows.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory floors list","mcpTool":"inventory_floors_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"includeDeleted":{"type":"boolean"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.floors.restore","group":"inventory","title":"Restore floor","summary":"Clear a tenant floor's deletion marker and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-delete"],"requiresApproval":false,"cli":"keyvra inventory floors restore","mcpTool":"inventory_floors_restore","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"floorId":{"type":"string","x-convex-table":"floors"}},"required":["floorId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.floors.update","group":"inventory","title":"Update floor","summary":"Update tenant-floor name, slug, level, or sort order and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra inventory floors update","mcpTool":"inventory_floors_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"floorId":{"type":"string","x-convex-table":"floors"},"level":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"slug":{"type":"string"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["floorId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.legacyCatalog.import","group":"inventory","title":"Import legacy space offers","summary":"Link a catalog resource and create draft offers from a tenant space's legacy pricing tiers; return resource ID and count.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory legacy-catalog import","mcpTool":"inventory_legacyCatalog_import","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["spaceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"createdOffers":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["createdOffers","resourceId"],"additionalProperties":false}},{"id":"inventory.legacyCatalog.preview","group":"inventory","title":"Preview legacy catalog","summary":"Return a paginated migration preview with space names, tier counts, and migrated flags.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra inventory legacy-catalog preview","mcpTool":"inventory_legacyCatalog_preview","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"migrated":{"type":"boolean"},"name":{"type":"string"},"offers":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["migrated","name","offers","spaceId"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"inventory.offerLegal.acceptTerms","group":"inventory","title":"Accept publication terms","summary":"Record the tenant's acceptance of the current host-publication terms and return the acceptance ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["tenant-update"],"requiresApproval":false,"cli":"keyvra inventory offer-legal accept-terms","mcpTool":"inventory_offerLegal_acceptTerms","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"offerId":{"type":"string","x-convex-table":"offers"},"presented":{"type":"object","properties":{"documents":{"type":"array","items":{"type":"object","properties":{"revisionId":{"type":"string","x-convex-table":"legalDocumentRevisions"},"sha256":{"type":"string"}},"required":["revisionId","sha256"],"additionalProperties":false}},"locale":{"anyOf":[{"const":"en"},{"const":"fr"}]},"requirementSetId":{"type":"string","x-convex-table":"legalRequirementSets"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["documents","locale","requirementSetId","version"],"additionalProperties":false}},"required":["offerId","presented"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"legalAcceptances"}},{"id":"inventory.offerLegal.attestAuthority","group":"inventory","title":"Attest resource authority","summary":"Record the caller's authority statement for the offer's resource and return the attestation ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["tenant-update"],"requiresApproval":false,"cli":"keyvra inventory offer-legal attest-authority","mcpTool":"inventory_offerLegal_attestAuthority","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"offerId":{"type":"string","x-convex-table":"offers"},"statement":{"type":"object","properties":{"locale":{"anyOf":[{"const":"en"},{"const":"fr"}]},"revisionId":{"type":"string","x-convex-table":"legalDocumentRevisions"},"sha256":{"type":"string"}},"required":["locale","revisionId","sha256"],"additionalProperties":false}},"required":["offerId","statement"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"hostAuthorityAttestations"}},{"id":"inventory.offerLegal.get","group":"inventory","title":"Get publication legal status","summary":"Return whether marketplace publication requires terms or attestation and their current acceptance status.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory offer-legal get","mcpTool":"inventory_offerLegal_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"anyOf":[{"const":"en"},{"const":"fr"}]},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["locale","offerId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.offers.bulkSetStatus","group":"inventory","title":"Set offer statuses in bulk (published)","summary":"Publish or pause selected tenant offers and return per-item outcomes and totals.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-publish","space-update"],"requiresApproval":true,"cli":"keyvra inventory offers bulk-set-status","mcpTool":"inventory_offers_bulkSetStatus","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"offers":{"type":"array","items":{"type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["expectedVersion","offerId"],"additionalProperties":false}}},"required":["offers"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"failed":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"results":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"const":"CONNECT_ONBOARDING_INCOMPLETE"},{"const":"SPACE_BLOCKED_FOR_MAINTENANCE"},{"const":"SUBSCRIPTION_LIMIT_REACHED"},{"const":"TASK_ALREADY_CLAIMED"},{"const":"TENANT_MISMATCH"},{"const":"UNAUTHORIZED"},{"const":"FORBIDDEN"},{"const":"MFA_REQUIRED"},{"const":"LEGAL_ACCEPTANCE_REQUIRED"},{"const":"NOT_FOUND"},{"const":"VALIDATION_FAILED"},{"const":"SLUG_TAKEN"},{"const":"PROMOTION_INVALID"},{"const":"REVIEW_NOT_VERIFIED"},{"const":"BOOKING_SLOT_CONFLICT"},{"const":"BOOKING_BLACKOUT"},{"const":"BOOKING_ILLEGAL_TRANSITION"},{"const":"IDEMPOTENCY_CONFLICT"},{"const":"APPROVAL_MISMATCH"},{"const":"APPROVAL_EXPIRED"},{"const":"WAITLIST_FULL"},{"const":"AI_PROVIDER_DISABLED"},{"const":"AI_QUOTA_EXCEEDED"},{"const":"RATE_LIMITED"},{"const":"INTERNAL"}]},"detail":{"anyOf":[{"const":"refund_manual"},{"const":"assignee_unavailable"},{"const":"checkin_not_open"},{"const":"offer_not_published"},{"const":"ticket_not_in_progress"}]},"id":{"type":"string"},"ok":{"type":"boolean"},"unchanged":{"type":"boolean"}},"required":["id","ok"],"additionalProperties":false}},"succeeded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unchanged":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["failed","results","succeeded","unchanged"],"additionalProperties":false}},{"id":"inventory.offers.bulkSetStatus.archived","group":"inventory","title":"Set offer statuses in bulk (archived)","summary":"Publish or pause selected tenant offers and return per-item outcomes and totals.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":["destructive"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-publish","space-update"],"requiresApproval":true,"cli":"keyvra inventory offers bulk-set-status archived","mcpTool":"inventory_offers_bulkSetStatus_archived","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"offers":{"type":"array","items":{"type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["expectedVersion","offerId"],"additionalProperties":false}}},"required":["offers"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"failed":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"results":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"const":"CONNECT_ONBOARDING_INCOMPLETE"},{"const":"SPACE_BLOCKED_FOR_MAINTENANCE"},{"const":"SUBSCRIPTION_LIMIT_REACHED"},{"const":"TASK_ALREADY_CLAIMED"},{"const":"TENANT_MISMATCH"},{"const":"UNAUTHORIZED"},{"const":"FORBIDDEN"},{"const":"MFA_REQUIRED"},{"const":"LEGAL_ACCEPTANCE_REQUIRED"},{"const":"NOT_FOUND"},{"const":"VALIDATION_FAILED"},{"const":"SLUG_TAKEN"},{"const":"PROMOTION_INVALID"},{"const":"REVIEW_NOT_VERIFIED"},{"const":"BOOKING_SLOT_CONFLICT"},{"const":"BOOKING_BLACKOUT"},{"const":"BOOKING_ILLEGAL_TRANSITION"},{"const":"IDEMPOTENCY_CONFLICT"},{"const":"APPROVAL_MISMATCH"},{"const":"APPROVAL_EXPIRED"},{"const":"WAITLIST_FULL"},{"const":"AI_PROVIDER_DISABLED"},{"const":"AI_QUOTA_EXCEEDED"},{"const":"RATE_LIMITED"},{"const":"INTERNAL"}]},"detail":{"anyOf":[{"const":"refund_manual"},{"const":"assignee_unavailable"},{"const":"checkin_not_open"},{"const":"offer_not_published"},{"const":"ticket_not_in_progress"}]},"id":{"type":"string"},"ok":{"type":"boolean"},"unchanged":{"type":"boolean"}},"required":["id","ok"],"additionalProperties":false}},"succeeded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unchanged":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["failed","results","succeeded","unchanged"],"additionalProperties":false}},{"id":"inventory.offers.bulkSetStatus.draft","group":"inventory","title":"Set offer statuses in bulk (draft)","summary":"Publish or pause selected tenant offers and return per-item outcomes and totals.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":["destructive"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-publish","space-update"],"requiresApproval":true,"cli":"keyvra inventory offers bulk-set-status draft","mcpTool":"inventory_offers_bulkSetStatus_draft","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"offers":{"type":"array","items":{"type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["expectedVersion","offerId"],"additionalProperties":false}}},"required":["offers"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"failed":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"results":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"const":"CONNECT_ONBOARDING_INCOMPLETE"},{"const":"SPACE_BLOCKED_FOR_MAINTENANCE"},{"const":"SUBSCRIPTION_LIMIT_REACHED"},{"const":"TASK_ALREADY_CLAIMED"},{"const":"TENANT_MISMATCH"},{"const":"UNAUTHORIZED"},{"const":"FORBIDDEN"},{"const":"MFA_REQUIRED"},{"const":"LEGAL_ACCEPTANCE_REQUIRED"},{"const":"NOT_FOUND"},{"const":"VALIDATION_FAILED"},{"const":"SLUG_TAKEN"},{"const":"PROMOTION_INVALID"},{"const":"REVIEW_NOT_VERIFIED"},{"const":"BOOKING_SLOT_CONFLICT"},{"const":"BOOKING_BLACKOUT"},{"const":"BOOKING_ILLEGAL_TRANSITION"},{"const":"IDEMPOTENCY_CONFLICT"},{"const":"APPROVAL_MISMATCH"},{"const":"APPROVAL_EXPIRED"},{"const":"WAITLIST_FULL"},{"const":"AI_PROVIDER_DISABLED"},{"const":"AI_QUOTA_EXCEEDED"},{"const":"RATE_LIMITED"},{"const":"INTERNAL"}]},"detail":{"anyOf":[{"const":"refund_manual"},{"const":"assignee_unavailable"},{"const":"checkin_not_open"},{"const":"offer_not_published"},{"const":"ticket_not_in_progress"}]},"id":{"type":"string"},"ok":{"type":"boolean"},"unchanged":{"type":"boolean"}},"required":["id","ok"],"additionalProperties":false}},"succeeded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unchanged":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["failed","results","succeeded","unchanged"],"additionalProperties":false}},{"id":"inventory.offers.bulkSetStatus.paused","group":"inventory","title":"Set offer statuses in bulk (paused)","summary":"Publish or pause selected tenant offers and return per-item outcomes and totals.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":["destructive"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-publish","space-update"],"requiresApproval":true,"cli":"keyvra inventory offers bulk-set-status paused","mcpTool":"inventory_offers_bulkSetStatus_paused","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"offers":{"type":"array","items":{"type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["expectedVersion","offerId"],"additionalProperties":false}}},"required":["offers"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"failed":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"results":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"const":"CONNECT_ONBOARDING_INCOMPLETE"},{"const":"SPACE_BLOCKED_FOR_MAINTENANCE"},{"const":"SUBSCRIPTION_LIMIT_REACHED"},{"const":"TASK_ALREADY_CLAIMED"},{"const":"TENANT_MISMATCH"},{"const":"UNAUTHORIZED"},{"const":"FORBIDDEN"},{"const":"MFA_REQUIRED"},{"const":"LEGAL_ACCEPTANCE_REQUIRED"},{"const":"NOT_FOUND"},{"const":"VALIDATION_FAILED"},{"const":"SLUG_TAKEN"},{"const":"PROMOTION_INVALID"},{"const":"REVIEW_NOT_VERIFIED"},{"const":"BOOKING_SLOT_CONFLICT"},{"const":"BOOKING_BLACKOUT"},{"const":"BOOKING_ILLEGAL_TRANSITION"},{"const":"IDEMPOTENCY_CONFLICT"},{"const":"APPROVAL_MISMATCH"},{"const":"APPROVAL_EXPIRED"},{"const":"WAITLIST_FULL"},{"const":"AI_PROVIDER_DISABLED"},{"const":"AI_QUOTA_EXCEEDED"},{"const":"RATE_LIMITED"},{"const":"INTERNAL"}]},"detail":{"anyOf":[{"const":"refund_manual"},{"const":"assignee_unavailable"},{"const":"checkin_not_open"},{"const":"offer_not_published"},{"const":"ticket_not_in_progress"}]},"id":{"type":"string"},"ok":{"type":"boolean"},"unchanged":{"type":"boolean"}},"required":["id","ok"],"additionalProperties":false}},"succeeded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unchanged":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["failed","results","succeeded","unchanged"],"additionalProperties":false}},{"id":"inventory.offers.list","group":"inventory","title":"List offers","summary":"Return a page of nondeleted tenant offers with publication versions.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory offers list","mcpTool":"inventory_offers_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"offers"},"channelIds":{"type":"array","items":{"type":"string","x-convex-table":"channels"}},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"deletedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"description":{"type":"string"},"endsAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"anyOf":[{"const":"reservation"},{"const":"pass"},{"const":"event"},{"const":"membership"},{"const":"package"},{"const":"service"}]},"legacyTierId":{"type":"string"},"name":{"type":"string"},"publishedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"remoteFulfillmentPolicy":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"rules":{"type":"object","properties":{"bufferMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"horizonDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberOnly":{"type":"boolean"},"minimumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"passValidityMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"}},"required":["bufferMinutes","horizonDays","leadMinutes","memberOnly","minimumMinutes","requiresApproval"],"additionalProperties":false},"startsAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"draft"},{"const":"published"},{"const":"paused"},{"const":"archived"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"terms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","channelIds","components","createdAt","description","kind","name","resourceId","rules","status","tenantId","terms","updatedAt","version"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"inventory.offers.set","group":"inventory","title":"Save offer","summary":"Create a draft offer or replace an existing offer's commercial terms and increment its version; return its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory offers set","mcpTool":"inventory_offers_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channelIds":{"type":"array","items":{"type":"string","x-convex-table":"channels"}},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"description":{"type":"string"},"endsAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"anyOf":[{"const":"reservation"},{"const":"pass"},{"const":"event"},{"const":"membership"},{"const":"package"},{"const":"service"}]},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"remoteFulfillmentPolicy":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"rules":{"type":"object","properties":{"bufferMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"horizonDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberOnly":{"type":"boolean"},"minimumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"passValidityMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"}},"required":["bufferMinutes","horizonDays","leadMinutes","memberOnly","minimumMinutes","requiresApproval"],"additionalProperties":false},"startsAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"terms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false}},"required":["channelIds","components","description","kind","name","resourceId","rules","terms"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"offers"}},{"id":"inventory.offers.setStatus","group":"inventory","title":"Set offer status (published)","summary":"Change an offer's publication status, increment its version, and reconcile its public surfaces.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-publish","space-update"],"requiresApproval":false,"cli":"keyvra inventory offers set-status","mcpTool":"inventory_offers_setStatus","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["expectedVersion","offerId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"inventory.offers.setStatus.archived","group":"inventory","title":"Set offer status (archived)","summary":"Change an offer's publication status, increment its version, and reconcile its public surfaces.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-publish","space-update"],"requiresApproval":true,"cli":"keyvra inventory offers set-status archived","mcpTool":"inventory_offers_setStatus_archived","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["expectedVersion","offerId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"inventory.offers.setStatus.draft","group":"inventory","title":"Set offer status (draft)","summary":"Change an offer's publication status, increment its version, and reconcile its public surfaces.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-publish","space-update"],"requiresApproval":true,"cli":"keyvra inventory offers set-status draft","mcpTool":"inventory_offers_setStatus_draft","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["expectedVersion","offerId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"inventory.offers.setStatus.paused","group":"inventory","title":"Set offer status (paused)","summary":"Change an offer's publication status, increment its version, and reconcile its public surfaces.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-publish","space-update"],"requiresApproval":true,"cli":"keyvra inventory offers set-status paused","mcpTool":"inventory_offers_setStatus_paused","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["expectedVersion","offerId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"inventory.pricing.set","group":"inventory","title":"Set pricing tiers","summary":"Replace a tenant space's pricing tiers and return the normalized tiers.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory pricing set","mcpTool":"inventory_pricing_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pricingTiers":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"billingUnit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"}]},"currency":{"type":"string"},"id":{"type":"string"},"isDefault":{"type":"boolean"},"label":{"type":"string"},"memberDiscount":{"type":"object","properties":{"type":{"anyOf":[{"const":"percent"},{"const":"fixed"}]},"value":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["type","value"],"additionalProperties":false}},"required":["amountCents","billingUnit","currency","id","isDefault","label"],"additionalProperties":false}},"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["pricingTiers","spaceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.properties.create","group":"inventory","title":"Create property","summary":"Create a tenant location with address, timezone, currency, and media references; return its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-create"],"requiresApproval":true,"cli":"keyvra inventory properties create","mcpTool":"inventory_properties_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"address":{"type":"object","properties":{"city":{"type":"string"},"country":{"type":"string"},"line1":{"type":"string"},"line2":{"type":"string"},"postalCode":{"type":"string"},"region":{"type":"string"}},"required":["city","country","line1","postalCode","region"],"additionalProperties":false},"contact":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"phone":{"type":"string"}},"required":[],"additionalProperties":false},"coverImageStorageId":{"type":"string","x-convex-table":"_storage"},"currency":{"type":"string"},"description":{"type":"string"},"imageStorageIds":{"type":"array","items":{"type":"string","x-convex-table":"_storage"}},"lat":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lng":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"slug":{"type":"string"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"timezone":{"type":"string"}},"required":["address","currency","name","timezone"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.properties.delete","group":"inventory","title":"Delete property","summary":"Soft-delete a tenant property and return its ID.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-delete"],"requiresApproval":true,"cli":"keyvra inventory properties delete","mcpTool":"inventory_properties_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"}},"required":["propertyId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.properties.list","group":"inventory","title":"List properties","summary":"Return tenant properties ordered by sort order and name, optionally including deleted rows.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory properties list","mcpTool":"inventory_properties_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"includeDeleted":{"type":"boolean"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.properties.restore","group":"inventory","title":"Restore property","summary":"Clear a tenant property's deletion marker and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-delete"],"requiresApproval":false,"cli":"keyvra inventory properties restore","mcpTool":"inventory_properties_restore","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"}},"required":["propertyId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.properties.update","group":"inventory","title":"Update property","summary":"Update location details, currency, or media references and return its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory properties update","mcpTool":"inventory_properties_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"address":{"type":"object","properties":{"city":{"type":"string"},"country":{"type":"string"},"line1":{"type":"string"},"line2":{"type":"string"},"postalCode":{"type":"string"},"region":{"type":"string"}},"required":["city","country","line1","postalCode","region"],"additionalProperties":false},"contact":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"phone":{"type":"string"}},"required":[],"additionalProperties":false},"coverImageStorageId":{"type":"string","x-convex-table":"_storage"},"currency":{"type":"string"},"description":{"type":"string"},"imageStorageIds":{"type":"array","items":{"type":"string","x-convex-table":"_storage"}},"lat":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lng":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"slug":{"type":"string"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"timezone":{"type":"string"}},"required":["propertyId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.regions.archive","group":"inventory","title":"Archive region","summary":"Archive an unused tenant region, remove its rule policies, and clear remaining deleted-property assignments.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":true,"cli":"keyvra inventory regions archive","mcpTool":"inventory_regions_archive","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"regionId":{"type":"string","x-convex-table":"regions"}},"required":["regionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"inventory.regions.assignProperty","group":"inventory","title":"Assign property region","summary":"Assign a live tenant property to a region or remove its region assignment.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":false,"cli":"keyvra inventory regions assign-property","mcpTool":"inventory_regions_assignProperty","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"},"regionId":{"anyOf":[{"type":"string","x-convex-table":"regions"},{"type":"null"}]}},"required":["propertyId","regionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"inventory.regions.list","group":"inventory","title":"List regions","summary":"Return up to 50 live tenant regions ordered by sort order and name.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory regions list","mcpTool":"inventory_regions_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"regions"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"deletedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"slug":{"type":"string"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","createdAt","name","slug","sortOrder","tenantId","updatedAt"],"additionalProperties":false}}},{"id":"inventory.regions.set","group":"inventory","title":"Save region","summary":"Create or rename a tenant region and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":false,"cli":"keyvra inventory regions set","mcpTool":"inventory_regions_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"regionId":{"type":"string","x-convex-table":"regions"}},"required":["name"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"regions"}},{"id":"inventory.resources.create","group":"inventory","title":"Create resource","summary":"Create a tenant resource or reuse the catalog resource linked to a space; return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-create"],"requiresApproval":false,"cli":"keyvra inventory resources create","mcpTool":"inventory_resources_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"description":{"type":"string"},"kind":{"anyOf":[{"const":"space"},{"const":"equipment"},{"const":"parking"},{"const":"locker"},{"const":"storage"},{"const":"service"},{"const":"staff"},{"const":"mailbox"},{"const":"printing"},{"const":"wifi"},{"const":"virtual_office"},{"const":"ev_charger"}]},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["kind","name","quantity"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"resources"}},{"id":"inventory.resources.list","group":"inventory","title":"List resources","summary":"Return a page of nondeleted tenant catalog resources.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory resources list","mcpTool":"inventory_resources_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"resources"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"deletedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"description":{"type":"string"},"externalCoverageEndMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"externalCoverageStartMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"externalId":{"type":"string"},"integrationId":{"type":"string","x-convex-table":"integrations"},"kind":{"anyOf":[{"const":"space"},{"const":"equipment"},{"const":"parking"},{"const":"locker"},{"const":"storage"},{"const":"service"},{"const":"staff"},{"const":"mailbox"},{"const":"printing"},{"const":"wifi"},{"const":"virtual_office"},{"const":"ev_charger"}]},"lastSyncAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumSyncAgeMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"offerChannelKinds":{"type":"array","items":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]}},"propertyId":{"type":"string","x-convex-table":"properties"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"source":{"anyOf":[{"const":"keyvra"},{"const":"external"}]},"spaceId":{"type":"string","x-convex-table":"spaces"},"status":{"anyOf":[{"const":"active"},{"const":"unavailable"},{"const":"maintenance"},{"const":"archived"}]},"syncStatus":{"anyOf":[{"const":"current"},{"const":"stale"},{"const":"error"},{"const":"unknown"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","createdAt","description","kind","name","quantity","source","status","tenantId","updatedAt"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"inventory.resources.update","group":"inventory","title":"Update resource (active)","summary":"Update tenant-resource details, availability status, or location; return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra inventory resources update","mcpTool":"inventory_resources_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"propertyId":{"anyOf":[{"type":"string","x-convex-table":"properties"},{"type":"null"}]},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["description","name","resourceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"inventory.resources.update.archived","group":"inventory","title":"Update resource (archived)","summary":"Update tenant-resource details, availability status, or location; return null.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra inventory resources update archived","mcpTool":"inventory_resources_update_archived","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"propertyId":{"anyOf":[{"type":"string","x-convex-table":"properties"},{"type":"null"}]},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["description","name","resourceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"inventory.resources.update.maintenance","group":"inventory","title":"Update resource (maintenance)","summary":"Update tenant-resource details, availability status, or location; return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra inventory resources update maintenance","mcpTool":"inventory_resources_update_maintenance","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"propertyId":{"anyOf":[{"type":"string","x-convex-table":"properties"},{"type":"null"}]},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["description","name","resourceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"inventory.resources.update.unavailable","group":"inventory","title":"Update resource (unavailable)","summary":"Update tenant-resource details, availability status, or location; return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra inventory resources update unavailable","mcpTool":"inventory_resources_update_unavailable","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"propertyId":{"anyOf":[{"type":"string","x-convex-table":"properties"},{"type":"null"}]},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["description","name","resourceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"inventory.settings.get","group":"inventory","title":"Get inventory settings","summary":"Return the tenant's default currency and timezone.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory settings get","mcpTool":"inventory_settings_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.spaceAmenities.set","group":"inventory","title":"Set space amenities","summary":"Replace a tenant space's amenity IDs and return the space and deduplicated IDs.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra inventory space-amenities set","mcpTool":"inventory_spaceAmenities_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amenityIds":{"type":"array","items":{"type":"string","x-convex-table":"amenities"}},"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["amenityIds","spaceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.spaceBlackouts.list","group":"inventory","title":"List space blackouts","summary":"Return overlapping blackout occurrences for a tenant space and time window.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory space-blackouts list","mcpTool":"inventory_spaceBlackouts_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endAt","spaceId","startAt"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.spaces.delete","group":"inventory","title":"Delete space","summary":"Soft-delete a tenant space and return its ID.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-delete"],"requiresApproval":true,"cli":"keyvra inventory spaces delete","mcpTool":"inventory_spaces_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["spaceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"inventory.spaces.list","group":"inventory","title":"List spaces","summary":"Return tenant spaces filtered by property or floor, optionally including deleted rows.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra inventory spaces list","mcpTool":"inventory_spaces_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"floorId":{"type":"string","x-convex-table":"floors"},"includeDeleted":{"type":"boolean"},"propertyId":{"type":"string","x-convex-table":"properties"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketing.catalog.refresh","group":"marketing","title":"Refresh marketplace catalog","summary":"Schedule a paginated rebuild of commerce catalog entries for the caller's tenant.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-publish"],"requiresApproval":true,"cli":"keyvra marketing catalog refresh","mcpTool":"marketing_catalog_refresh","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"marketing.listingRedirects.set","group":"marketing","title":"Set a listing slug redirect","summary":"Create or update a tenant-scoped redirect from an old listing slug to a new slug.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra marketing listing-redirects set","mcpTool":"marketing_listingRedirects_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"listingId":{"type":"string","x-convex-table":"listings"},"newSlug":{"type":"string"},"oldSlug":{"type":"string"}},"required":["newSlug","oldSlug"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketing.listings.unpublish","group":"marketing","title":"Unpublish a marketplace listing","summary":"Set the tenant space's marketplace listing projection to unpublished.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra marketing listings unpublish","mcpTool":"marketing_listings_unpublish","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["spaceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketing.listings.update","group":"marketing","title":"Update a marketplace listing","summary":"Create or synchronize a listing projection from the tenant space and return its ID and slug.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra marketing listings update","mcpTool":"marketing_listings_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"isPublished":{"type":"boolean"},"lat":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lng":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"},"spaceType":{"type":"string"}},"required":["lat","lng","spaceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketing.marketplace.get","group":"marketing","title":"Get marketplace publishing dashboard","summary":"Return tenant listing readiness, publication and moderation state, featured counts, and commission configuration.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra marketing marketplace get","mcpTool":"marketing_marketplace_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketing.promotions.create","group":"marketing","title":"Create a promotion","summary":"Create a workspace promotion and return its normalized details and usage summary.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra marketing promotions create","mcpTool":"marketing_promotions_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"active":{"type":"boolean"},"amountOffCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"amountOffCurrency":{"type":"string"},"code":{"type":"string"},"discountType":{"anyOf":[{"const":"percent"},{"const":"fixed"}]},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxRedemptions":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minimumAmountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minimumAmountCurrency":{"type":"string"},"name":{"type":"string"},"percentOffBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["active","code","discountType","name"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketing.promotions.disable","group":"marketing","title":"Deactivate a promotion","summary":"Disable an owned promotion and return its details and usage summary.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra marketing promotions disable","mcpTool":"marketing_promotions_disable","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"promotionId":{"type":"string","x-convex-table":"promotions"}},"required":["promotionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketing.promotions.list","group":"marketing","title":"List promotions","summary":"Return workspace promotions with redemption counts and matched-invoice discount impact.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-read"],"requiresApproval":false,"cli":"keyvra marketing promotions list","mcpTool":"marketing_promotions_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketing.promotions.update","group":"marketing","title":"Update a promotion","summary":"Replace an owned promotion's editable settings and return its usage summary.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra marketing promotions update","mcpTool":"marketing_promotions_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"active":{"type":"boolean"},"amountOffCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"amountOffCurrency":{"type":"string"},"code":{"type":"string"},"discountType":{"anyOf":[{"const":"percent"},{"const":"fixed"}]},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxRedemptions":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minimumAmountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minimumAmountCurrency":{"type":"string"},"name":{"type":"string"},"percentOffBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"promotionId":{"type":"string","x-convex-table":"promotions"}},"required":["active","code","discountType","name","promotionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.availability.get","group":"marketplace","title":"Get listing availability","summary":"Return open booking slots by local date for a published marketplace listing.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace availability get","mcpTool":"marketplace_availability_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"dayCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"slotMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"slug":{"type":"string"},"startDate":{"type":"string"}},"required":["slug"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.booking.checkout","group":"marketplace","title":"Complete marketplace booking checkout","summary":"Open the browser flow to complete marketplace booking checkout.","tiers":["public"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra marketplace booking checkout","mcpTool":"marketplace_booking_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string"}},"required":["slug"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.booking.checkoutRaw","group":"marketplace","title":"Start marketplace checkout","summary":"Reserve a marketplace booking and create a Stripe PaymentIntent, or settle a fully credit-funded reservation.","tiers":["public"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra marketplace booking checkout-raw","mcpTool":"marketplace_booking_checkoutRaw","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"contactName":{"type":"string"},"email":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"idempotencyKey":{"type":"string"},"notes":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"phone":{"type":"string"},"promotionCode":{"type":"string"},"selectedAddOnIds":{"type":"array","items":{"type":"string","x-convex-table":"addOnServices"}},"slug":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["email","endMs","slug","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.bookingPayments.cancel","group":"marketplace","title":"Cancel a booking payment attempt","summary":"Prove provider cancellation before releasing the reservation and allowing another payment.","tiers":["public"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra marketplace booking-payments cancel","mcpTool":"marketplace_bookingPayments_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"marketplace.bookingPayments.get","group":"marketplace","title":"Read booking payment status","summary":"Read persisted payment and fulfillment status after webhook settlement.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace booking-payments get","mcpTool":"marketplace_bookingPayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"marketplace.bookingPayments.pay","group":"marketplace","title":"Pay a booking","summary":"Confirm a one-time shared payment token against the frozen quote, or return a human handoff.","tiers":["public"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra marketplace booking-payments pay","mcpTool":"marketplace_bookingPayments_pay","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"sharedPaymentToken":{"type":"string"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"marketplace.bookingPayments.quote","group":"marketplace","title":"Preview a booking payment","summary":"Return provisional pricing and available payment modes without reserving or charging.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace booking-payments quote","mcpTool":"marketplace_bookingPayments_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"promotionCode":{"type":"string"},"selectedAddOnIds":{"type":"array","items":{"type":"string","x-convex-table":"addOnServices"}},"slug":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","slug","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"handoffUrl":{"type":"string"},"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricingHash":{"type":"string"},"provisional":{"type":"boolean"}},"required":["amountCents","currency","handoffUrl","modes","networkId","pricingHash","provisional"],"additionalProperties":false}},{"id":"marketplace.bookingPayments.recover","group":"marketplace","title":"Reconcile a booking payment attempt","summary":"Find the original account-bound intent without creating a replacement charge.","tiers":["public"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra marketplace booking-payments recover","mcpTool":"marketplace_bookingPayments_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"marketplace.bookingPayments.requestContactVerification","group":"marketplace","title":"Send purchase contact verification","summary":"Send an email challenge bound to the public selection, pricing and explicit purchase consent.","tiers":["public"],"kind":"action","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace booking-payments request-contact-verification","mcpTool":"marketplace_bookingPayments_requestContactVerification","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"email":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expectedPricingHash":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"promotionCode":{"type":"string"},"purchaseConsent":{"type":"boolean"},"selectedAddOnIds":{"type":"array","items":{"type":"string","x-convex-table":"addOnServices"}},"slug":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["email","endMs","expectedPricingHash","purchaseConsent","slug","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"challengeId":{"type":"string","x-convex-table":"guestPaymentConsents"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"sent":{"type":"boolean"}},"required":["challengeId","expiresAt","sent"],"additionalProperties":false}},{"id":"marketplace.bookingPayments.reserve","group":"marketplace","title":"Reserve a booking payment","summary":"Freeze the authoritative amount, reservation, buyer and seller account before delegating payment.","tiers":["public"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra marketplace booking-payments reserve","mcpTool":"marketplace_bookingPayments_reserve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expectedPricingHash":{"type":"string"},"guestCapability":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"promotionCode":{"type":"string"},"selectedAddOnIds":{"type":"array","items":{"type":"string","x-convex-table":"addOnServices"}},"slug":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","expectedPricingHash","slug","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"breakdown":{"type":"object","properties":{"addOnCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"discountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"type":"string"},"taxRateName":{"type":"string"},"taxableSubtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["addOnCents","benefitCents","creditCents","discountCents","subtotalCents","taxCents","taxInclusive","taxRateBps","taxRateName","taxableSubtotalCents","totalCents"],"additionalProperties":false},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"handoffUrl":{"type":"string"},"payment":{"type":"object","properties":{"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sptRequirements":{"anyOf":[{"type":"null"},{"type":"object","properties":{"currency":{"type":"string"},"expiresAtMinimum":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAtRecommended":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxAmount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["currency","expiresAtMinimum","expiresAtRecommended","maxAmount"],"additionalProperties":false}]}},"required":["modes","networkId","sptRequirements"],"additionalProperties":false},"pricingHash":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"quoteVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"required":["id","kind"],"additionalProperties":false}},"required":["amountCents","applicationFeeCents","breakdown","currency","expiresAt","handoffUrl","payment","pricingHash","quoteId","quoteVersion","target"],"additionalProperties":false},{"type":"object","properties":{"handoffUrl":{"type":"string"},"quoteId":{"type":"null"},"reason":{"type":"string"},"status":{"const":"handoff_required"}},"required":["handoffUrl","quoteId","reason","status"],"additionalProperties":false}]}},{"id":"marketplace.bookingPayments.verifyContact","group":"marketplace","title":"Verify purchase contact","summary":"Consume the challenge once and issue a short-lived purchase capability.","tiers":["public"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace booking-payments verify-contact","mcpTool":"marketplace_bookingPayments_verifyContact","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"challengeId":{"type":"string","x-convex-table":"guestPaymentConsents"},"verificationCode":{"type":"string"}},"required":["challengeId","verificationCode"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expiresAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"guestCapability":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"type":"boolean"}},"required":["expiresAt","guestCapability","verified"],"additionalProperties":false}},{"id":"marketplace.checkoutConfirmations.get","group":"marketplace","title":"Get checkout confirmation","summary":"Return marketplace booking details, guest email, address, payment breakdown, review state, and calendar content.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace checkout-confirmations get","mcpTool":"marketplace_checkoutConfirmations_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmationId":{"type":"string"}},"required":["confirmationId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.commerce.get","group":"marketplace","title":"Get commerce offer","summary":"Return public offer details, pricing, tax, fulfillment location, and approval requirements, or null.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace commerce get","mcpTool":"marketplace_commerce_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"offerId":{"type":"string","x-convex-table":"offers"}},"required":["offerId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"locationName":{"anyOf":[{"type":"string"},{"type":"null"}]},"maximumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minimumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"nextSessionStart":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"offerId":{"type":"string","x-convex-table":"offers"},"passValidityMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"previewAmountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyId":{"type":"string","x-convex-table":"properties"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"remotePolicy":{"anyOf":[{"type":"string"},{"type":"null"}]},"requiresApproval":{"type":"boolean"},"resourceName":{"type":"string"},"saleKind":{"anyOf":[{"const":"rental"},{"const":"service"},{"const":"pass"},{"const":"event"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantName":{"type":"string"},"terms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false},"timezone":{"type":"string"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["city","country","description","locationName","minimumMinutes","name","nextSessionStart","offerId","previewAmountCents","quantity","remotePolicy","requiresApproval","resourceName","saleKind","tax","tenantName","terms","timezone","version"],"additionalProperties":false},{"type":"null"}]}},{"id":"marketplace.commerce.quote","group":"marketplace","title":"Quote a commerce purchase","summary":"Return current price, tax, fulfillment terms, and a reviewedTerms digest for a purchase selection.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace commerce quote","mcpTool":"marketplace_commerce_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"selection":{"anyOf":[{"type":"object","properties":{"eventId":{"type":"string","x-convex-table":"eventSessions"},"kind":{"const":"event"}},"required":["eventId","kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"pass"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["kind","validFrom"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"resource"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["kind","quantity","validFrom","validUntil"],"additionalProperties":false}]}},"required":["expectedVersion","offerId","selection"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"name":{"type":"string"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"},"reviewedTerms":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"timeZone":{"type":"string"}},"required":["amountCents","currency","endMs","name","quantity","requiresApproval","reviewedTerms","startMs","tax","timeZone"],"additionalProperties":false}},{"id":"marketplace.commerce.search","group":"marketplace","title":"Browse commerce offers","summary":"Return a page of publicly available rentals, services, passes, or events.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace commerce search","mcpTool":"marketplace_commerce_search","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"anyOf":[{"const":"rental"},{"const":"service"},{"const":"pass"},{"const":"event"}]},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false},"search":{"type":"string"}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"type":"string"},"locationName":{"anyOf":[{"type":"string"},{"type":"null"}]},"maximumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minimumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"nextSessionStart":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"offerId":{"type":"string","x-convex-table":"offers"},"passValidityMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"previewAmountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyId":{"type":"string","x-convex-table":"properties"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"remotePolicy":{"anyOf":[{"type":"string"},{"type":"null"}]},"requiresApproval":{"type":"boolean"},"resourceName":{"type":"string"},"saleKind":{"anyOf":[{"const":"rental"},{"const":"service"},{"const":"pass"},{"const":"event"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantName":{"type":"string"},"terms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false},"timezone":{"type":"string"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["city","country","description","locationName","minimumMinutes","name","nextSessionStart","offerId","previewAmountCents","quantity","remotePolicy","requiresApproval","resourceName","saleKind","tax","tenantName","terms","timezone","version"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"marketplace.confirmations.get","group":"marketplace","title":"Get guest confirmation","summary":"Return marketplace booking confirmation details, guest email, payment state, and calendar content.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace confirmations get","mcpTool":"marketplace_confirmations_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmationId":{"type":"string"}},"required":["confirmationId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.discovery.search","group":"marketplace","title":"Search marketplace by need","summary":"Parse a natural-language need and return verified listing fits, near misses, or clarification prompts.","tiers":["public"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace discovery search","mcpTool":"marketplace_discovery_search","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"anyOf":[{"const":"en"},{"const":"fr"}]},"need":{"type":"string"}},"required":["need"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.eventSessions.list","group":"marketplace","title":"List offer event sessions","summary":"Return a page of future open sessions for a public event offer.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace event-sessions list","mcpTool":"marketplace_eventSessions_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["expectedVersion","offerId","paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"eventSessions"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"capacity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"description":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"open"},{"const":"cancelled"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"title":{"type":"string"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","capacity","createdAt","currency","description","endMs","offerId","offerVersion","startMs","status","tenantId","title","updatedAt"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"marketplace.guestCheckout.quote","group":"marketplace","title":"Quote a space booking","summary":"Return a booking price breakdown, available add-ons, and payment or manual-confirmation availability.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace guest-checkout quote","mcpTool":"marketplace_guestCheckout_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"promotionCode":{"type":"string"},"selectedAddOnIds":{"type":"array","items":{"type":"string","x-convex-table":"addOnServices"}},"slug":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","slug","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.guestReviews.create","group":"marketplace","title":"Review a guest booking","summary":"Publish a review for a completed and paid marketplace booking identified by its confirmation capability.","tiers":["public"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace guest-reviews create","mcpTool":"marketplace_guestReviews_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"confirmationId":{"type":"string"},"rating":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["body","confirmationId","rating"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.hosts.getAvailability","group":"marketplace","title":"Get host signup availability","summary":"Return whether independent-host signup is configured, with commission, currency, and space limit.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace hosts get-availability","mcpTool":"marketplace_hosts_getAvailability","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"commissionBps":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}]},"enabled":{"type":"boolean"},"maxSpaces":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]}},"required":["commissionBps","currency","enabled","maxSpaces"],"additionalProperties":false}},{"id":"marketplace.legalDocuments.get","group":"marketplace","title":"Get a legal document","summary":"Return a published or retired legal revision's localized title, body, hash, and revision metadata.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace legal-documents get","mcpTool":"marketplace_legalDocuments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"anyOf":[{"const":"en"},{"const":"fr"}]},"revisionId":{"type":"string","x-convex-table":"legalDocumentRevisions"}},"required":["locale","revisionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.legalRequirements.get","group":"marketplace","title":"Get purchase legal requirements","summary":"Return the legal documents and acceptance requirements applicable to a public commerce offer.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace legal-requirements get","mcpTool":"marketplace_legalRequirements_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"anyOf":[{"const":"en"},{"const":"fr"}]},"offerId":{"type":"string","x-convex-table":"offers"}},"required":["locale","offerId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.listingCards.get","group":"marketplace","title":"Get listing cards with media","summary":"Enrich up to six listing slugs with current detail photos and instant-book eligibility.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace listing-cards get","mcpTool":"marketplace_listingCards_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slugs":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":6}},"required":["slugs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cards":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"found":{"type":"boolean"},"photos":{"type":"array","items":{"type":"object","properties":{"alt":{"type":"string"},"url":{"type":"string"},"storageId":{"type":"string","x-convex-table":"_storage"},"width":{"type":"number"},"height":{"type":"number"},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"width":{"type":"number"}},"required":["url","width"],"additionalProperties":false}}},"required":["alt","url"],"additionalProperties":false}},"instantBook":{"type":"boolean"}},"required":["slug","found"],"additionalProperties":false}}},"required":["cards"],"additionalProperties":false}},{"id":"marketplace.listingReviews.list","group":"marketplace","title":"List a page of listing reviews","summary":"Return a cursor page of published reviews for a public listing.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace listing-reviews list","mcpTool":"marketplace_listingReviews_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string"},"listingId":{"type":"string","x-convex-table":"listings"},"pageSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["listingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"authorName":{"type":"string"},"body":{"type":"string"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rating":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reviewId":{"type":"string","x-convex-table":"reviews"}},"required":["authorName","body","createdAt","rating","reviewId"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"marketplace.listings.get","group":"marketplace","title":"Get marketplace listing","summary":"Return a published listing with photos, amenities, pricing, location, related listings, and canonical redirect information.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace listings get","mcpTool":"marketplace_listings_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string"}},"required":["slug"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.listings.list","group":"marketplace","title":"List matching marketplace listings","summary":"Return a bounded set of published listings matching search filters.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace listings list","mcpTool":"marketplace_listings_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amenityKeys":{"type":"array","items":{"type":"string"}},"city":{"type":"string"},"date":{"type":"string"},"endMinute":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxLat":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxLng":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minCapacity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minLat":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minLng":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"sortBy":{"anyOf":[{"const":"capacity"},{"const":"price"},{"const":"rating"}]},"spaceType":{"type":"string"},"startMinute":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.listings.search","group":"marketplace","title":"Search marketplace listings","summary":"Return a cursor page of published listings matching location, capacity, amenities, price, and availability filters.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace listings search","mcpTool":"marketplace_listings_search","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amenityKeys":{"type":"array","items":{"type":"string"}},"city":{"type":"string"},"cursor":{"type":"string"},"date":{"type":"string"},"endMinute":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxLat":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxLng":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minCapacity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minLat":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minLng":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pageSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"sortBy":{"anyOf":[{"const":"capacity"},{"const":"price"},{"const":"rating"}]},"spaceType":{"type":"string"},"startMinute":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.reviews.list","group":"marketplace","title":"List recent listing reviews","summary":"Return up to 20 published reviews for a public listing.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace reviews list","mcpTool":"marketplace_reviews_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"listingId":{"type":"string","x-convex-table":"listings"}},"required":["listingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.spaceOffers.list","group":"marketplace","title":"List space booking offers","summary":"Return public offer choices, channel IDs, versions, pricing terms, and rules for a marketplace or tenant-site space.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace space-offers list","mcpTool":"marketplace_spaceOffers_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string"},"source":{"anyOf":[{"const":"marketplace"},{"const":"tenant"}]}},"required":["slug","source"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"description":{"type":"string"},"endsAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"rules":{"type":"object","properties":{"bufferMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"horizonDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberOnly":{"type":"boolean"},"minimumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"passValidityMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"}},"required":["bufferMinutes","horizonDays","leadMinutes","memberOnly","minimumMinutes","requiresApproval"],"additionalProperties":false},"startsAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"terms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","description","endsAt","name","offerId","rules","startsAt","terms","version"],"additionalProperties":false}}},{"id":"marketplace.support.send","group":"marketplace","title":"Send a marketplace support request","summary":"Create a guest support ticket and email the fixed support inbox when Resend is configured.","tiers":["public"],"kind":"action","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace support send","mcpTool":"marketplace_support_send","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"subject":{"type":"string"}},"required":["body","email","name","subject"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.workspacePlans.get","group":"marketplace","title":"Get a workspace plan","summary":"Return the active workspace subscription plan summary matching a normalized slug.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace workspace-plans get","mcpTool":"marketplace_workspacePlans_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planSlug":{"type":"string"}},"required":["planSlug"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"marketplace.workspacePlans.list","group":"marketplace","title":"List workspace plans","summary":"Return active, non-deleted workspace subscription plan summaries in catalog order.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra marketplace workspace-plans list","mcpTool":"marketplace_workspacePlans_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"me.password.reset","group":"me","title":"Reset an account password","summary":"Open the browser flow to reset an account password.","tiers":["public"],"kind":"action","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra me password reset","mcpTool":"me_password_reset","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.benefits.listBalances","group":"members","title":"List membership benefit balances","summary":"Return up to 100 benefit grants for a subscription, newest first.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members benefits list-balances","mcpTool":"members_benefits_listBalances","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"memberBenefitGrants"},"benefitKey":{"type":"string"},"companyId":{"type":"string","x-convex-table":"companies"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"issuedQuantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"label":{"type":"string"},"ledgerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"passId":{"anyOf":[{"type":"string","x-convex-table":"dayPasses"},{"type":"null"}]},"periodStart":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"remainingQuantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"sourceKey":{"type":"string"},"subscriptionId":{"anyOf":[{"type":"string","x-convex-table":"memberSubscriptions"},{"type":"null"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["_creationTime","_id","benefitKey","createdAt","currency","expiresAt","issuedQuantity","label","memberId","periodStart","propertyIds","remainingQuantity","resourceIds","sourceKey","tenantId","unit"],"additionalProperties":false}}},{"id":"members.benefits.listLedger","group":"members","title":"List membership benefit ledger","summary":"Return a paginated subscription benefit ledger, newest first.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members benefits list-ledger","mcpTool":"members_benefits_listLedger","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["paginationOpts","subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"memberBenefitLedger"},"actorUserId":{"type":"string","x-convex-table":"users"},"balanceAfter":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bookingId":{"type":"string","x-convex-table":"bookings"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"grantId":{"type":"string","x-convex-table":"memberBenefitGrants"},"keyRef":{"type":"string"},"kind":{"anyOf":[{"const":"issue"},{"const":"spend"},{"const":"restore"},{"const":"expire"},{"const":"revoke"}]},"memberId":{"type":"string","x-convex-table":"members"},"passId":{"anyOf":[{"type":"string","x-convex-table":"dayPasses"},{"type":"null"}]},"passRedemptionId":{"type":"string","x-convex-table":"passRedemptions"},"propertyId":{"type":"string","x-convex-table":"properties"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"sourceKey":{"type":"string"},"subscriptionId":{"anyOf":[{"type":"string","x-convex-table":"memberSubscriptions"},{"type":"null"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["_creationTime","_id","balanceAfter","createdAt","currency","grantId","kind","memberId","quantity","reason","sourceKey","tenantId","unit"],"additionalProperties":false}}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"members.benefits.redeem","group":"members","title":"Redeem membership benefits","summary":"Deduct eligible membership units and return the benefit ledger entry ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-checkin"],"requiresApproval":false,"cli":"keyvra members benefits redeem","mcpTool":"members_benefits_redeem","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"grantId":{"type":"string","x-convex-table":"memberBenefitGrants"},"idempotencyKey":{"type":"string"},"memberId":{"type":"string","x-convex-table":"members"},"propertyId":{"type":"string","x-convex-table":"properties"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["grantId","idempotencyKey","memberId","propertyId","reason"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"memberBenefitLedger"}},{"id":"members.companies.create","group":"members","title":"Create a company","summary":"Create a tenant company with contact and booking policies and return its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members companies create","mcpTool":"members_companies_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"allowEmployeeBookings":{"type":"boolean"},"billingEmail":{"anyOf":[{"type":"string"},{"type":"null"}]},"creditLimitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"paymentTerms":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"requireApproval":{"type":"boolean"}},"required":["allowEmployeeBookings","name","requireApproval"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.companies.delete","group":"members","title":"Delete a company","summary":"Soft-delete a company, detach its active members, and return the company ID.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members companies delete","mcpTool":"members_companies_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"}},"required":["companyId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.companies.list","group":"members","title":"List companies","summary":"Return searchable tenant companies with associated members, booking history, totals, and counts.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members companies list","mcpTool":"members_companies_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"search":{"type":"string"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.companies.update","group":"members","title":"Update a company","summary":"Replace company contact, billing, and booking policy fields and return the company ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members companies update","mcpTool":"members_companies_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"allowEmployeeBookings":{"type":"boolean"},"billingEmail":{"anyOf":[{"type":"string"},{"type":"null"}]},"companyId":{"type":"string","x-convex-table":"companies"},"creditLimitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"paymentTerms":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"requireApproval":{"type":"boolean"}},"required":["allowEmployeeBookings","companyId","name","requireApproval"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.companySeats.assign","group":"members","title":"Assign a company seat","summary":"Assign or reactivate a member's seat on an eligible company subscription and return the seat ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":false,"cli":"keyvra members company-seats assign","mcpTool":"members_companySeats_assign","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memberId":{"type":"string","x-convex-table":"members"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["memberId","subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"companySeats"}},{"id":"members.companySeats.list","group":"members","title":"List company seats","summary":"Return up to 100 company-seat records for a tenant-owned subscription.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members company-seats list","mcpTool":"members_companySeats_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"companySeats"},"active":{"type":"boolean"},"assignedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"assignedByUserId":{"type":"string","x-convex-table":"users"},"companyId":{"type":"string","x-convex-table":"companies"},"memberId":{"type":"string","x-convex-table":"members"},"removedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["_creationTime","_id","active","assignedAt","assignedByUserId","companyId","memberId","subscriptionId","tenantId"],"additionalProperties":false}}},{"id":"members.companySeats.revoke","group":"members","title":"Remove a company seat","summary":"Deactivate a company seat and return null.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members company-seats revoke","mcpTool":"members_companySeats_revoke","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"seatId":{"type":"string","x-convex-table":"companySeats"}},"required":["seatId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"members.credits.adjust","group":"members","title":"Adjust member credits","summary":"Add or deduct stored monetary credits and return the new balance, currency, and member ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members credits adjust","mcpTool":"members_credits_adjust","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"reason":{"type":"string"},"type":{"anyOf":[{"const":"add"},{"const":"deduct"}]}},"required":["amountCents","memberId","reason","type"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.credits.getBalance","group":"members","title":"Get member credit balance","summary":"Return a member's stored credit balance, currency, and ID.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members credits get-balance","mcpTool":"members_credits_getBalance","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memberId":{"type":"string","x-convex-table":"members"}},"required":["memberId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.dashboard.getOverview","group":"members","title":"Get members overview","summary":"Return bounded member, acquisition, activity, subscription, and lead metrics with attention lists.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members dashboard get-overview","mcpTool":"members_dashboard_getOverview","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.dashboard.getSummary","group":"members","title":"Get member summary","summary":"Return a member's acquisition, visits, bookings, membership, and portal-link summary.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members dashboard get-summary","mcpTool":"members_dashboard_getSummary","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memberId":{"type":"string","x-convex-table":"members"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["memberId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.groups.create","group":"members","title":"Create a member group","summary":"Create a tenant member group with optional discount and space-type restrictions and return its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members groups create","mcpTool":"members_groups_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"allowedSpaceTypes":{"type":"array","items":{"type":"string"}},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"discountPercent":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"}},"required":["name"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.groups.delete","group":"members","title":"Delete a member group","summary":"Soft-delete a group, remove it from active member profiles, and return the group ID.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members groups delete","mcpTool":"members_groups_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"groupId":{"type":"string","x-convex-table":"memberGroups"}},"required":["groupId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.groups.list","group":"members","title":"List member groups","summary":"Return active tenant groups with discount rules, allowed space types, and member counts.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members groups list","mcpTool":"members_groups_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.groups.update","group":"members","title":"Update a member group","summary":"Replace group details, discount, and space restrictions and return the group ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members groups update","mcpTool":"members_groups_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"allowedSpaceTypes":{"type":"array","items":{"type":"string"}},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"discountPercent":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"name":{"type":"string"}},"required":["groupId","name"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.membershipPlans.list","group":"members","title":"List membership plans","summary":"Return paginated tenant membership plans, newest first, excluding deleted plans.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members membership-plans list","mcpTool":"members_membershipPlans_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"membershipPlans"},"benefits":{"type":"array","items":{"type":"object","properties":{"expiresAfterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"label":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["key","label","propertyIds","quantity","resourceIds","unit"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"deletedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"description":{"type":"string"},"interval":{"anyOf":[{"const":"month"},{"const":"year"}]},"name":{"type":"string"},"priceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"seatLimit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"draft"},{"const":"published"},{"const":"archived"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","benefits","createdAt","currency","description","interval","name","priceCents","propertyIds","seatLimit","status","tenantId","updatedAt","version"],"additionalProperties":false}}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"members.membershipPlans.save","group":"members","title":"Save a membership plan","summary":"Create or update membership pricing and benefit terms and return the plan ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members membership-plans save","mcpTool":"members_membershipPlans_save","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"benefits":{"type":"array","items":{"type":"object","properties":{"expiresAfterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"label":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["key","label","propertyIds","quantity","resourceIds","unit"],"additionalProperties":false}},"currency":{"type":"string"},"description":{"type":"string"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"interval":{"anyOf":[{"const":"month"},{"const":"year"}]},"name":{"type":"string"},"planId":{"type":"string","x-convex-table":"membershipPlans"},"priceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"seatLimit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["benefits","currency","description","interval","name","priceCents","propertyIds","seatLimit"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"membershipPlans"}},{"id":"members.membershipPlans.setStatus","group":"members","title":"Set membership plan status (published)","summary":"Publish or archive a membership plan, advance its version, and return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":false,"cli":"keyvra members membership-plans set-status","mcpTool":"members_membershipPlans_setStatus","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"planId":{"type":"string","x-convex-table":"membershipPlans"}},"required":["expectedVersion","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"members.membershipPlans.setStatus.archived","group":"members","title":"Set membership plan status (archived)","summary":"Publish or archive a membership plan, advance its version, and return null.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members membership-plans set-status archived","mcpTool":"members_membershipPlans_setStatus_archived","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"planId":{"type":"string","x-convex-table":"membershipPlans"}},"required":["expectedVersion","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"members.profiles.bulkUpdate","group":"members","title":"Update selected members","summary":"Add or remove a tag or group on selected members and return per-member outcomes and counts.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members profiles bulk-update","mcpTool":"members_profiles_bulkUpdate","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"change":{"anyOf":[{"type":"object","properties":{"kind":{"const":"addTag"},"tag":{"type":"string"}},"required":["kind","tag"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"removeTag"},"tag":{"type":"string"}},"required":["kind","tag"],"additionalProperties":false},{"type":"object","properties":{"groupId":{"type":"string","x-convex-table":"memberGroups"},"kind":{"const":"addGroup"}},"required":["groupId","kind"],"additionalProperties":false},{"type":"object","properties":{"groupId":{"type":"string","x-convex-table":"memberGroups"},"kind":{"const":"removeGroup"}},"required":["groupId","kind"],"additionalProperties":false}]},"memberIds":{"type":"array","items":{"type":"string","x-convex-table":"members"}}},"required":["change","memberIds"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"failed":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"results":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"const":"CONNECT_ONBOARDING_INCOMPLETE"},{"const":"SPACE_BLOCKED_FOR_MAINTENANCE"},{"const":"SUBSCRIPTION_LIMIT_REACHED"},{"const":"TASK_ALREADY_CLAIMED"},{"const":"TENANT_MISMATCH"},{"const":"UNAUTHORIZED"},{"const":"FORBIDDEN"},{"const":"MFA_REQUIRED"},{"const":"LEGAL_ACCEPTANCE_REQUIRED"},{"const":"NOT_FOUND"},{"const":"VALIDATION_FAILED"},{"const":"SLUG_TAKEN"},{"const":"PROMOTION_INVALID"},{"const":"REVIEW_NOT_VERIFIED"},{"const":"BOOKING_SLOT_CONFLICT"},{"const":"BOOKING_BLACKOUT"},{"const":"BOOKING_ILLEGAL_TRANSITION"},{"const":"IDEMPOTENCY_CONFLICT"},{"const":"APPROVAL_MISMATCH"},{"const":"APPROVAL_EXPIRED"},{"const":"WAITLIST_FULL"},{"const":"AI_PROVIDER_DISABLED"},{"const":"AI_QUOTA_EXCEEDED"},{"const":"RATE_LIMITED"},{"const":"INTERNAL"}]},"detail":{"anyOf":[{"const":"refund_manual"},{"const":"assignee_unavailable"},{"const":"checkin_not_open"},{"const":"offer_not_published"},{"const":"ticket_not_in_progress"}]},"id":{"type":"string"},"ok":{"type":"boolean"},"unchanged":{"type":"boolean"}},"required":["id","ok"],"additionalProperties":false}},"succeeded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unchanged":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["failed","results","succeeded","unchanged"],"additionalProperties":false}},{"id":"members.profiles.create","group":"members","title":"Create a member","summary":"Create a tenant member profile and return the member document and ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-create"],"requiresApproval":false,"cli":"keyvra members profiles create","mcpTool":"members_profiles_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"companyId":{"anyOf":[{"type":"string","x-convex-table":"companies"},{"type":"null"}]},"customFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false}},"email":{"type":"string"},"groupIds":{"type":"array","items":{"type":"string","x-convex-table":"memberGroups"}},"name":{"type":"string"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}}},"required":["email","name"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.profiles.delete","group":"members","title":"Delete a member","summary":"Soft-delete a tenant member profile and return its ID.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-delete"],"requiresApproval":true,"cli":"keyvra members profiles delete","mcpTool":"members_profiles_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memberId":{"type":"string","x-convex-table":"members"}},"required":["memberId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.profiles.get","group":"members","title":"Get a member","summary":"Return a member profile, company and group context, and sorted booking history.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members profiles get","mcpTool":"members_profiles_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memberId":{"type":"string","x-convex-table":"members"},"sortBy":{"anyOf":[{"const":"startMs"},{"const":"status"},{"const":"priceCents"}]},"sortDirection":{"anyOf":[{"const":"asc"},{"const":"desc"}]}},"required":["memberId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.profiles.getReferenceData","group":"members","title":"Get member reference data","summary":"Return tenant company and group options, existing tags, and space types for member editing.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members profiles get-reference-data","mcpTool":"members_profiles_getReferenceData","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.profiles.import","group":"members","title":"Import members","summary":"Validate or import member rows and return row outcomes, counts, and created company and group counts.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-import"],"requiresApproval":true,"cli":"keyvra members profiles import","mcpTool":"members_profiles_import","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"dryRun":{"type":"boolean"},"rows":{"type":"array","items":{"type":"object","properties":{"companyName":{"type":"string"},"creditBalanceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"customFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false}},"email":{"type":"string"},"groupNames":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"notes":{"type":"string"},"phone":{"type":"string"},"rowNumber":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"tags":{"type":"array","items":{"type":"string"}}},"required":["rowNumber"],"additionalProperties":false}}},"required":["rows"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.profiles.list","group":"members","title":"List members","summary":"Return filtered tenant members with contact details, stored credit, booking counts, and directory reference data.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members profiles list","mcpTool":"members_profiles_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"search":{"type":"string"},"tag":{"type":"string"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.profiles.update","group":"members","title":"Update a member","summary":"Update a tenant member's profile, company, groups, tags, and custom fields and return the updated document and ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":false,"cli":"keyvra members profiles update","mcpTool":"members_profiles_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"companyId":{"anyOf":[{"type":"string","x-convex-table":"companies"},{"type":"null"}]},"customFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false}},"email":{"type":"string"},"groupIds":{"type":"array","items":{"type":"string","x-convex-table":"memberGroups"}},"memberId":{"type":"string","x-convex-table":"members"},"name":{"type":"string"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}}},"required":["customFields","email","groupIds","memberId","name","tags"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"members.quotes.recordAcceptance","group":"members","title":"Accept saved quote terms","summary":"Record version-bound recipient acceptance evidence and convert the quote without charging.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["acceptanceEvidence","sharedPaymentToken","sessionUrl","checkoutUrl"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage","member-update","booking-create"],"requiresApproval":true,"cli":"keyvra members quotes record-acceptance","mcpTool":"members_quotes_recordAcceptance","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"evidence":{"type":"string"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"quoteId":{"type":"string","x-convex-table":"salesQuotes"},"termsAccepted":{"type":"boolean"},"termsVersion":{"type":"string"}},"required":["evidence","expectedVersion","quoteId","termsAccepted","termsVersion"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"anyOf":[{"type":"string","x-convex-table":"bookings"},{"type":"null"}]},"handoffUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"invoiceId":{"anyOf":[{"type":"string","x-convex-table":"invoices"},{"type":"null"}]},"paymentMode":{"type":"string"},"planId":{"anyOf":[{"type":"string","x-convex-table":"invoicePaymentPlans"},{"type":"null"}]},"quoteId":{"type":"string","x-convex-table":"salesQuotes"},"subscriptionId":{"anyOf":[{"type":"string","x-convex-table":"memberSubscriptions"},{"type":"null"}]}},"required":["bookingId","handoffUrl","invoiceId","paymentMode","planId","quoteId","subscriptionId"],"additionalProperties":false}},{"id":"members.quotes.recordAcceptanceInBrowser","group":"members","title":"Record quote acceptance","summary":"Record customer acceptance evidence, convert the quote, and return booking, subscription, and invoice ids.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["member-update","booking-create"],"requiresApproval":true,"cli":"keyvra members quotes record-acceptance-in-browser","mcpTool":"members_quotes_recordAcceptanceInBrowser","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"evidence":{"type":"string"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"quoteId":{"type":"string","x-convex-table":"salesQuotes"}},"required":["evidence","expectedVersion","quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"anyOf":[{"type":"string","x-convex-table":"bookings"},{"type":"null"}]},"invoiceId":{"anyOf":[{"type":"string","x-convex-table":"invoices"},{"type":"null"}]},"quoteId":{"type":"string","x-convex-table":"salesQuotes"},"subscriptionId":{"anyOf":[{"type":"string","x-convex-table":"memberSubscriptions"},{"type":"null"}]}},"required":["bookingId","invoiceId","quoteId","subscriptionId"],"additionalProperties":false}},{"id":"members.quotes.set","group":"members","title":"Save sales quote","summary":"Create or revise a draft booking or membership quote with price, benefits, and tax snapshots, returning its id.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-create","member-update"],"requiresApproval":true,"cli":"keyvra members quotes set","mcpTool":"members_quotes_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"depositCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadId":{"type":"string","x-convex-table":"salesLeads"},"note":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"salesQuotes"},"target":{"anyOf":[{"type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"const":"booking"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","endMs","kind","offerId","offerVersion","spaceId","startMs"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"membership"},"planId":{"type":"string","x-convex-table":"membershipPlans"},"planVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["kind","planId","planVersion"],"additionalProperties":false}]},"title":{"type":"string"}},"required":["depositCents","expiresAt","leadId","note","target","title"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"salesQuotes"}},{"id":"members.sales.getChoices","group":"members","title":"Get sales reference choices","summary":"Return tenant properties, published eligible offers, enabled channels, published membership plans, and truncation status.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members sales get-choices","mcpTool":"members_sales_getChoices","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channels":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","x-convex-table":"channels"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"offers":{"type":"array","items":{"type":"object","properties":{"channelIds":{"type":"array","items":{"type":"string","x-convex-table":"channels"}},"id":{"type":"string","x-convex-table":"offers"},"name":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelIds","id","name","spaceId","version"],"additionalProperties":false}},"plans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","x-convex-table":"membershipPlans"},"name":{"type":"string"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["id","name","version"],"additionalProperties":false}},"properties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","x-convex-table":"properties"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["channels","offers","plans","properties","truncated"],"additionalProperties":false}},{"id":"members.salesActivities.create","group":"members","title":"Add a lead activity","summary":"Record a lead note or schedule a tour or trial appointment and return its activity ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":false,"cli":"keyvra members sales-activities create","mcpTool":"members_salesActivities_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"appointmentKind":{"anyOf":[{"const":"tour"},{"const":"trial"}]},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadId":{"type":"string","x-convex-table":"salesLeads"},"note":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["leadId","note"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"salesActivities"}},{"id":"members.salesActivities.list","group":"members","title":"List lead activities","summary":"Return paginated activity and appointment records for a tenant-owned sales lead.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members sales-activities list","mcpTool":"members_salesActivities_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"leadId":{"type":"string","x-convex-table":"salesLeads"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["leadId","paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"salesActivities"},"actorUserId":{"type":"string","x-convex-table":"users"},"appointmentKind":{"anyOf":[{"const":"tour"},{"const":"trial"}]},"appointmentStatus":{"anyOf":[{"const":"scheduled"},{"const":"completed"},{"const":"canceled"}]},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"anyOf":[{"const":"note"},{"const":"stage"},{"const":"appointment"},{"const":"proposal"},{"const":"conversion"}]},"leadId":{"type":"string","x-convex-table":"salesLeads"},"note":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"quoteId":{"type":"string","x-convex-table":"salesQuotes"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","createdAt","kind","leadId","note","tenantId","updatedAt"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"members.salesAppointments.complete","group":"members","title":"Finish a sales appointment","summary":"Mark a tenant sales appointment completed or canceled and return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":false,"cli":"keyvra members sales-appointments complete","mcpTool":"members_salesAppointments_complete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"activityId":{"type":"string","x-convex-table":"salesActivities"},"status":{"anyOf":[{"const":"completed"},{"const":"canceled"}]}},"required":["activityId","status"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"members.salesLeads.create","group":"members","title":"Create a sales lead","summary":"Create a tenant sales lead with an assigned staff owner and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-create"],"requiresApproval":false,"cli":"keyvra members sales-leads create","mcpTool":"members_salesLeads_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"email":{"type":"string"},"memberId":{"type":"string","x-convex-table":"members"},"name":{"type":"string"},"ownerUserId":{"type":"string","x-convex-table":"users"},"phone":{"type":"string"},"source":{"anyOf":[{"const":"manual"},{"const":"website"},{"const":"marketplace"},{"const":"partner"}]}},"required":["email","name","source"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"salesLeads"}},{"id":"members.salesLeads.list","group":"members","title":"List sales leads","summary":"Return paginated tenant leads, optionally filtered by stage, excluding deleted records.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members sales-leads list","mcpTool":"members_salesLeads_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false},"stage":{"anyOf":[{"const":"lead"},{"const":"tour"},{"const":"trial"},{"const":"proposal"},{"const":"won"},{"const":"lost"}]}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"salesLeads"},"companyId":{"type":"string","x-convex-table":"companies"},"convertedBookingId":{"type":"string","x-convex-table":"bookings"},"convertedSubscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"deletedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"email":{"type":"string"},"lossReason":{"type":"string"},"memberId":{"type":"string","x-convex-table":"members"},"name":{"type":"string"},"ownerUserId":{"type":"string","x-convex-table":"users"},"phone":{"type":"string"},"requestKey":{"type":"string"},"source":{"anyOf":[{"const":"manual"},{"const":"website"},{"const":"marketplace"},{"const":"partner"}]},"stage":{"anyOf":[{"const":"lead"},{"const":"tour"},{"const":"trial"},{"const":"proposal"},{"const":"won"},{"const":"lost"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","createdAt","email","name","ownerUserId","source","stage","tenantId","updatedAt","version"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"members.salesLeads.setStage","group":"members","title":"Change a lead stage","summary":"Change a lead's stage and record a stage activity, then return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":false,"cli":"keyvra members sales-leads set-stage","mcpTool":"members_salesLeads_setStage","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadId":{"type":"string","x-convex-table":"salesLeads"},"note":{"type":"string"},"stage":{"anyOf":[{"const":"lead"},{"const":"tour"},{"const":"trial"},{"const":"proposal"},{"const":"won"},{"const":"lost"}]}},"required":["expectedVersion","leadId","note","stage"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"members.salesQuotes.list","group":"members","title":"List sales quotes","summary":"Return paginated quotes for a workspace sales lead.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members sales-quotes list","mcpTool":"members_salesQuotes_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"leadId":{"type":"string","x-convex-table":"salesLeads"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["leadId","paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"salesQuotes"},"acceptanceEvidence":{"type":"string"},"acceptedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"acceptedByMemberId":{"type":"string","x-convex-table":"members"},"acceptedByUserId":{"type":"string","x-convex-table":"users"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"convertedBookingId":{"type":"string","x-convex-table":"bookings"},"convertedSubscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"depositCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"leadId":{"type":"string","x-convex-table":"salesLeads"},"memberId":{"type":"string","x-convex-table":"members"},"note":{"type":"string"},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"status":{"anyOf":[{"const":"draft"},{"const":"sent"},{"const":"accepted"},{"const":"canceled"}]},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"anyOf":[{"type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"const":"booking"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"snapshot":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"capturedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"currency":{"type":"string"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"remoteFulfillmentPolicy":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"rules":{"type":"object","properties":{"bufferMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"horizonDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberOnly":{"type":"boolean"},"minimumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"passValidityMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"}},"required":["bufferMinutes","horizonDays","leadMinutes","memberOnly","minimumMinutes","requiresApproval"],"additionalProperties":false},"terms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","capturedAt","channelId","currency","name","offerId","quantity","resourceId","rules","terms","version"],"additionalProperties":false},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","endMs","kind","offerId","offerVersion","snapshot","spaceId","startMs"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"membership"},"planId":{"type":"string","x-convex-table":"membershipPlans"},"planVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"snapshot":{"type":"object","properties":{"benefits":{"type":"array","items":{"type":"object","properties":{"expiresAfterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"label":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["key","label","propertyIds","quantity","resourceIds","unit"],"additionalProperties":false}},"currency":{"type":"string"},"description":{"type":"string"},"interval":{"anyOf":[{"const":"month"},{"const":"year"}]},"name":{"type":"string"},"priceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"seatLimit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["benefits","currency","description","interval","name","priceCents","propertyIds","seatLimit"],"additionalProperties":false}},"required":["kind","planId","planVersion","snapshot"],"additionalProperties":false}]},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxRateName":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"title":{"type":"string"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","benefitCents","createdAt","currency","depositCents","expiresAt","leadId","memberId","note","salesChannel","status","subtotalCents","target","taxCents","taxInclusive","taxRateBps","taxRateId","taxRateName","tenantId","title","totalCents","updatedAt","version"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"members.salesQuotes.set","group":"members","title":"Set a sales quote status","summary":"Mark an unaccepted quote sent or canceled and return null.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members sales-quotes set","mcpTool":"members_salesQuotes_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"quoteId":{"type":"string","x-convex-table":"salesQuotes"},"status":{"anyOf":[{"const":"sent"},{"const":"canceled"}]}},"required":["expectedVersion","quoteId","status"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"members.subscriptions.changePlan","group":"members","title":"Change a membership plan","summary":"Replace a pending membership's plan snapshot and tax calculation and return null.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members subscriptions change-plan","mcpTool":"members_subscriptions_changePlan","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"planId":{"type":"string","x-convex-table":"membershipPlans"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["expectedVersion","planId","subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"members.subscriptions.create","group":"members","title":"Create a membership subscription","summary":"Create or reuse a pending manual-invoice membership and return its subscription ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members subscriptions create","mcpTool":"members_subscriptions_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"memberId":{"type":"string","x-convex-table":"members"},"planId":{"type":"string","x-convex-table":"membershipPlans"}},"required":["memberId","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"memberSubscriptions"}},{"id":"members.subscriptions.list","group":"members","title":"List membership subscriptions","summary":"Return paginated tenant subscriptions, optionally restricted to a member, excluding deleted records.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["stripeCheckoutUrl","stripeCheckoutSessionId"],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra members subscriptions list","mcpTool":"members_subscriptions_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memberId":{"type":"string","x-convex-table":"members"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"memberSubscriptions"},"billingMethod":{"anyOf":[{"const":"manual_invoice"},{"const":"stripe"}]},"billingTax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"cancelAtPeriodEnd":{"type":"boolean"},"canceledAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"companyId":{"type":"string","x-convex-table":"companies"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"deletedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lastPaymentFailureAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lastPaymentFailureInvoiceId":{"type":"string"},"memberId":{"type":"string","x-convex-table":"members"},"pausedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pendingPlanEffectiveAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pendingPlanId":{"type":"string","x-convex-table":"membershipPlans"},"pendingPlanSnapshot":{"type":"object","properties":{"benefits":{"type":"array","items":{"type":"object","properties":{"expiresAfterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"label":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["key","label","propertyIds","quantity","resourceIds","unit"],"additionalProperties":false}},"currency":{"type":"string"},"description":{"type":"string"},"interval":{"anyOf":[{"const":"month"},{"const":"year"}]},"name":{"type":"string"},"priceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"seatLimit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["benefits","currency","description","interval","name","priceCents","propertyIds","seatLimit"],"additionalProperties":false},"pendingPlanTax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"pendingPlanVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"periodEnd":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"periodStart":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"planId":{"type":"string","x-convex-table":"membershipPlans"},"planSnapshot":{"type":"object","properties":{"benefits":{"type":"array","items":{"type":"object","properties":{"expiresAfterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"label":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["key","label","propertyIds","quantity","resourceIds","unit"],"additionalProperties":false}},"currency":{"type":"string"},"description":{"type":"string"},"interval":{"anyOf":[{"const":"month"},{"const":"year"}]},"name":{"type":"string"},"priceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"seatLimit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["benefits","currency","description","interval","name","priceCents","propertyIds","seatLimit"],"additionalProperties":false},"planVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerEventCreated":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"sourceQuoteId":{"type":"string","x-convex-table":"salesQuotes"},"status":{"anyOf":[{"const":"pending"},{"const":"trialing"},{"const":"active"},{"const":"past_due"},{"const":"paused"},{"const":"canceled"}]},"stripeAccountId":{"type":"string"},"stripeCheckoutAttempt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"stripeCustomerId":{"type":"string"},"stripeScheduleId":{"type":"string"},"stripeSubscriptionId":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"trialUsed":{"type":"boolean"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","billingMethod","cancelAtPeriodEnd","createdAt","memberId","planId","planSnapshot","planVersion","status","tenantId","updatedAt","version"],"additionalProperties":false}}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"members.subscriptions.transition","group":"members","title":"Change membership status","summary":"Pause, resume, cancel, or undo a scheduled cancellation for a membership and return null.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members subscriptions transition","mcpTool":"members_subscriptions_transition","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"transition":{"anyOf":[{"const":"pause"},{"const":"resume"},{"const":"cancel_now"},{"const":"cancel_at_end"},{"const":"keep_active"}]}},"required":["expectedVersion","subscriptionId","transition"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"members.tags.bulkAdd","group":"members","title":"Add a tag to members","summary":"Add a normalized tag to selected members and return per-member outcomes and aggregate counts.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-update"],"requiresApproval":true,"cli":"keyvra members tags bulk-add","mcpTool":"members_tags_bulkAdd","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"memberIds":{"type":"array","items":{"type":"string","x-convex-table":"members"}},"tag":{"type":"string"}},"required":["memberIds","tag"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.inbox.countUnread","group":"notifications","title":"Count own unread notifications","summary":"Return a bounded count of the caller's nondeleted unread notifications.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra notifications inbox count-unread","mcpTool":"notifications_inbox_countUnread","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.inbox.list","group":"notifications","title":"List own notifications","summary":"Return the caller's recent nondeleted notifications.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra notifications inbox list","mcpTool":"notifications_inbox_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.inbox.listPage","group":"notifications","title":"List own notification page","summary":"Return a numbered page of the caller's notifications with category, unread, and count information.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra notifications inbox list-page","mcpTool":"notifications_inbox_listPage","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"category":{"anyOf":[{"const":"all"},{"const":"booking"},{"const":"operations"},{"const":"billing"},{"const":"system"}]},"page":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pageSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unreadOnly":{"type":"boolean"}},"required":["category","page","pageSize","unreadOnly"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.inbox.markAllRead","group":"notifications","title":"Mark own notifications read","summary":"Mark every unread notification in the selected category as read and return the updated count.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra notifications inbox mark-all-read","mcpTool":"notifications_inbox_markAllRead","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"category":{"anyOf":[{"const":"all"},{"const":"booking"},{"const":"operations"},{"const":"billing"},{"const":"system"}]}},"required":["category"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.inbox.markRead","group":"notifications","title":"Mark own notification read","summary":"Mark a notification as read and return the updated notification record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra notifications inbox mark-read","mcpTool":"notifications_inbox_markRead","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"notificationId":{"type":"string","x-convex-table":"notifications"}},"required":["notificationId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.inbox.setReadState","group":"notifications","title":"Set own notification read state","summary":"Mark a notification read or unread and return a save acknowledgment.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra notifications inbox set-read-state","mcpTool":"notifications_inbox_setReadState","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"notificationId":{"type":"string","x-convex-table":"notifications"},"read":{"type":"boolean"}},"required":["notificationId","read"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.messages.send","group":"notifications","title":"Send staff notification","summary":"Create a notification for an eligible tenant user and optionally schedule email and push delivery.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-create"],"requiresApproval":false,"cli":"keyvra notifications messages send","mcpTool":"notifications_messages_send","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"ctaUrl":{"type":"string"},"data":{},"emailBody":{"type":"string"},"emailSubject":{"type":"string"},"emailTo":{"type":"string"},"eventType":{"type":"string"},"idempotencyKey":{"type":"string"},"recipientUserId":{"type":"string","x-convex-table":"users"},"sendEmail":{"type":"boolean"},"title":{"type":"string"}},"required":["eventType","recipientUserId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.preferences.get","group":"notifications","title":"Get notification preferences","summary":"Return the caller's channel and digest preferences, tenant reminder offsets, and delivery configuration readiness.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra notifications preferences get","mcpTool":"notifications_preferences_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.preferences.set","group":"notifications","title":"Set own notification preferences","summary":"Save channel preferences and optional digest settings for the caller.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra notifications preferences set","mcpTool":"notifications_preferences_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"categories":{"type":"object","properties":{"billing":{"type":"object","properties":{"email":{"type":"boolean"},"inApp":{"type":"boolean"},"push":{"type":"boolean"}},"required":["email","inApp","push"],"additionalProperties":false},"booking":{"type":"object","properties":{"email":{"type":"boolean"},"inApp":{"type":"boolean"},"push":{"type":"boolean"}},"required":["email","inApp","push"],"additionalProperties":false},"operations":{"type":"object","properties":{"email":{"type":"boolean"},"inApp":{"type":"boolean"},"push":{"type":"boolean"}},"required":["email","inApp","push"],"additionalProperties":false},"system":{"type":"object","properties":{"email":{"type":"boolean"},"inApp":{"type":"boolean"},"push":{"type":"boolean"}},"required":["email","inApp","push"],"additionalProperties":false}},"required":["billing","booking","operations","system"],"additionalProperties":false},"dailyDigestEnabled":{"type":"boolean"},"digestCadence":{"anyOf":[{"const":"daily"},{"const":"weekdays"},{"const":"weekly"}]},"digestDeliveryHourLocal":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["categories"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.push.subscribe","group":"notifications","title":"Register browser push subscription","summary":"Store a validated browser Web Push subscription for the caller and return its ID.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra notifications push subscribe","mcpTool":"notifications_push_subscribe","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endpoint":{"type":"string"},"expirationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"keys":{"type":"object","properties":{"auth":{"type":"string"},"p256dh":{"type":"string"}},"required":["auth","p256dh"],"additionalProperties":false},"userAgent":{"type":"string"}},"required":["endpoint","keys"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.reminders.set","group":"notifications","title":"Set booking reminder offsets","summary":"Save the tenant's native booking reminder schedule.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":false,"cli":"keyvra notifications reminders set","mcpTool":"notifications_reminders_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingReminderOffsetsMinutes":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}}},"required":["bookingReminderOffsetsMinutes"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.templates.get","group":"notifications","title":"Get notification template","summary":"Return the effective template, preview, source, and allowed variables for an event and channel.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra notifications templates get","mcpTool":"notifications_templates_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channel":{"anyOf":[{"const":"in_app"},{"const":"email"}]},"eventType":{"type":"string"}},"required":["channel","eventType"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.templates.list","group":"notifications","title":"List notification templates","summary":"Return effective notification templates with previews, sources, and supported variables.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra notifications templates list","mcpTool":"notifications_templates_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.templates.preview","group":"notifications","title":"Preview notification template","summary":"Validate a proposed template and render it with sample event data without saving or sending it.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra notifications templates preview","mcpTool":"notifications_templates_preview","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"channel":{"anyOf":[{"const":"in_app"},{"const":"email"}]},"eventType":{"type":"string"},"subject":{"type":"string"}},"required":["body","channel","eventType","subject"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.templates.reset","group":"notifications","title":"Reset notification template","summary":"Remove an active tenant override so platform or catalog defaults become effective.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":true,"cli":"keyvra notifications templates reset","mcpTool":"notifications_templates_reset","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channel":{"anyOf":[{"const":"in_app"},{"const":"email"}]},"eventType":{"type":"string"}},"required":["channel","eventType"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.templates.save","group":"notifications","title":"Save notification template","summary":"Create or update a validated tenant notification-template override.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":false,"cli":"keyvra notifications templates save","mcpTool":"notifications_templates_save","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"channel":{"anyOf":[{"const":"in_app"},{"const":"email"}]},"eventType":{"type":"string"},"subject":{"type":"string"}},"required":["body","channel","eventType","subject"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"notifications.templates.upsert","group":"notifications","title":"Upsert notification template","summary":"Create or update a validated tenant notification-template override.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":false,"cli":"keyvra notifications templates upsert","mcpTool":"notifications_templates_upsert","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"channel":{"anyOf":[{"const":"in_app"},{"const":"email"}]},"eventType":{"type":"string"},"subject":{"type":"string"}},"required":["body","channel","eventType","subject"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"onboarding.draft.update","group":"onboarding","title":"Save an onboarding step","summary":"Save onboarding form values and optional guided messages and return the updated onboarding state.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":false,"cli":"keyvra onboarding draft update","mcpTool":"onboarding_draft_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currentStep":{"anyOf":[{"const":"welcome"},{"const":"business"},{"const":"property"},{"const":"space"},{"const":"complete"}]},"draft":{"type":"object","properties":{"business":{"type":"object","properties":{"contactEmail":{"type":"string"},"contactName":{"type":"string"},"currency":{"type":"string"},"name":{"type":"string"},"phone":{"type":"string"},"timezone":{"type":"string"}},"required":["contactEmail","contactName","currency","name","phone","timezone"],"additionalProperties":false},"property":{"type":"object","properties":{"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"city":{"type":"string"},"contactEmail":{"type":"string"},"country":{"type":"string"},"name":{"type":"string"},"postalCode":{"type":"string"},"region":{"type":"string"}},"required":["addressLine1","addressLine2","city","contactEmail","country","name","postalCode","region"],"additionalProperties":false},"space":{"type":"object","properties":{"availabilityPreset":{"anyOf":[{"const":"weekdays_9_5"},{"const":"weekdays_8_6"},{"const":"all_week_8_8"}]},"capacity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"hourlyPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"type":{"type":"string"}},"required":["availabilityPreset","capacity","hourlyPriceCents","name","type"],"additionalProperties":false},"workspace":{"type":"object","properties":{"businessType":{"anyOf":[{"const":"coworking"},{"const":"office"},{"const":"studio"},{"const":"venue"},{"const":"community"},{"const":"multi_use"},{"const":"other"}]},"modules":{"type":"array","items":{"anyOf":[{"const":"spaces"},{"const":"bookings"},{"const":"members"},{"const":"memberships"},{"const":"billing"},{"const":"access"},{"const":"events"},{"const":"marketplace"},{"const":"communications"},{"const":"operations"},{"const":"insights"},{"const":"reports"},{"const":"website"}]}},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["businessType","modules","version"],"additionalProperties":false}},"required":["business","property","space"],"additionalProperties":false},"guidedMessage":{"type":"object","properties":{"assistantContent":{"type":"string"},"step":{"anyOf":[{"const":"welcome"},{"const":"business"},{"const":"property"},{"const":"space"},{"const":"complete"}]},"userContent":{"type":"string"}},"required":["assistantContent","step","userContent"],"additionalProperties":false},"mode":{"anyOf":[{"const":"classic"},{"const":"guided"}]},"step":{"anyOf":[{"const":"welcome"},{"const":"business"},{"const":"property"},{"const":"space"},{"const":"complete"}]}},"required":["draft","mode","step"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"onboarding.subscription.checkout","group":"onboarding","title":"Start workspace subscription checkout","summary":"Return a Stripe subscription checkout or managed plan-change URL and session ID.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra onboarding subscription checkout","mcpTool":"onboarding_subscription_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cancelUrl":{"type":"string"},"interval":{"anyOf":[{"const":"monthly"},{"const":"annual"}]},"planSlug":{"type":"string"},"successUrl":{"type":"string"}},"required":["cancelUrl","interval","planSlug","successUrl"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"onboarding.workspace.complete","group":"onboarding","title":"Complete workspace onboarding","summary":"Finalize the saved onboarding draft, create the first property, floor, and space, and return their IDs and completion state.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":["bulk"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-create","tenant-update"],"requiresApproval":true,"cli":"keyvra onboarding workspace complete","mcpTool":"onboarding_workspace_complete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"onboarding.workspace.finalize","group":"onboarding","title":"Finalize workspace onboarding","summary":"Finalize saved or reviewed onboarding values and return completion state and the created property, floor, and space IDs.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":["bulk"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-create","tenant-update"],"requiresApproval":true,"cli":"keyvra onboarding workspace finalize","mcpTool":"onboarding_workspace_finalize","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reviewedDraft":{"type":"object","properties":{"business":{"type":"object","properties":{"contactEmail":{"type":"string"},"contactName":{"type":"string"},"currency":{"type":"string"},"name":{"type":"string"},"phone":{"type":"string"},"timezone":{"type":"string"}},"required":["contactEmail","contactName","currency","name","phone","timezone"],"additionalProperties":false},"property":{"type":"object","properties":{"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"city":{"type":"string"},"contactEmail":{"type":"string"},"country":{"type":"string"},"name":{"type":"string"},"postalCode":{"type":"string"},"region":{"type":"string"}},"required":["addressLine1","addressLine2","city","contactEmail","country","name","postalCode","region"],"additionalProperties":false},"space":{"type":"object","properties":{"availabilityPreset":{"anyOf":[{"const":"weekdays_9_5"},{"const":"weekdays_8_6"},{"const":"all_week_8_8"}]},"capacity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"hourlyPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"type":{"type":"string"}},"required":["availabilityPreset","capacity","hourlyPriceCents","name","type"],"additionalProperties":false},"workspace":{"type":"object","properties":{"businessType":{"anyOf":[{"const":"coworking"},{"const":"office"},{"const":"studio"},{"const":"venue"},{"const":"community"},{"const":"multi_use"},{"const":"other"}]},"modules":{"type":"array","items":{"anyOf":[{"const":"spaces"},{"const":"bookings"},{"const":"members"},{"const":"memberships"},{"const":"billing"},{"const":"access"},{"const":"events"},{"const":"marketplace"},{"const":"communications"},{"const":"operations"},{"const":"insights"},{"const":"reports"},{"const":"website"}]}},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["businessType","modules","version"],"additionalProperties":false}},"required":["business","property","space"],"additionalProperties":false}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"onboarding.workspace.get","group":"onboarding","title":"Get onboarding state","summary":"Return shared onboarding progress, draft values, guided messages, workspace selection, and finalized inventory IDs.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra onboarding workspace get","mcpTool":"onboarding_workspace_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningPolicy.get","group":"operations","title":"Get cleaning policy","summary":"Return task generation settings and the verification-photo requirement.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations cleaning-policy get","mcpTool":"operations_cleaningPolicy_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningPolicy.update","group":"operations","title":"Update cleaning policy","summary":"Save generation settings and the verification-photo requirement; return the policy record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations cleaning-policy update","mcpTool":"operations_cleaningPolicy_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"autoGenerationDelayMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"autoGenerationEnabled":{"type":"boolean"},"verificationPhotoRequired":{"type":"boolean"}},"required":["autoGenerationDelayMinutes","autoGenerationEnabled","verificationPhotoRequired"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningSchedules.archive","group":"operations","title":"Archive a cleaning schedule","summary":"Disable and soft-delete a recurring cleaning schedule; return deleted: true.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":true,"cli":"keyvra operations cleaning-schedules archive","mcpTool":"operations_cleaningSchedules_archive","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"scheduleId":{"type":"string","x-convex-table":"recurringCleaningSchedules"}},"required":["scheduleId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningSchedules.generate","group":"operations","title":"Generate recurring cleaning tasks","summary":"Create the next task for each enabled recurring schedule and return createdCount.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-create"],"requiresApproval":true,"cli":"keyvra operations cleaning-schedules generate","mcpTool":"operations_cleaningSchedules_generate","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningSchedules.list","group":"operations","title":"List recurring cleaning schedules","summary":"Return active recurring schedules with space names and next due times.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations cleaning-schedules list","mcpTool":"operations_cleaningSchedules_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningSchedules.restore","group":"operations","title":"Restore a cleaning schedule","summary":"Clear a schedule's deletion marker, set enabled and return its schedule ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations cleaning-schedules restore","mcpTool":"operations_cleaningSchedules_restore","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"},"scheduleId":{"type":"string","x-convex-table":"recurringCleaningSchedules"}},"required":["enabled","scheduleId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningSchedules.set","group":"operations","title":"Save a recurring cleaning schedule","summary":"Create or update a recurring schedule and return its record; enabled schedules also generate their next task.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-create"],"requiresApproval":false,"cli":"keyvra operations cleaning-schedules set","mcpTool":"operations_cleaningSchedules_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"},"minuteOfDay":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"notes":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"weekday":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["enabled","minuteOfDay","spaceId","weekday"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningSchedules.update","group":"operations","title":"Save a recurring cleaning schedule","summary":"Create or update a recurring schedule and return its record; enabled schedules also generate their next task.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations cleaning-schedules update","mcpTool":"operations_cleaningSchedules_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"},"minuteOfDay":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"notes":{"type":"string"},"scheduleId":{"type":"string","x-convex-table":"recurringCleaningSchedules"},"spaceId":{"type":"string","x-convex-table":"spaces"},"weekday":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["enabled","minuteOfDay","spaceId","weekday","scheduleId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningSpaces.list","group":"operations","title":"List cleaning spaces","summary":"Return active tenant space IDs and names for cleaning schedules.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations cleaning-spaces list","mcpTool":"operations_cleaningSpaces_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningTasks.bulkReassign","group":"operations","title":"Reassign cleaning tasks in bulk","summary":"Reassign cleaning tasks to one staff member and return per-task outcomes and totals.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":true,"cli":"keyvra operations cleaning-tasks bulk-reassign","mcpTool":"operations_cleaningTasks_bulkReassign","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assignedTo":{"type":"string","x-convex-table":"users"},"tasks":{"type":"array","items":{"type":"object","properties":{"expectedUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taskId":{"type":"string","x-convex-table":"cleaningTasks"}},"required":["expectedUpdatedAt","taskId"],"additionalProperties":false}}},"required":["assignedTo","tasks"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"failed":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"results":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"const":"CONNECT_ONBOARDING_INCOMPLETE"},{"const":"SPACE_BLOCKED_FOR_MAINTENANCE"},{"const":"SUBSCRIPTION_LIMIT_REACHED"},{"const":"TASK_ALREADY_CLAIMED"},{"const":"TENANT_MISMATCH"},{"const":"UNAUTHORIZED"},{"const":"FORBIDDEN"},{"const":"MFA_REQUIRED"},{"const":"LEGAL_ACCEPTANCE_REQUIRED"},{"const":"NOT_FOUND"},{"const":"VALIDATION_FAILED"},{"const":"SLUG_TAKEN"},{"const":"PROMOTION_INVALID"},{"const":"REVIEW_NOT_VERIFIED"},{"const":"BOOKING_SLOT_CONFLICT"},{"const":"BOOKING_BLACKOUT"},{"const":"BOOKING_ILLEGAL_TRANSITION"},{"const":"IDEMPOTENCY_CONFLICT"},{"const":"APPROVAL_MISMATCH"},{"const":"APPROVAL_EXPIRED"},{"const":"WAITLIST_FULL"},{"const":"AI_PROVIDER_DISABLED"},{"const":"AI_QUOTA_EXCEEDED"},{"const":"RATE_LIMITED"},{"const":"INTERNAL"}]},"detail":{"anyOf":[{"const":"refund_manual"},{"const":"assignee_unavailable"},{"const":"checkin_not_open"},{"const":"offer_not_published"},{"const":"ticket_not_in_progress"}]},"id":{"type":"string"},"ok":{"type":"boolean"},"unchanged":{"type":"boolean"}},"required":["id","ok"],"additionalProperties":false}},"succeeded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unchanged":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["failed","results","succeeded","unchanged"],"additionalProperties":false}},{"id":"operations.cleaningTasks.claim","group":"operations","title":"Claim a cleaning task","summary":"Assign a pending cleaning task to the caller and return the updated task and history.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":false,"cli":"keyvra operations cleaning-tasks claim","mcpTool":"operations_cleaningTasks_claim","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taskId":{"type":"string","x-convex-table":"cleaningTasks"}},"required":["expectedUpdatedAt","taskId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningTasks.list","group":"operations","title":"List cleaning tasks","summary":"Return active tenant cleaning tasks ordered by due date, including history, file IDs and management eligibility.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations cleaning-tasks list","mcpTool":"operations_cleaningTasks_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningTasks.reassign","group":"operations","title":"Reassign a cleaning task","summary":"Change a nonterminal task's assignee and return the updated task and history.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":false,"cli":"keyvra operations cleaning-tasks reassign","mcpTool":"operations_cleaningTasks_reassign","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assignedTo":{"type":"string","x-convex-table":"users"},"expectedUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taskId":{"type":"string","x-convex-table":"cleaningTasks"}},"required":["assignedTo","expectedUpdatedAt","taskId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningTasks.recall","group":"operations","title":"Recall a cleaning task","summary":"Return a claimed or in-progress task to pending and clear its assignment; return the updated task.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":false,"cli":"keyvra operations cleaning-tasks recall","mcpTool":"operations_cleaningTasks_recall","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taskId":{"type":"string","x-convex-table":"cleaningTasks"}},"required":["expectedUpdatedAt","taskId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningTasks.reopen","group":"operations","title":"Reopen a cleaning task","summary":"Return a verified or skipped task to pending and clear assignment and verification fields.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations cleaning-tasks reopen","mcpTool":"operations_cleaningTasks_reopen","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taskId":{"type":"string","x-convex-table":"cleaningTasks"}},"required":["expectedUpdatedAt","taskId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningTasks.rollback","group":"operations","title":"Roll back a cleaning task","summary":"Move a nonpending task back one workflow state and return the updated task and history.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations cleaning-tasks rollback","mcpTool":"operations_cleaningTasks_rollback","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taskId":{"type":"string","x-convex-table":"cleaningTasks"}},"required":["expectedUpdatedAt","taskId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningTasks.skip","group":"operations","title":"Skip a cleaning task","summary":"Mark a nonterminal cleaning task skipped and return the updated task and history.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-complete"],"requiresApproval":false,"cli":"keyvra operations cleaning-tasks skip","mcpTool":"operations_cleaningTasks_skip","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taskId":{"type":"string","x-convex-table":"cleaningTasks"}},"required":["expectedUpdatedAt","taskId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningTasks.start","group":"operations","title":"Start a cleaning task","summary":"Move a claimed cleaning task into progress and return the updated task and history.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations cleaning-tasks start","mcpTool":"operations_cleaningTasks_start","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taskId":{"type":"string","x-convex-table":"cleaningTasks"}},"required":["expectedUpdatedAt","taskId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.cleaningTasks.verify","group":"operations","title":"Verify a cleaning task","summary":"Mark an in-progress task verified, attach evidence and return its updated record and history.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-complete"],"requiresApproval":false,"cli":"keyvra operations cleaning-tasks verify","mcpTool":"operations_cleaningTasks_verify","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedUpdatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"photoStorageIds":{"type":"array","items":{"type":"string","x-convex-table":"_storage"}},"taskId":{"type":"string","x-convex-table":"cleaningTasks"}},"required":["expectedUpdatedAt","photoStorageIds","taskId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.equipment.archive","group":"operations","title":"Archive equipment","summary":"Soft-delete an equipment record and return deleted: true.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":true,"cli":"keyvra operations equipment archive","mcpTool":"operations_equipment_archive","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"equipmentId":{"type":"string","x-convex-table":"equipment"}},"required":["equipmentId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.equipment.create","group":"operations","title":"Create equipment","summary":"Create a tenant equipment record and return the saved record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-create"],"requiresApproval":false,"cli":"keyvra operations equipment create","mcpTool":"operations_equipment_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"category":{"type":"string"},"name":{"type":"string"},"notes":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"serial":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"status":{"anyOf":[{"const":"ok"},{"const":"needs-service"},{"const":"retired"}]}},"required":["category","name","propertyId","status"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.equipment.list","group":"operations","title":"List equipment","summary":"Return active equipment with property and space names, filtered by property, status or text.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations equipment list","mcpTool":"operations_equipment_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"},"search":{"type":"string"},"status":{"anyOf":[{"const":"ok"},{"const":"needs-service"},{"const":"retired"}]}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.equipment.options","group":"operations","title":"Get equipment options","summary":"Return active tenant properties and spaces, including each space's property ID.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations equipment options","mcpTool":"operations_equipment_options","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.equipment.restore","group":"operations","title":"Restore equipment","summary":"Clear an equipment record's deletion marker and return its equipment ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations equipment restore","mcpTool":"operations_equipment_restore","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"equipmentId":{"type":"string","x-convex-table":"equipment"}},"required":["equipmentId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.equipment.update","group":"operations","title":"Update equipment","summary":"Replace equipment fields and return the saved record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations equipment update","mcpTool":"operations_equipment_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"category":{"type":"string"},"equipmentId":{"type":"string","x-convex-table":"equipment"},"name":{"type":"string"},"notes":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"serial":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"status":{"anyOf":[{"const":"ok"},{"const":"needs-service"},{"const":"retired"}]}},"required":["category","equipmentId","name","propertyId","status"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.incidents.acknowledge","group":"operations","title":"Acknowledge an incident","summary":"Move an open incident report to acknowledged and return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations incidents acknowledge","mcpTool":"operations_incidents_acknowledge","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reportId":{"type":"string","x-convex-table":"incidentReports"}},"required":["reportId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"operations.incidents.create","group":"operations","title":"Report an incident","summary":"Record an incident against a booking and return its report ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-create"],"requiresApproval":false,"cli":"keyvra operations incidents create","mcpTool":"operations_incidents_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"},"category":{"anyOf":[{"const":"damage"},{"const":"safety"},{"const":"access"},{"const":"cleanliness"},{"const":"other"}]},"narrative":{"type":"string"},"requestKey":{"type":"string"}},"required":["bookingId","category","narrative","requestKey"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"incidentReports"}},{"id":"operations.incidents.forBooking","group":"operations","title":"Get booking incidents","summary":"Return up to 50 incident reports for an active tenant booking, newest first.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations incidents for-booking","mcpTool":"operations_incidents_forBooking","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.incidents.list","group":"operations","title":"List incident reports","summary":"Return incident rows in the requested state with pagination metadata.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations incidents list","mcpTool":"operations_incidents_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string"},"limit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"state":{"anyOf":[{"const":"open"},{"const":"acknowledged"},{"const":"resolved"}]}},"required":["state"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.incidents.resolve","group":"operations","title":"Resolve an incident","summary":"Move an open or acknowledged incident to resolved and return null.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-complete"],"requiresApproval":false,"cli":"keyvra operations incidents resolve","mcpTool":"operations_incidents_resolve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reportId":{"type":"string","x-convex-table":"incidentReports"}},"required":["reportId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"operations.maintenanceComments.create","group":"operations","title":"Add a maintenance comment","summary":"Append a ticket comment and update the ticket timestamp; return created: true.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations maintenance-comments create","mcpTool":"operations_maintenanceComments_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"ticketId":{"type":"string","x-convex-table":"maintenanceTickets"}},"required":["body","ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceHistory.list","group":"operations","title":"List maintenance history","summary":"Return tenant maintenance tickets with their latest event times, filtered by space or text.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations maintenance-history list","mcpTool":"operations_maintenanceHistory_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"search":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceSpaces.list","group":"operations","title":"List maintenance spaces","summary":"Return active tenant space IDs and names.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations maintenance-spaces list","mcpTool":"operations_maintenanceSpaces_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceStaff.list","group":"operations","title":"List maintenance staff","summary":"Return eligible maintenance assignees with user IDs, names and roles.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations maintenance-staff list","mcpTool":"operations_maintenanceStaff_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceTickets.assign","group":"operations","title":"Assign a maintenance ticket","summary":"Assign or unassign a ticket and return its updated record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":false,"cli":"keyvra operations maintenance-tickets assign","mcpTool":"operations_maintenanceTickets_assign","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assignedTo":{"type":"string","x-convex-table":"users"},"ticketId":{"type":"string","x-convex-table":"maintenanceTickets"}},"required":["ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceTickets.bulkAssign","group":"operations","title":"Assign maintenance tickets in bulk","summary":"Assign tickets to one staff member and return per-ticket outcomes and totals.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":true,"cli":"keyvra operations maintenance-tickets bulk-assign","mcpTool":"operations_maintenanceTickets_bulkAssign","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assignedTo":{"type":"string","x-convex-table":"users"},"ticketIds":{"type":"array","items":{"type":"string","x-convex-table":"maintenanceTickets"}}},"required":["assignedTo","ticketIds"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"failed":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"results":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"const":"CONNECT_ONBOARDING_INCOMPLETE"},{"const":"SPACE_BLOCKED_FOR_MAINTENANCE"},{"const":"SUBSCRIPTION_LIMIT_REACHED"},{"const":"TASK_ALREADY_CLAIMED"},{"const":"TENANT_MISMATCH"},{"const":"UNAUTHORIZED"},{"const":"FORBIDDEN"},{"const":"MFA_REQUIRED"},{"const":"LEGAL_ACCEPTANCE_REQUIRED"},{"const":"NOT_FOUND"},{"const":"VALIDATION_FAILED"},{"const":"SLUG_TAKEN"},{"const":"PROMOTION_INVALID"},{"const":"REVIEW_NOT_VERIFIED"},{"const":"BOOKING_SLOT_CONFLICT"},{"const":"BOOKING_BLACKOUT"},{"const":"BOOKING_ILLEGAL_TRANSITION"},{"const":"IDEMPOTENCY_CONFLICT"},{"const":"APPROVAL_MISMATCH"},{"const":"APPROVAL_EXPIRED"},{"const":"WAITLIST_FULL"},{"const":"AI_PROVIDER_DISABLED"},{"const":"AI_QUOTA_EXCEEDED"},{"const":"RATE_LIMITED"},{"const":"INTERNAL"}]},"detail":{"anyOf":[{"const":"refund_manual"},{"const":"assignee_unavailable"},{"const":"checkin_not_open"},{"const":"offer_not_published"},{"const":"ticket_not_in_progress"}]},"id":{"type":"string"},"ok":{"type":"boolean"},"unchanged":{"type":"boolean"}},"required":["id","ok"],"additionalProperties":false}},"succeeded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unchanged":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["failed","results","succeeded","unchanged"],"additionalProperties":false}},{"id":"operations.maintenanceTickets.bulkResolve","group":"operations","title":"Resolve maintenance tickets in bulk","summary":"Resolve tickets and remove their maintenance space blocks; return per-ticket outcomes and totals.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-complete"],"requiresApproval":true,"cli":"keyvra operations maintenance-tickets bulk-resolve","mcpTool":"operations_maintenanceTickets_bulkResolve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ticketIds":{"type":"array","items":{"type":"string","x-convex-table":"maintenanceTickets"}}},"required":["ticketIds"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"failed":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"results":{"type":"array","items":{"type":"object","properties":{"code":{"anyOf":[{"const":"CONNECT_ONBOARDING_INCOMPLETE"},{"const":"SPACE_BLOCKED_FOR_MAINTENANCE"},{"const":"SUBSCRIPTION_LIMIT_REACHED"},{"const":"TASK_ALREADY_CLAIMED"},{"const":"TENANT_MISMATCH"},{"const":"UNAUTHORIZED"},{"const":"FORBIDDEN"},{"const":"MFA_REQUIRED"},{"const":"LEGAL_ACCEPTANCE_REQUIRED"},{"const":"NOT_FOUND"},{"const":"VALIDATION_FAILED"},{"const":"SLUG_TAKEN"},{"const":"PROMOTION_INVALID"},{"const":"REVIEW_NOT_VERIFIED"},{"const":"BOOKING_SLOT_CONFLICT"},{"const":"BOOKING_BLACKOUT"},{"const":"BOOKING_ILLEGAL_TRANSITION"},{"const":"IDEMPOTENCY_CONFLICT"},{"const":"APPROVAL_MISMATCH"},{"const":"APPROVAL_EXPIRED"},{"const":"WAITLIST_FULL"},{"const":"AI_PROVIDER_DISABLED"},{"const":"AI_QUOTA_EXCEEDED"},{"const":"RATE_LIMITED"},{"const":"INTERNAL"}]},"detail":{"anyOf":[{"const":"refund_manual"},{"const":"assignee_unavailable"},{"const":"checkin_not_open"},{"const":"offer_not_published"},{"const":"ticket_not_in_progress"}]},"id":{"type":"string"},"ok":{"type":"boolean"},"unchanged":{"type":"boolean"}},"required":["id","ok"],"additionalProperties":false}},"succeeded":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unchanged":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["failed","results","succeeded","unchanged"],"additionalProperties":false}},{"id":"operations.maintenanceTickets.complete","group":"operations","title":"Resolve a maintenance ticket","summary":"Resolve an in-progress ticket, remove its space blocks and return the updated ticket.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-complete"],"requiresApproval":false,"cli":"keyvra operations maintenance-tickets complete","mcpTool":"operations_maintenanceTickets_complete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ticketId":{"type":"string","x-convex-table":"maintenanceTickets"}},"required":["ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceTickets.create","group":"operations","title":"File a maintenance ticket","summary":"Create an open maintenance ticket for a space and return the ticket record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-create"],"requiresApproval":false,"cli":"keyvra operations maintenance-tickets create","mcpTool":"operations_maintenanceTickets_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"description":{"type":"string"},"equipmentId":{"type":"string","x-convex-table":"equipment"},"priority":{"anyOf":[{"const":"low"},{"const":"medium"},{"const":"high"},{"const":"urgent"}]},"spaceId":{"type":"string","x-convex-table":"spaces"},"title":{"type":"string"}},"required":["priority","spaceId","title"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceTickets.get","group":"operations","title":"Get a maintenance ticket","summary":"Return an active ticket with staff, equipment, space and event history.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations maintenance-tickets get","mcpTool":"operations_maintenanceTickets_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ticketId":{"type":"string","x-convex-table":"maintenanceTickets"}},"required":["ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceTickets.list","group":"operations","title":"List maintenance tickets","summary":"Return active tenant tickets with related names, ordered by priority and latest update.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations maintenance-tickets list","mcpTool":"operations_maintenanceTickets_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceTickets.schedule","group":"operations","title":"Schedule a maintenance ticket","summary":"Set a maintenance window and optional space block; return the updated ticket.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations maintenance-tickets schedule","mcpTool":"operations_maintenanceTickets_schedule","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"blocksSpace":{"type":"boolean"},"scheduledEndAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"scheduledStartAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"ticketId":{"type":"string","x-convex-table":"maintenanceTickets"}},"required":["blocksSpace","scheduledEndAt","scheduledStartAt","ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceTickets.start","group":"operations","title":"Start a maintenance ticket","summary":"Move a scheduled ticket into progress and return the updated ticket.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations maintenance-tickets start","mcpTool":"operations_maintenanceTickets_start","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ticketId":{"type":"string","x-convex-table":"maintenanceTickets"}},"required":["ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceTickets.triage","group":"operations","title":"Triage a maintenance ticket","summary":"Set priority, optionally assign staff, and return the updated triaged ticket.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations maintenance-tickets triage","mcpTool":"operations_maintenanceTickets_triage","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"priority":{"anyOf":[{"const":"low"},{"const":"medium"},{"const":"high"},{"const":"urgent"}]},"ticketId":{"type":"string","x-convex-table":"maintenanceTickets"}},"required":["priority","ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceTickets.triageAssign","group":"operations","title":"Triage a maintenance ticket","summary":"Set priority, optionally assign staff, and return the updated triaged ticket.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update","operation-assign"],"requiresApproval":false,"cli":"keyvra operations maintenance-tickets triage-assign","mcpTool":"operations_maintenanceTickets_triageAssign","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"assignedTo":{"type":"string","x-convex-table":"users"},"priority":{"anyOf":[{"const":"low"},{"const":"medium"},{"const":"high"},{"const":"urgent"}]},"ticketId":{"type":"string","x-convex-table":"maintenanceTickets"}},"required":["priority","ticketId","assignedTo"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.maintenanceTickets.unschedule","group":"operations","title":"Unschedule a maintenance ticket","summary":"Remove the maintenance window and space blocks; return the ticket in triaged state.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations maintenance-tickets unschedule","mcpTool":"operations_maintenanceTickets_unschedule","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ticketId":{"type":"string","x-convex-table":"maintenanceTickets"}},"required":["ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.overview.get","group":"operations","title":"Get operations overview","summary":"Return cleaning and maintenance counts, overdue work, weekly completions and current staff shifts.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations overview get","mcpTool":"operations_overview_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.staff.options","group":"operations","title":"List scheduling staff","summary":"Return eligible staff IDs, names and roles for scheduling or cleaning assignments.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations staff options","mcpTool":"operations_staff_options","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.staffShifts.copy","group":"operations","title":"Copy last week's shifts","summary":"Copy previous-week shifts into the requested week and return createdCount.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":true,"cli":"keyvra operations staff-shifts copy","mcpTool":"operations_staffShifts_copy","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"weekStartAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["weekStartAt"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.staffShifts.create","group":"operations","title":"Create a staff shift","summary":"Create a staff shift and return its stored record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":false,"cli":"keyvra operations staff-shifts create","mcpTool":"operations_staffShifts_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"role":{"anyOf":[{"const":"owner"},{"const":"ops_manager"},{"const":"front_desk"},{"const":"cleaning_staff"},{"const":"maintenance_staff"},{"const":"finance"},{"const":"community"},{"const":"events"},{"const":"it"},{"const":"custom"}]},"startAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"userId":{"type":"string","x-convex-table":"users"}},"required":["endAt","role","startAt","userId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.staffShifts.delete","group":"operations","title":"Delete a staff shift","summary":"Soft-delete a tenant staff shift and return deleted: true.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":true,"cli":"keyvra operations staff-shifts delete","mcpTool":"operations_staffShifts_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"shiftId":{"type":"string","x-convex-table":"staffShifts"}},"required":["shiftId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.staffShifts.list","group":"operations","title":"List staff shifts","summary":"Return active shifts overlapping the optional window, with staff names and conflict counts.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations staff-shifts list","mcpTool":"operations_staffShifts_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"startAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.staffShifts.update","group":"operations","title":"Update a staff shift","summary":"Replace staff assignment, role label and shift window; return the updated record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":false,"cli":"keyvra operations staff-shifts update","mcpTool":"operations_staffShifts_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"role":{"anyOf":[{"const":"owner"},{"const":"ops_manager"},{"const":"front_desk"},{"const":"cleaning_staff"},{"const":"maintenance_staff"},{"const":"finance"},{"const":"community"},{"const":"events"},{"const":"it"},{"const":"custom"}]},"shiftId":{"type":"string","x-convex-table":"staffShifts"},"startAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"userId":{"type":"string","x-convex-table":"users"}},"required":["endAt","role","shiftId","startAt","userId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.time.clockIn","group":"operations","title":"Clock in","summary":"Create an active time entry for the caller and return its record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations time clock-in","mcpTool":"operations_time_clockIn","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"notes":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"}},"required":["propertyId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.time.clockOut","group":"operations","title":"Clock out","summary":"Complete the caller's active time entry and return its updated record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-update"],"requiresApproval":false,"cli":"keyvra operations time clock-out","mcpTool":"operations_time_clockOut","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"notes":{"type":"string"},"timeEntryId":{"type":"string","x-convex-table":"timeEntries"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.time.getMine","group":"operations","title":"Get personal time entries","summary":"Return the caller's weekly entries, active entry, property options and management eligibility.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-read"],"requiresApproval":false,"cli":"keyvra operations time get-mine","mcpTool":"operations_time_getMine","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"weekStartAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.time.getTeam","group":"operations","title":"Get team timesheets","summary":"Return filtered weekly time entries, team user options and approved/completed/total hour summaries.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":false,"cli":"keyvra operations time get-team","mcpTool":"operations_time_getTeam","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"},"status":{"anyOf":[{"const":"active"},{"const":"completed"},{"const":"approved"}]},"userId":{"type":"string","x-convex-table":"users"},"weekStartAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.timeEntries.approve","group":"operations","title":"Approve a time entry","summary":"Approve a completed time entry and return its updated record.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":false,"cli":"keyvra operations time-entries approve","mcpTool":"operations_timeEntries_approve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"timeEntryId":{"type":"string","x-convex-table":"timeEntries"}},"required":["timeEntryId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"operations.timeEntries.bulkApprove","group":"operations","title":"Approve time entries in bulk","summary":"Approve completed entries and return approvedCount.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["operation-assign"],"requiresApproval":true,"cli":"keyvra operations time-entries bulk-approve","mcpTool":"operations_timeEntries_bulkApprove","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"timeEntryIds":{"type":"array","items":{"type":"string","x-convex-table":"timeEntries"}}},"required":["timeEntryIds"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"payments.bookingPayments.cancel","group":"payments","title":"Cancel a booking payment attempt","summary":"Prove provider cancellation before releasing the reservation and allowing another payment.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments booking-payments cancel","mcpTool":"payments_bookingPayments_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.bookingPayments.checkout","group":"payments","title":"Prepare booking payment","summary":"Apply optional promotions and member credits, then return Stripe payment-intent details or a credit-funded settlement result.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments booking-payments checkout","mcpTool":"payments_bookingPayments_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"applyCredits":{"type":"boolean"},"bookingId":{"type":"string","x-convex-table":"bookings"},"promotionCode":{"type":"string"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"payments.bookingPayments.get","group":"payments","title":"Read booking payment status","summary":"Read persisted payment and fulfillment status after webhook settlement.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments booking-payments get","mcpTool":"payments_bookingPayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.bookingPayments.pay","group":"payments","title":"Pay a booking","summary":"Confirm a one-time shared payment token against the frozen quote, or return a human handoff.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments booking-payments pay","mcpTool":"payments_bookingPayments_pay","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"sharedPaymentToken":{"type":"string"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.bookingPayments.quote","group":"payments","title":"Preview a booking payment","summary":"Return provisional pricing and available payment modes without reserving or charging.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments booking-payments quote","mcpTool":"payments_bookingPayments_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"applyCredits":{"type":"boolean"},"bookingId":{"type":"string","x-convex-table":"bookings"},"promotionCode":{"type":"string"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricingHash":{"type":"string"},"provisional":{"type":"boolean"}},"required":["amountCents","currency","modes","networkId","pricingHash","provisional"],"additionalProperties":false}},{"id":"payments.bookingPayments.recover","group":"payments","title":"Reconcile a booking payment attempt","summary":"Find the original account-bound intent without creating a replacement charge.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments booking-payments recover","mcpTool":"payments_bookingPayments_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.bookingPayments.reserve","group":"payments","title":"Reserve a booking payment","summary":"Freeze the authoritative amount, reservation, buyer and seller account before delegating payment.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments booking-payments reserve","mcpTool":"payments_bookingPayments_reserve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"applyCredits":{"type":"boolean"},"bookingId":{"type":"string","x-convex-table":"bookings"},"expectedPricingHash":{"type":"string"},"promotionCode":{"type":"string"}},"required":["bookingId","expectedPricingHash"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"breakdown":{"type":"object","properties":{"addOnCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"discountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"type":"string"},"taxRateName":{"type":"string"},"taxableSubtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["addOnCents","benefitCents","creditCents","discountCents","subtotalCents","taxCents","taxInclusive","taxRateBps","taxRateName","taxableSubtotalCents","totalCents"],"additionalProperties":false},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"handoffUrl":{"type":"string"},"payment":{"type":"object","properties":{"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sptRequirements":{"anyOf":[{"type":"null"},{"type":"object","properties":{"currency":{"type":"string"},"expiresAtMinimum":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAtRecommended":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxAmount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["currency","expiresAtMinimum","expiresAtRecommended","maxAmount"],"additionalProperties":false}]}},"required":["modes","networkId","sptRequirements"],"additionalProperties":false},"pricingHash":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"quoteVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"required":["id","kind"],"additionalProperties":false}},"required":["amountCents","applicationFeeCents","breakdown","currency","expiresAt","handoffUrl","payment","pricingHash","quoteId","quoteVersion","target"],"additionalProperties":false}},{"id":"payments.bookingRefunds.checkStatus","group":"payments","title":"Check a saved booking refund","summary":"Recover the exact previously authorized request and return its status without creating another refund identity.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-refund"],"requiresApproval":true,"cli":"keyvra payments booking-refunds check-status","mcpTool":"payments_bookingRefunds_checkStatus","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requestId":{"type":"string","x-convex-table":"bookingRefundRequests"}},"required":["requestId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"payments.bookingRefunds.get","group":"payments","title":"Get the saved booking refund request","summary":"Read the invoice's outstanding or latest refund identity, original amount, status and review reason.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-refund"],"requiresApproval":false,"cli":"keyvra payments booking-refunds get","mcpTool":"payments_bookingRefunds_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"invoiceId":{"type":"string","x-convex-table":"invoices"}},"required":["invoiceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"payments.bookingRefunds.refund","group":"payments","title":"Refund a booking payment","summary":"Consume an owned refund approval, request the Stripe refund and reconcile invoice, credits and payout compensation.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-refund"],"requiresApproval":true,"cli":"keyvra payments booking-refunds refund","mcpTool":"payments_bookingRefunds_refund","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalId":{"type":"string","x-convex-table":"refundApprovals"}},"required":["approvalId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"payments.bookingRefunds.requestApproval","group":"payments","title":"Request booking refund approval","summary":"Create or reuse a five-minute refund approval for an owned invoice and return its ID, amount, expiry and status.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-refund"],"requiresApproval":true,"cli":"keyvra payments booking-refunds request-approval","mcpTool":"payments_bookingRefunds_requestApproval","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"previousRequestId":{"type":"string"},"requestId":{"type":"string"}},"required":["invoiceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"payments.bookingRefunds.retireUnusedApproval","group":"payments","title":"Retire an unused booking refund approval","summary":"Retire an amount-bound approval only when a transaction proves no financial reservation or provider attempt exists; otherwise return the existing request status.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-refund"],"requiresApproval":true,"cli":"keyvra payments booking-refunds retire-unused-approval","mcpTool":"payments_bookingRefunds_retireUnusedApproval","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"invoiceId":{"type":"string","x-convex-table":"invoices"},"requestId":{"type":"string"}},"required":["invoiceId","requestId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"status":{"const":"retired"}},"required":["status"],"additionalProperties":false},{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvalExpiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvalId":{"type":"string","x-convex-table":"refundApprovals"},"approvalOwner":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string","x-convex-table":"users"}},"required":["name","userId"],"additionalProperties":false},"canResumeApproval":{"type":"boolean"},"clientRequestId":{"type":"string"},"effectsDeferred":{"type":"boolean"},"identity":{"type":"string"},"providerStatus":{"type":"string"},"reason":{"type":"string"},"requestId":{"type":"string","x-convex-table":"bookingRefundRequests"},"status":{"anyOf":[{"const":"pending"},{"const":"uncertain"},{"const":"failed"},{"const":"succeeded"},{"const":"completed"},{"const":"refunded"},{"const":"partially_refunded"},{"const":"manually_settled"},{"const":"review_blocked"}]},"statusOnly":{"type":"boolean"}},"required":["amountCents","effectsDeferred","providerStatus","status","statusOnly"],"additionalProperties":false}]}},{"id":"payments.commerce.recordReceipt","group":"payments","title":"Record commerce payment","summary":"Record a manual settlement, activate the matching purchase, and return the receipt id.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments commerce record-receipt","mcpTool":"payments_commerce_recordReceipt","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"note":{"type":"string"},"reference":{"type":"string"},"target":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"eventRegistrations"},"kind":{"const":"event"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"dayPasses"},"kind":{"const":"pass"}},"required":["id","kind"],"additionalProperties":false}]}},"required":["amountCents","currency","note","reference","target"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"commerceReceipts"}},{"id":"payments.commerce.recordRefund","group":"payments","title":"Record commerce refund","summary":"Record a manual receipt refund, revoke the related purchase, and return null.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments commerce record-refund","mcpTool":"payments_commerce_recordRefund","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"receiptId":{"type":"string","x-convex-table":"commerceReceipts"},"refundReference":{"type":"string"}},"required":["receiptId","refundReference"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"payments.commercePayments.list","group":"payments","title":"List commerce card payments","summary":"Return a descending, paginated list of the workspace's card-commerce checkout records.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["sessionUrl","sessionId"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments commerce-payments list","mcpTool":"payments_commercePayments_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"commerceCheckouts"},"agentPaymentQuoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"commissionBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"lastEventId":{"type":"string"},"memberId":{"type":"string","x-convex-table":"members"},"name":{"type":"string"},"observationEventAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paidAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentIntentId":{"type":"string"},"recoveryReason":{"type":"string"},"refundAttempts":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundAuthorizedAmountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundFirstSentAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundId":{"type":"string"},"refundStatus":{"anyOf":[{"const":"uncertain"},{"const":"pending"},{"const":"failed"},{"const":"succeeded"}]},"refundTimestampSource":{"anyOf":[{"const":"provider_event"},{"const":"api_confirmation"}]},"refundedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"returnUrl":{"type":"string"},"revision":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"state":{"anyOf":[{"const":"creating"},{"const":"open"},{"const":"paid"},{"const":"expired"},{"const":"refund_required"},{"const":"partially_refunded"},{"const":"refunded"}]},"stripeAccountId":{"type":"string"},"target":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"eventRegistrations"},"kind":{"const":"event"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"dayPasses"},"kind":{"const":"pass"}},"required":["id","kind"],"additionalProperties":false}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","applicationFeeCents","commissionBps","createdAt","currency","expiresAt","memberId","name","refundAttempts","refundedCents","returnUrl","revision","salesChannel","state","stripeAccountId","target","tenantId","updatedAt"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"payments.commercePayments.refund","group":"payments","title":"Refund a commerce purchase","summary":"Mark a paid commerce checkout for refund, revoke its purchase entitlement and attempt a Stripe refund; return accepted.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments commerce-payments refund","mcpTool":"payments_commercePayments_refund","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"checkoutId":{"type":"string","x-convex-table":"commerceCheckouts"}},"required":["checkoutId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"accepted":{"type":"boolean"}},"required":["accepted"],"additionalProperties":false}},{"id":"payments.commerceReceipts.list","group":"payments","title":"List commerce receipts","summary":"Return a descending, paginated list of the workspace's manual commerce receipts.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments commerce-receipts list","mcpTool":"payments_commerceReceipts_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"commerceReceipts"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"note":{"type":"string"},"recordedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"recordedBy":{"type":"string","x-convex-table":"users"},"reference":{"type":"string"},"refundReference":{"type":"string"},"refundedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedBy":{"type":"string","x-convex-table":"users"},"source":{"const":"manual"},"status":{"anyOf":[{"const":"settled"},{"const":"refunded"}]},"target":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"eventRegistrations"},"kind":{"const":"event"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"dayPasses"},"kind":{"const":"pass"}},"required":["id","kind"],"additionalProperties":false}]},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["_creationTime","_id","amountCents","currency","note","recordedAt","recordedBy","reference","source","status","target","tenantId"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"payments.connect.connect","group":"payments","title":"Connect Stripe payments","summary":"Create or reuse the workspace's Stripe Express account and return its onboarding URL.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments connect connect","mcpTool":"payments_connect_connect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"refreshUrl":{"type":"string"},"returnUrl":{"type":"string"}},"required":["refreshUrl","returnUrl"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"payments.connect.startOnboarding","group":"payments","title":"Start Stripe Connect onboarding","summary":"Create or reuse a Stripe Express account and return an account-onboarding URL and account ID.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments connect start-onboarding","mcpTool":"payments_connect_startOnboarding","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"refreshUrl":{"type":"string"},"returnUrl":{"type":"string"}},"required":["refreshUrl","returnUrl"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"payments.creditNotes.create","group":"payments","title":"Issue a credit note","summary":"Issue an invoice-plan credit note, reconcile its balance and return the credit-note ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments credit-notes create","mcpTool":"payments_creditNotes_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"},"reason":{"type":"string"},"reference":{"type":"string"}},"required":["amountCents","currency","planId","reason","reference"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"creditNotes"}},{"id":"payments.creditNotes.verifyRefund","group":"payments","title":"Verify an external refund","summary":"Record a confirmed manual refund against a credit note and return the refund receipt ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments credit-notes verify-refund","mcpTool":"payments_creditNotes_verifyRefund","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditNoteId":{"type":"string","x-convex-table":"creditNotes"},"currency":{"type":"string"},"evidence":{"type":"string"},"externalReference":{"type":"string"}},"required":["amountCents","creditNoteId","currency","evidence","externalReference"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"invoicePaymentReceipts"}},{"id":"payments.financialBackfill.get","group":"payments","title":"Get financial preparation status","summary":"Return readiness and processed-row counts for each financial ledger source.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments financial-backfill get","mcpTool":"payments_financialBackfill_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ready":{"type":"boolean"},"sources":{"type":"array","items":{"type":"object","properties":{"processedRows":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"source":{"anyOf":[{"const":"invoices"},{"const":"membershipInvoices"},{"const":"commerceReceipts"},{"const":"commerceCheckouts"},{"const":"invoicePaymentReceipts"},{"const":"creditNotes"},{"const":"invoicePaymentCollections"}]},"status":{"anyOf":[{"const":"pending"},{"const":"running"},{"const":"ready"}]}},"required":["processedRows","source","status"],"additionalProperties":false}}},"required":["ready","sources"],"additionalProperties":false}},{"id":"payments.financialBackfill.run","group":"payments","title":"Prepare financial history","summary":"Queue resumable financial-ledger backfills for sources that are not ready; return null.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments financial-backfill run","mcpTool":"payments_financialBackfill_run","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"payments.installmentCollections.list","group":"payments","title":"List installment card collections","summary":"Return recent card-collection attempts for a payment plan, using the selected staff or customer projection.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["checkoutUrl","sessionId"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments installment-collections list","mcpTool":"payments_installmentCollections_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"anyOf":[{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"invoicePaymentCollections"},"agentPaymentQuoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"browserRecoveryAllowed":{"type":"boolean"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"email":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"installmentKey":{"type":"string"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"lastEventId":{"type":"string"},"lastFailureAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"name":{"type":"string"},"observationEventAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paidAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentIntentId":{"type":"string"},"paymentTimestampSource":{"anyOf":[{"const":"provider_event"},{"const":"api_confirmation"}]},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"},"refund":{"type":"object","properties":{"effectsDeferred":{"type":"boolean"},"providerStatus":{"type":"string"},"request":{"type":"object","properties":{"accountScope":{"type":"string"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"identity":{"type":"string"},"providerStatus":{"type":"string"},"refundId":{"type":"string"}},"required":["accountScope","amountCents","currency","identity","providerStatus"],"additionalProperties":false},"status":{"anyOf":[{"const":"pending"},{"const":"uncertain"},{"const":"failed"},{"const":"succeeded"},{"const":"completed"},{"const":"refunded"},{"const":"partially_refunded"},{"const":"manually_settled"},{"const":"review_blocked"}]},"statusOnly":{"type":"boolean"}},"required":["effectsDeferred","providerStatus","status","statusOnly"],"additionalProperties":false},"refundFirstSentAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundId":{"type":"string"},"refundSettledBinding":{"type":"string"},"refundStatus":{"anyOf":[{"const":"pending"},{"const":"failed"},{"const":"succeeded"}]},"refundTimestampSource":{"anyOf":[{"const":"provider_event"},{"const":"api_confirmation"}]},"refundedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"returnUrl":{"type":"string"},"status":{"anyOf":[{"const":"creating"},{"const":"open"},{"const":"paid"},{"const":"failed"},{"const":"expired"},{"const":"refund_required"},{"const":"refunded"}]},"stripeAccountId":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","applicationFeeCents","browserRecoveryAllowed","createdAt","currency","expiresAt","installmentKey","invoiceId","name","planId","refundedCents","returnUrl","status","stripeAccountId","tenantId","updatedAt"],"additionalProperties":false},{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"invoicePaymentCollections"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"browserRecoveryAllowed":{"type":"boolean"},"currency":{"type":"string"},"installmentKey":{"type":"string"},"refund":{"type":"object","properties":{"effectsDeferred":{"type":"boolean"},"providerStatus":{"type":"string"},"request":{"type":"object","properties":{"accountScope":{"type":"string"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"identity":{"type":"string"},"providerStatus":{"type":"string"},"refundId":{"type":"string"}},"required":["accountScope","amountCents","currency","identity","providerStatus"],"additionalProperties":false},"status":{"anyOf":[{"const":"pending"},{"const":"uncertain"},{"const":"failed"},{"const":"succeeded"},{"const":"completed"},{"const":"refunded"},{"const":"partially_refunded"},{"const":"manually_settled"},{"const":"review_blocked"}]},"statusOnly":{"type":"boolean"}},"required":["effectsDeferred","providerStatus","status","statusOnly"],"additionalProperties":false},"refundStatus":{"anyOf":[{"const":"pending"},{"const":"failed"},{"const":"succeeded"}]},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"status":{"type":"string"}},"required":["_id","amountCents","browserRecoveryAllowed","currency","installmentKey","refundedCents","status"],"additionalProperties":false}]}}},{"id":"payments.installmentCollections.recover","group":"payments","title":"Recover an installment payment","summary":"Reconcile a recorded card collection against Stripe and return configuration state and reason.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments installment-collections recover","mcpTool":"payments_installmentCollections_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"collectionId":{"type":"string","x-convex-table":"invoicePaymentCollections"}},"required":["collectionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"effectsDeferred":{"type":"boolean"},"providerStatus":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"const":"review_blocked"},{"const":"pending"},{"const":"succeeded"},{"const":"failed"},{"const":"manually_settled"}]},"statusOnly":{"type":"boolean"}},"required":["configured","reason"],"additionalProperties":false}},{"id":"payments.installmentPayments.cancel","group":"payments","title":"Cancel a installment payment","summary":"Confirm provider cancellation before releasing the hold or collection.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments installment-payments cancel","mcpTool":"payments_installmentPayments_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.installmentPayments.get","group":"payments","title":"Get a installment payment","summary":"Read settlement and refund state recorded by the existing domain handler.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments installment-payments get","mcpTool":"payments_installmentPayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.installmentPayments.pay","group":"payments","title":"Pay a installment payment","summary":"Pay the frozen obligation with a shared payment token or return a signed human checkout handoff.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments installment-payments pay","mcpTool":"payments_installmentPayments_pay","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"sharedPaymentToken":{"type":"string"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.installmentPayments.quote","group":"payments","title":"Quote a installment payment","summary":"Preview the saved amount, connected account profile and available payment modes.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments installment-payments quote","mcpTool":"payments_installmentPayments_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"installmentKey":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["installmentKey","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricingHash":{"type":"string"},"provisional":{"type":"boolean"}},"required":["amountCents","applicationFeeCents","currency","modes","networkId","pricingHash","provisional"],"additionalProperties":false}},{"id":"payments.installmentPayments.recover","group":"payments","title":"Recover a installment payment","summary":"Reconcile the original payment without creating a replacement charge.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments installment-payments recover","mcpTool":"payments_installmentPayments_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.installmentPayments.reserve","group":"payments","title":"Reserve a installment payment","summary":"Freeze the owned commercial obligation before delegating a one-time payment.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments installment-payments reserve","mcpTool":"payments_installmentPayments_reserve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedPricingHash":{"type":"string"},"installmentKey":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["expectedPricingHash","installmentKey","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"breakdown":{"type":"object","properties":{"addOnCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"discountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"type":"string"},"taxRateName":{"type":"string"},"taxableSubtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["addOnCents","benefitCents","creditCents","discountCents","subtotalCents","taxCents","taxInclusive","taxRateBps","taxRateName","taxableSubtotalCents","totalCents"],"additionalProperties":false},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"handoffUrl":{"type":"string"},"payment":{"type":"object","properties":{"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sptRequirements":{"anyOf":[{"type":"null"},{"type":"object","properties":{"currency":{"type":"string"},"expiresAtMinimum":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAtRecommended":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxAmount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["currency","expiresAtMinimum","expiresAtRecommended","maxAmount"],"additionalProperties":false}]}},"required":["modes","networkId","sptRequirements"],"additionalProperties":false},"pricingHash":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"quoteVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"required":["id","kind"],"additionalProperties":false}},"required":["amountCents","applicationFeeCents","breakdown","currency","expiresAt","handoffUrl","payment","pricingHash","quoteId","quoteVersion","target"],"additionalProperties":false}},{"id":"payments.installments.checkout","group":"payments","title":"Open installment checkout","summary":"Reserve collection of an outstanding invoice installment and return its Stripe checkout URL.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments installments checkout","mcpTool":"payments_installments_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"installmentKey":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["installmentKey","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"payments.invoiceReceipts.verifyPayment","group":"payments","title":"Verify an external invoice payment","summary":"Record a verified manual installment payment, reconcile the invoice and return its receipt ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments invoice-receipts verify-payment","mcpTool":"payments_invoiceReceipts_verifyPayment","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"evidence":{"type":"string"},"externalReference":{"type":"string"},"installmentKey":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["amountCents","currency","evidence","externalReference","installmentKey","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"invoicePaymentReceipts"}},{"id":"payments.invoiceRefunds.list","group":"payments","title":"List invoice refund requests","summary":"Return pending, succeeded and failed card refund requests for an owned payment plan.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments invoice-refunds list","mcpTool":"payments_invoiceRefunds_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"},"requestKey":{"type":"string"}},"required":["planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"invoiceRefundRequests"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"collectionId":{"type":"string","x-convex-table":"invoicePaymentCollections"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditNoteId":{"type":"string","x-convex-table":"creditNotes"},"currency":{"type":"string"},"effectsDeferred":{"type":"boolean"},"failureReason":{"type":"string"},"firstSentAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"manualReviewReason":{"type":"string"},"manualSettlement":{"type":"object","properties":{"binding":{"type":"string"},"decidedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"evidence":{"type":"string"},"operatorUserId":{"type":"string","x-convex-table":"users"}},"required":["binding","decidedAt","evidence","operatorUserId"],"additionalProperties":false},"manuallySettled":{"type":"boolean"},"observationEventAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentIntentId":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"},"providerStatus":{"type":"string"},"receiptId":{"type":"string","x-convex-table":"invoicePaymentReceipts"},"refundId":{"type":"string"},"requestKey":{"type":"string"},"requestedByUserId":{"type":"string","x-convex-table":"users"},"status":{"anyOf":[{"const":"pending"},{"const":"uncertain"},{"const":"failed"},{"const":"succeeded"},{"const":"completed"},{"const":"refunded"},{"const":"partially_refunded"},{"const":"manually_settled"},{"const":"review_blocked"}]},"statusOnly":{"type":"boolean"},"stripeAccountId":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","collectionId","createdAt","creditNoteId","currency","effectsDeferred","paymentIntentId","planId","providerStatus","requestKey","requestedByUserId","status","statusOnly","stripeAccountId","tenantId","updatedAt"],"additionalProperties":false}}},{"id":"payments.invoiceRefunds.recover","group":"payments","title":"Recover an invoice refund","summary":"Retry or reconcile an existing invoice card refund and return configuration state and reason.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments invoice-refunds recover","mcpTool":"payments_invoiceRefunds_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requestId":{"type":"string","x-convex-table":"invoiceRefundRequests"}},"required":["requestId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"configured":{"type":"boolean"},"effectsDeferred":{"type":"boolean"},"providerStatus":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"requestId":{"type":"string","x-convex-table":"invoiceRefundRequests"},"status":{"anyOf":[{"const":"pending"},{"const":"uncertain"},{"const":"failed"},{"const":"succeeded"},{"const":"completed"},{"const":"refunded"},{"const":"partially_refunded"},{"const":"manually_settled"},{"const":"review_blocked"}]},"statusOnly":{"type":"boolean"}},"required":["configured","reason"],"additionalProperties":false}},{"id":"payments.invoiceRefunds.refund","group":"payments","title":"Refund an invoice card payment","summary":"Reserve and execute a card refund against an invoice credit note; return configuration state and reason.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments invoice-refunds refund","mcpTool":"payments_invoiceRefunds_refund","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"collectionId":{"type":"string","x-convex-table":"invoicePaymentCollections"},"creditNoteId":{"type":"string","x-convex-table":"creditNotes"},"requestKey":{"type":"string"}},"required":["amountCents","collectionId","creditNoteId","requestKey"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"configured":{"type":"boolean"},"effectsDeferred":{"type":"boolean"},"providerStatus":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"requestId":{"type":"string","x-convex-table":"invoiceRefundRequests"},"status":{"anyOf":[{"const":"pending"},{"const":"uncertain"},{"const":"failed"},{"const":"succeeded"},{"const":"completed"},{"const":"refunded"},{"const":"partially_refunded"},{"const":"manually_settled"},{"const":"review_blocked"}]},"statusOnly":{"type":"boolean"}},"required":["configured","reason"],"additionalProperties":false}},{"id":"payments.membershipBilling.checkout","group":"payments","title":"Open membership checkout","summary":"Create or reuse Stripe checkout for an unpaid membership and return its URL or an unavailable reason.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments membership-billing checkout","mcpTool":"payments_membershipBilling_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"payments.membershipBilling.openPortal","group":"payments","title":"Open membership billing portal","summary":"Create a Stripe billing portal session for a membership's payment methods and return its URL.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments membership-billing open-portal","mcpTool":"payments_membershipBilling_openPortal","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["expectedVersion","subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"payments.membershipBilling.update","group":"payments","title":"Change membership billing","summary":"Pause, resume or cancel recurring membership billing; return accepted and reason.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments membership-billing update","mcpTool":"payments_membershipBilling_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"transition":{"anyOf":[{"const":"pause"},{"const":"resume"},{"const":"cancel_now"},{"const":"cancel_at_end"},{"const":"keep_active"}]}},"required":["expectedVersion","subscriptionId","transition"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"accepted":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["accepted","reason"],"additionalProperties":false}},{"id":"payments.membershipInvoices.create","group":"payments","title":"Create a membership invoice","summary":"Create or reuse the open manual renewal invoice for a workspace membership and return its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments membership-invoices create","mcpTool":"payments_membershipInvoices_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"membershipInvoices"}},{"id":"payments.membershipInvoices.list","group":"payments","title":"List membership invoices","summary":"Return the latest invoices for an owned membership subscription.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments membership-invoices list","mcpTool":"payments_membershipInvoices_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"membershipInvoices"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"dueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"evidenceNote":{"type":"string"},"invoiceNumber":{"type":"string"},"kind":{"anyOf":[{"const":"period"},{"const":"trial"}]},"memberId":{"type":"string","x-convex-table":"members"},"paidAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentReference":{"type":"string"},"periodEnd":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"periodStart":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"open"},{"const":"paid"},{"const":"void"}]},"stripeInvoiceId":{"type":"string"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"verifiedByUserId":{"type":"string","x-convex-table":"users"}},"required":["_creationTime","_id","amountCents","createdAt","currency","dueAt","invoiceNumber","memberId","periodEnd","periodStart","status","subscriptionId","tenantId","updatedAt"],"additionalProperties":false}}},{"id":"payments.membershipInvoices.verifyPayment","group":"payments","title":"Verify membership invoice payment","summary":"Record a confirmed external invoice payment, activate the paid membership period and return the subscription ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments membership-invoices verify-payment","mcpTool":"payments_membershipInvoices_verifyPayment","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"evidenceNote":{"type":"string"},"invoiceId":{"type":"string","x-convex-table":"membershipInvoices"},"paymentReference":{"type":"string"}},"required":["amountCents","currency","evidenceNote","invoiceId","paymentReference"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"memberSubscriptions"}},{"id":"payments.membershipInvoices.void","group":"payments","title":"Void a membership invoice","summary":"Mark an owned open membership invoice void and return null.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments membership-invoices void","mcpTool":"payments_membershipInvoices_void","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"invoiceId":{"type":"string","x-convex-table":"membershipInvoices"}},"required":["invoiceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"payments.membershipPayments.checkout","group":"payments","title":"Open recurring checkout","summary":"Return the existing hosted checkout URL for the person to confirm recurring billing.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments membership-payments checkout","mcpTool":"payments_membershipPayments_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"payments.membershipPayments.get","group":"payments","title":"Read recurring payment status","summary":"Read persisted recurring billing status without collecting another payment.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":false,"cli":"keyvra payments membership-payments get","mcpTool":"payments_membershipPayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paymentMode":{"const":"handoff"},"recurring":{"const":true},"status":{"type":"string"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["paymentMode","recurring","status","subscriptionId","version"],"additionalProperties":false}},{"id":"payments.membershipPayments.openPortal","group":"payments","title":"Open recurring billing portal","summary":"Return the existing hosted billing portal for the owned membership.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments membership-payments open-portal","mcpTool":"payments_membershipPayments_openPortal","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["expectedVersion","subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"payments.membershipPlans.schedule","group":"payments","title":"Schedule a membership plan change","summary":"Schedule a published membership plan for the next Stripe renewal and return accepted and reason.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments membership-plans schedule","mcpTool":"payments_membershipPlans_schedule","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"planId":{"type":"string","x-convex-table":"membershipPlans"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["expectedVersion","planId","subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"accepted":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["accepted","reason"],"additionalProperties":false}},{"id":"payments.paymentPlans.create","group":"payments","title":"Create an invoice payment plan","summary":"Create or reuse an invoice installment plan and return its ID.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments payment-plans create","mcpTool":"payments_paymentPlans_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"installments":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"dueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"}},"required":["amountCents","dueAt","key"],"additionalProperties":false}},"invoiceId":{"type":"string","x-convex-table":"invoices"}},"required":["installments","invoiceId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"invoicePaymentPlans"}},{"id":"payments.paymentPlans.get","group":"payments","title":"Get a payment-plan statement","summary":"Return an owned payment plan, reconciled totals, installment balances and receipt/credit-note history.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments payment-plans get","mcpTool":"payments_paymentPlans_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"adjustmentEligibility":{"type":"object","properties":{"card":{"type":"boolean"},"credit":{"type":"boolean"},"holds":{"type":"array","items":{"type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"},"bookingRefundRequestId":{"type":"string","x-convex-table":"bookingRefundRequests"},"browserRecoveryAllowed":{"type":"boolean"},"cardRefundRequestId":{"type":"string","x-convex-table":"invoiceRefundRequests"},"collectionId":{"type":"string","x-convex-table":"invoicePaymentCollections"},"kind":{"anyOf":[{"const":"checkout"},{"const":"booking_refund"},{"const":"card_refund"},{"const":"expiry_review"},{"const":"history_limit"}]}},"required":["kind"],"additionalProperties":false}},"payment":{"type":"boolean"},"refund":{"type":"boolean"}},"required":["card","credit","holds","payment","refund"],"additionalProperties":false},"creditNotes":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"creditNotes"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"issuedByUserId":{"type":"string","x-convex-table":"users"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"},"reason":{"type":"string"},"recordedRefundCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reference":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["_creationTime","_id","amountCents","createdAt","currency","invoiceId","issuedByUserId","planId","reason","recordedRefundCents","reference","tenantId"],"additionalProperties":false}},"historyTruncated":{"type":"boolean"},"installments":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"browserCheckoutAllowed":{"type":"boolean"},"dueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"outstandingCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"receivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","dueAt","key","outstandingCents","receivedCents"],"additionalProperties":false}},"invoiceNumber":{"type":"string"},"plan":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"invoicePaymentPlans"},"bookingId":{"type":"string","x-convex-table":"bookings"},"commissionBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"installments":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"dueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"receivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","dueAt","key","receivedCents"],"additionalProperties":false}},"invoiceId":{"type":"string","x-convex-table":"invoices"},"memberId":{"type":"string","x-convex-table":"members"},"openingReceivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"originalTotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"receivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"salesQuoteId":{"type":"string","x-convex-table":"salesQuotes"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","commissionBps","createdAt","creditedCents","currency","installments","invoiceId","openingReceivedCents","originalTotalCents","receivedCents","refundedCents","salesChannel","tenantId","updatedAt","version"],"additionalProperties":false},"receipts":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"invoicePaymentReceipts"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"collectionId":{"type":"string","x-convex-table":"invoicePaymentCollections"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditNoteId":{"type":"string","x-convex-table":"creditNotes"},"currency":{"type":"string"},"evidence":{"type":"string"},"externalReference":{"type":"string"},"installmentKey":{"type":"string"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"kind":{"anyOf":[{"const":"payment"},{"const":"refund"}]},"method":{"anyOf":[{"const":"manual"},{"const":"stripe"}]},"occurredAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"},"tenantId":{"type":"string","x-convex-table":"tenants"},"timestampSource":{"anyOf":[{"const":"provider_event"},{"const":"api_confirmation"},{"const":"manual_verification"}]},"verifiedByUserId":{"type":"string","x-convex-table":"users"}},"required":["_creationTime","_id","amountCents","createdAt","currency","evidence","externalReference","invoiceId","kind","method","planId","tenantId"],"additionalProperties":false}},"totals":{"type":"object","properties":{"adjustedTotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"customerCreditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"netReceivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"outstandingCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"receivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"settled":{"type":"boolean"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["adjustedTotalCents","creditedCents","customerCreditCents","netReceivedCents","outstandingCents","receivedCents","refundedCents","settled","totalCents"],"additionalProperties":false}},"required":["adjustmentEligibility","creditNotes","historyTruncated","installments","invoiceNumber","plan","receipts","totals"],"additionalProperties":false}},{"id":"payments.paymentPlans.list","group":"payments","title":"List invoice payment plans","summary":"Return a descending, paginated list of workspace invoice payment plans.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments payment-plans list","mcpTool":"payments_paymentPlans_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"invoicePaymentPlans"},"bookingId":{"type":"string","x-convex-table":"bookings"},"commissionBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"installments":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"dueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"receivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","dueAt","key","receivedCents"],"additionalProperties":false}},"invoiceId":{"type":"string","x-convex-table":"invoices"},"memberId":{"type":"string","x-convex-table":"members"},"openingReceivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"originalTotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"receivedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"salesQuoteId":{"type":"string","x-convex-table":"salesQuotes"},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","commissionBps","createdAt","creditedCents","currency","installments","invoiceId","openingReceivedCents","originalTotalCents","receivedCents","refundedCents","salesChannel","tenantId","updatedAt","version"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"payments.purchasePayments.cancel","group":"payments","title":"Cancel a purchase payment","summary":"Confirm provider cancellation before releasing the hold or collection.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments purchase-payments cancel","mcpTool":"payments_purchasePayments_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.purchasePayments.get","group":"payments","title":"Get a purchase payment","summary":"Read settlement and refund state recorded by the existing domain handler.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments purchase-payments get","mcpTool":"payments_purchasePayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.purchasePayments.pay","group":"payments","title":"Pay a purchase payment","summary":"Pay the frozen obligation with a shared payment token or return a signed human checkout handoff.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments purchase-payments pay","mcpTool":"payments_purchasePayments_pay","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"sharedPaymentToken":{"type":"string"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.purchasePayments.quote","group":"payments","title":"Quote a purchase payment","summary":"Preview the saved amount, connected account profile and available payment modes.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments purchase-payments quote","mcpTool":"payments_purchasePayments_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"target":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"eventRegistrations"},"kind":{"const":"event"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"dayPasses"},"kind":{"const":"pass"}},"required":["id","kind"],"additionalProperties":false}]}},"required":["target"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricingHash":{"type":"string"},"provisional":{"type":"boolean"}},"required":["amountCents","applicationFeeCents","currency","modes","networkId","pricingHash","provisional"],"additionalProperties":false}},{"id":"payments.purchasePayments.recover","group":"payments","title":"Recover a purchase payment","summary":"Reconcile the original payment without creating a replacement charge.","tiers":["operator"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments purchase-payments recover","mcpTool":"payments_purchasePayments_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"payments.purchasePayments.reserve","group":"payments","title":"Reserve a purchase payment","summary":"Freeze the owned commercial obligation before delegating a one-time payment.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":["billing-manage"],"requiresApproval":true,"cli":"keyvra payments purchase-payments reserve","mcpTool":"payments_purchasePayments_reserve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedPricingHash":{"type":"string"},"target":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"eventRegistrations"},"kind":{"const":"event"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"dayPasses"},"kind":{"const":"pass"}},"required":["id","kind"],"additionalProperties":false}]}},"required":["expectedPricingHash","target"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"breakdown":{"type":"object","properties":{"addOnCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"discountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"type":"string"},"taxRateName":{"type":"string"},"taxableSubtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["addOnCents","benefitCents","creditCents","discountCents","subtotalCents","taxCents","taxInclusive","taxRateBps","taxRateName","taxableSubtotalCents","totalCents"],"additionalProperties":false},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"handoffUrl":{"type":"string"},"payment":{"type":"object","properties":{"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sptRequirements":{"anyOf":[{"type":"null"},{"type":"object","properties":{"currency":{"type":"string"},"expiresAtMinimum":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAtRecommended":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxAmount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["currency","expiresAtMinimum","expiresAtRecommended","maxAmount"],"additionalProperties":false}]}},"required":["modes","networkId","sptRequirements"],"additionalProperties":false},"pricingHash":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"quoteVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"required":["id","kind"],"additionalProperties":false}},"required":["amountCents","applicationFeeCents","breakdown","currency","expiresAt","handoffUrl","payment","pricingHash","quoteId","quoteVersion","target"],"additionalProperties":false}},{"id":"payments.refundSources.collections","group":"payments","title":"List retained card refund sources","summary":"Page owned refund sources independently of statement display history.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments refund-sources collections","mcpTool":"payments_refundSources_collections","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["paginationOpts","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"invoicePaymentCollections"},"currency":{"type":"string"},"installmentKey":{"type":"string"},"remainingCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]}},"required":["_id","currency","installmentKey","remainingCents"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"payments.refundSources.notes","group":"payments","title":"List refundable credit note sources","summary":"Page owned refund sources independently of statement display history.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra payments refund-sources notes","mcpTool":"payments_refundSources_notes","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["paginationOpts","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"creditNotes"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"issuedByUserId":{"type":"string","x-convex-table":"users"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"},"reason":{"type":"string"},"recordedRefundCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reference":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["_creationTime","_id","amountCents","createdAt","currency","invoiceId","issuedByUserId","planId","reason","recordedRefundCents","reference","tenantId"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"platform.aiEvals.list","group":"platform","title":"List AI evaluation results","summary":"Return evaluation runs with scores, pass status, model identifiers, and baseline versions, optionally filtered by purpose.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:ai"],"requiresApproval":false,"cli":"keyvra platform ai-evals list","mcpTool":"platform_aiEvals_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"purpose":{"anyOf":[{"const":"ops-copilot"},{"const":"booking-assistant"},{"const":"marketplace-discovery"},{"const":"insights-nl"},{"const":"review-draft"},{"const":"pricing-suggest"},{"const":"maintenance-predict"},{"const":"operator-console"},{"const":"site-builder"},{"const":"onboarding-guide"},{"const":"integration-agent"}]}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.aiGovernance.list","group":"platform","title":"List AI governance settings","summary":"Return provider summaries, supported purposes, and AI routes for an optional tenant.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:ai"],"requiresApproval":false,"cli":"keyvra platform ai-governance list","mcpTool":"platform_aiGovernance_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.aiGuardrails.list","group":"platform","title":"List AI guardrail summaries","summary":"Return guardrail event counts and latest timestamps grouped by tenant and category.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:ai"],"requiresApproval":false,"cli":"keyvra platform ai-guardrails list","mcpTool":"platform_aiGuardrails_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.aiUsage.get","group":"platform","title":"Get AI usage summaries","summary":"Return call counts, costs, token totals, and usage timestamps grouped by tenant, purpose, provider, and model.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:ai"],"requiresApproval":false,"cli":"keyvra platform ai-usage get","mcpTool":"platform_aiUsage_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"purpose":{"anyOf":[{"const":"ops-copilot"},{"const":"booking-assistant"},{"const":"marketplace-discovery"},{"const":"insights-nl"},{"const":"review-draft"},{"const":"pricing-suggest"},{"const":"maintenance-predict"},{"const":"operator-console"},{"const":"site-builder"},{"const":"onboarding-guide"},{"const":"integration-agent"}]},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.alerts.list","group":"platform","title":"List platform alerts","summary":"Return platform alerts for large bookings, new tenants, payout failures, and integration breakers, with the current administrator's read state.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:notifications"],"requiresApproval":false,"cli":"keyvra platform alerts list","mcpTool":"platform_alerts_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"unreadOnly":{"type":"boolean"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.alerts.setRead","group":"platform","title":"Set platform alert read state","summary":"Mark an alert read or unread for the current administrator and return the refreshed alert list.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:notifications"],"requiresApproval":false,"cli":"keyvra platform alerts set-read","mcpTool":"platform_alerts_setRead","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"alertId":{"type":"string"},"read":{"type":"boolean"}},"required":["alertId","read"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.analytics.getOverview","group":"platform","title":"Get platform analytics","summary":"Return six monthly analytics buckets and totals for booking volume, tenant activity, commissions, and subscription revenue.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:analytics:revenue"],"requiresApproval":false,"cli":"keyvra platform analytics get-overview","mcpTool":"platform_analytics_getOverview","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.analytics.getRevenue","group":"platform","title":"Get platform revenue analytics","summary":"Return current revenue metrics and six monthly buckets for subscription MRR, commissions, and revenue per active tenant.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:analytics:revenue"],"requiresApproval":false,"cli":"keyvra platform analytics get-revenue","mcpTool":"platform_analytics_getRevenue","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.analytics.getTenants","group":"platform","title":"Get tenant analytics","summary":"Return a 30-day tenant leaderboard, occupancy and revenue summaries, and tenants at risk from booking inactivity.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:analytics:revenue"],"requiresApproval":false,"cli":"keyvra platform analytics get-tenants","mcpTool":"platform_analytics_getTenants","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.auditLogs.list","group":"platform","title":"List platform audit logs","summary":"Return audit logs with actor details and metadata, filtered by search text, action, and date range.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["authInvitationId","ownerInvitationId"],"permissionAlternatives":[],"policy":"allow","permissions":["platform:audit"],"requiresApproval":false,"cli":"keyvra platform audit-logs list","mcpTool":"platform_auditLogs_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"action":{"type":"string"},"fromMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"limit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"query":{"type":"string"},"toMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.commerceModeration.decide","group":"platform","title":"Review a commerce offer","summary":"Approve or reject a published commerce offer version and return null.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:moderation"],"requiresApproval":false,"cli":"keyvra platform commerce-moderation decide","mcpTool":"platform_commerceModeration_decide","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"decision":{"anyOf":[{"const":"approved"},{"const":"rejected"}]},"entryId":{"type":"string","x-convex-table":"commerceCatalogEntries"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"}},"required":["decision","entryId","expectedVersion","reason"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"platform.commerceModeration.list","group":"platform","title":"List pending commerce offers","summary":"Return a paginated moderation queue of published commerce offers with descriptions, prices, and fulfillment policy.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:moderation"],"requiresApproval":false,"cli":"keyvra platform commerce-moderation list","mcpTool":"platform_commerceModeration_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"description":{"type":"string"},"entryId":{"type":"string","x-convex-table":"commerceCatalogEntries"},"locationName":{"type":"string"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"remotePolicy":{"anyOf":[{"type":"string"},{"type":"null"}]},"tenantName":{"type":"string"},"unit":{"type":"string"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","currency","description","entryId","locationName","name","offerId","remotePolicy","tenantName","unit","version"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"platform.disputes.create","group":"platform","title":"Open a staff dispute","summary":"Create an open staff-flag dispute for a booking or commerce order and return its case ID.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:disputes"],"requiresApproval":false,"cli":"keyvra platform disputes create","mcpTool":"platform_disputes_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"note":{"type":"string"},"subject":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"bookings"},"kind":{"const":"booking"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"commerceOrders"},"kind":{"const":"order"}},"required":["id","kind"],"additionalProperties":false}]},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["note","subject","tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"disputeCases"}},{"id":"platform.disputes.freezeEvidence","group":"platform","title":"Freeze dispute evidence","summary":"Create an immutable factual evidence bundle for a dispute and return its ID, or return the existing bundle ID.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:disputes"],"requiresApproval":false,"cli":"keyvra platform disputes freeze-evidence","mcpTool":"platform_disputes_freezeEvidence","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"caseId":{"type":"string","x-convex-table":"disputeCases"}},"required":["caseId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"disputeEvidenceBundles"}},{"id":"platform.disputes.get","group":"platform","title":"Get a dispute case","summary":"Return dispute details, any frozen evidence bundle, and relevant payout holds.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:disputes"],"requiresApproval":false,"cli":"keyvra platform disputes get","mcpTool":"platform_disputes_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"caseId":{"type":"string","x-convex-table":"disputeCases"}},"required":["caseId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.disputes.list","group":"platform","title":"List dispute cases","summary":"Return a paginated dispute queue filtered by state, with tenant, subject, deadline, and outcome details.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:disputes"],"requiresApproval":false,"cli":"keyvra platform disputes list","mcpTool":"platform_disputes_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string"},"limit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"state":{"anyOf":[{"const":"open"},{"const":"evidence_due"},{"const":"submitted"},{"const":"won"},{"const":"lost"},{"const":"withdrawn"},{"const":"closed"}]}},"required":["state"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.disputes.placeHold","group":"platform","title":"Place a dispute payout hold","summary":"Place or reuse a booking payout hold and return its ID and whether another dispute already covers the booking.","tiers":["platform"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:disputes"],"requiresApproval":true,"cli":"keyvra platform disputes place-hold","mcpTool":"platform_disputes_placeHold","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"caseId":{"type":"string","x-convex-table":"disputeCases"},"note":{"type":"string"}},"required":["caseId","note"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"coveredByOtherCase":{"type":"boolean"},"holdId":{"type":"string","x-convex-table":"payoutHolds"}},"required":["coveredByOtherCase","holdId"],"additionalProperties":false}},{"id":"platform.disputes.releaseHold","group":"platform","title":"Release a dispute payout hold","summary":"Mark a payout hold released and return null.","tiers":["platform"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:disputes"],"requiresApproval":true,"cli":"keyvra platform disputes release-hold","mcpTool":"platform_disputes_releaseHold","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"holdId":{"type":"string","x-convex-table":"payoutHolds"},"note":{"type":"string"}},"required":["holdId","note"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"platform.disputes.update","group":"platform","title":"Update a dispute state","summary":"Record a permitted dispute state transition, optional response deadline, and applicable outcome, then return null.","tiers":["platform"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:disputes"],"requiresApproval":true,"cli":"keyvra platform disputes update","mcpTool":"platform_disputes_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"caseId":{"type":"string","x-convex-table":"disputeCases"},"note":{"type":"string"},"outcome":{"anyOf":[{"const":"resolved"},{"const":"no_action"}]},"respondByAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"to":{"anyOf":[{"const":"open"},{"const":"evidence_due"},{"const":"submitted"},{"const":"won"},{"const":"lost"},{"const":"withdrawn"},{"const":"closed"}]}},"required":["caseId","note","to"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"platform.emailTemplates.list","group":"platform","title":"List platform email templates","summary":"Return catalog email templates with saved overrides, supported variables, and update metadata.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform email-templates list","mcpTool":"platform_emailTemplates_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.emailTemplates.sendTest","group":"platform","title":"Send a template test email","summary":"Send a rendered template test to the calling administrator and return delivery status.","tiers":["platform"],"kind":"action","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform email-templates send-test","mcpTool":"platform_emailTemplates_sendTest","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channel":{"const":"email"},"eventType":{"type":"string"}},"required":["channel","eventType"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.emailTemplates.update","group":"platform","title":"Update a platform email template","summary":"Save a platform default email template override and return the saved template.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform email-templates update","mcpTool":"platform_emailTemplates_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"channel":{"const":"email"},"eventType":{"type":"string"},"subject":{"type":"string"}},"required":["body","channel","eventType","subject"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.failedPayouts.list","group":"platform","title":"List failed payout transfers","summary":"Return failed payout outbox records with tenant, amount, attempts, failure reason and provider-check status.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:payouts"],"requiresApproval":false,"cli":"keyvra platform failed-payouts list","mcpTool":"platform_failedPayouts_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"limit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.featureFlags.list","group":"platform","title":"List feature flags","summary":"Return feature flag settings, scopes, descriptions, and update metadata.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform feature-flags list","mcpTool":"platform_featureFlags_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.featureFlags.setEnabled","group":"platform","title":"Set feature flag state","summary":"Update an existing feature flag's enabled metadata and return its updated summary.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform feature-flags set-enabled","mcpTool":"platform_featureFlags_setEnabled","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmationText":{"type":"string"},"flagId":{"type":"string","x-convex-table":"featureFlags"},"isEnabled":{"type":"boolean"}},"required":["confirmationText","flagId","isEnabled"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.hostVerification.get","group":"platform","title":"Get host verification records","summary":"Return a tenant's verification states, staff notes, evidence references, and decision metadata for all verification kinds.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:trust:verification"],"requiresApproval":false,"cli":"keyvra platform host-verification get","mcpTool":"platform_hostVerification_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.hostVerification.list","group":"platform","title":"List host verification checks","summary":"Return a paginated queue of stored host verification checks filtered by state.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:trust:verification"],"requiresApproval":false,"cli":"keyvra platform host-verification list","mcpTool":"platform_hostVerification_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string"},"limit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"state":{"anyOf":[{"const":"not_started"},{"const":"submitted"},{"const":"under_review"},{"const":"accepted"},{"const":"declined"},{"const":"expired"}]}},"required":["state"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.hostVerification.update","group":"platform","title":"Update a host verification state","summary":"Record a permitted verification transition with staff evidence and decision notes, returning the verification record ID.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:trust:verification"],"requiresApproval":false,"cli":"keyvra platform host-verification update","mcpTool":"platform_hostVerification_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"attestationId":{"type":"string","x-convex-table":"hostAuthorityAttestations"},"decisionNote":{"type":"string"},"evidenceRef":{"type":"string"},"kind":{"anyOf":[{"const":"business_registration"},{"const":"address"},{"const":"resource_ownership"},{"const":"payout_account"}]},"state":{"anyOf":[{"const":"not_started"},{"const":"submitted"},{"const":"under_review"},{"const":"accepted"},{"const":"declined"},{"const":"expired"}]},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["decisionNote","evidenceRef","kind","state","tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"hostVerifications"}},{"id":"platform.integrations.listStatuses","group":"platform","title":"List platform integration statuses","summary":"Return integration configuration status and required or missing environment-variable names.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform integrations list-statuses","mcpTool":"platform_integrations_listStatuses","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.legal.getOverview","group":"platform","title":"Get legal document governance","summary":"Return legal revision metadata and legal requirement sets for platform administration.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform legal get-overview","mcpTool":"platform_legal_getOverview","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.legalRequirementSets.activate","group":"platform","title":"Activate a legal requirement set","summary":"Activate a draft requirement set, assign its next version, retire prior active sets for the same scope, and return null.","tiers":["platform"],"kind":"mutation","risk":"bulk","riskFlags":["destructive"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":true,"cli":"keyvra platform legal-requirement-sets activate","mcpTool":"platform_legalRequirementSets_activate","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reviewReference":{"type":"string"},"setId":{"type":"string","x-convex-table":"legalRequirementSets"}},"required":["reviewReference","setId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"platform.legalRequirementSets.create","group":"platform","title":"Create a legal requirement set","summary":"Create a draft legal requirement set for a product surface and jurisdiction and return its ID.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform legal-requirement-sets create","mcpTool":"platform_legalRequirementSets_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"acceptanceMode":{"anyOf":[{"const":"once_per_version"},{"const":"each_transaction"}]},"attestationRevisionId":{"type":"string","x-convex-table":"legalDocumentRevisions"},"documentRevisionIds":{"type":"array","items":{"type":"string","x-convex-table":"legalDocumentRevisions"}},"jurisdiction":{"type":"string"},"reviewReference":{"type":"string"},"surface":{"anyOf":[{"const":"marketplace_purchase"},{"const":"host_publication"}]}},"required":["acceptanceMode","documentRevisionIds","jurisdiction","reviewReference","surface"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"legalRequirementSets"}},{"id":"platform.legalRequirementSets.retire","group":"platform","title":"Retire a legal requirement set","summary":"Retire a requirement set while preserving its historical record, then return null.","tiers":["platform"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":true,"cli":"keyvra platform legal-requirement-sets retire","mcpTool":"platform_legalRequirementSets_retire","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reviewReference":{"type":"string"},"setId":{"type":"string","x-convex-table":"legalRequirementSets"}},"required":["reviewReference","setId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"platform.legalRevisions.approve","group":"platform","title":"Approve a legal revision","summary":"Approve and freeze a bilingual draft legal revision after verifying its stored text fingerprints, then return null.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform legal-revisions approve","mcpTool":"platform_legalRevisions_approve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reviewReference":{"type":"string"},"revisionId":{"type":"string","x-convex-table":"legalDocumentRevisions"}},"required":["reviewReference","revisionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"platform.legalRevisions.getText","group":"platform","title":"Get legal revision text","summary":"Return the full English and French text of a legal revision for review or draft editing.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform legal-revisions get-text","mcpTool":"platform_legalRevisions_getText","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"revisionId":{"type":"string","x-convex-table":"legalDocumentRevisions"}},"required":["revisionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.legalRevisions.retire","group":"platform","title":"Retire a legal revision","summary":"Retire an approved legal revision while preserving its text and history, then return null.","tiers":["platform"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":true,"cli":"keyvra platform legal-revisions retire","mcpTool":"platform_legalRevisions_retire","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reviewReference":{"type":"string"},"revisionId":{"type":"string","x-convex-table":"legalDocumentRevisions"}},"required":["reviewReference","revisionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"platform.legalRevisions.saveDraft","group":"platform","title":"Save a legal draft","summary":"Create a new bilingual legal revision or update an existing draft and return its revision ID.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform legal-revisions save-draft","mcpTool":"platform_legalRevisions_saveDraft","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"documentKey":{"anyOf":[{"const":"terms_of_service"},{"const":"privacy_policy"},{"const":"marketplace_terms"},{"const":"host_terms"},{"const":"business_subscription_terms"},{"const":"cancellation_refund_policy"},{"const":"acceptable_use"},{"const":"data_processing_agreement"},{"const":"host_authority_attestation"}]},"en":{"type":"object","properties":{"body":{"type":"string"},"title":{"type":"string"}},"required":["body","title"],"additionalProperties":false},"fr":{"type":"object","properties":{"body":{"type":"string"},"title":{"type":"string"}},"required":["body","title"],"additionalProperties":false},"reviewReference":{"type":"string"},"revisionId":{"type":"string","x-convex-table":"legalDocumentRevisions"}},"required":["documentKey","en","fr","reviewReference"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"legalDocumentRevisions"}},{"id":"platform.listings.approve","group":"platform","title":"Approve a marketplace listing","summary":"Approve and publish a pending listing and return its updated moderation summary.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:moderation"],"requiresApproval":false,"cli":"keyvra platform listings approve","mcpTool":"platform_listings_approve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"listingId":{"type":"string","x-convex-table":"listings"}},"required":["listingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.listings.flag","group":"platform","title":"Flag a marketplace listing","summary":"Create a moderation flag and return its audit-log ID together with the listing summary.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:moderation"],"requiresApproval":false,"cli":"keyvra platform listings flag","mcpTool":"platform_listings_flag","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"category":{"anyOf":[{"const":"prohibited_content"},{"const":"misleading"},{"const":"safety"},{"const":"pricing"},{"const":"other"}]},"listingId":{"type":"string","x-convex-table":"listings"},"note":{"type":"string"}},"required":["category","listingId","note"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.listings.list","group":"platform","title":"List marketplace moderation listings","summary":"Return listing moderation summaries filtered by search, status, featured state, and tenant, together with listing statistics.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:moderation"],"requiresApproval":false,"cli":"keyvra platform listings list","mcpTool":"platform_listings_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"featured":{"type":"boolean"},"query":{"type":"string"},"status":{"anyOf":[{"const":"all"},{"const":"pending"},{"const":"approved"},{"const":"rejected"},{"const":"changes_requested"}]},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.listings.listPending","group":"platform","title":"List pending and featured candidates","summary":"Return pending listings, approved featured candidates, and the marketplace moderation requirement setting.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:moderation"],"requiresApproval":false,"cli":"keyvra platform listings list-pending","mcpTool":"platform_listings_listPending","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.listings.reject","group":"platform","title":"Reject a marketplace listing","summary":"Reject a pending listing, remove publication and featured state, and return its updated summary.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:moderation"],"requiresApproval":false,"cli":"keyvra platform listings reject","mcpTool":"platform_listings_reject","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"listingId":{"type":"string","x-convex-table":"listings"},"reason":{"type":"string"}},"required":["listingId","reason"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.listings.requestChanges","group":"platform","title":"Request marketplace listing changes","summary":"Request changes to a pending listing, unpublish it, clear featured state, and return its updated summary.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:moderation"],"requiresApproval":false,"cli":"keyvra platform listings request-changes","mcpTool":"platform_listings_requestChanges","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"listingId":{"type":"string","x-convex-table":"listings"},"reason":{"type":"string"}},"required":["listingId","reason"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.listings.setFeatured","group":"platform","title":"Set marketplace featured placement","summary":"Enable or remove a listing's featured placement and return its updated summary.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:featured"],"requiresApproval":false,"cli":"keyvra platform listings set-featured","mcpTool":"platform_listings_setFeatured","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"isFeatured":{"type":"boolean"},"listingId":{"type":"string","x-convex-table":"listings"},"ordinal":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["isFeatured","listingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.moderationQueue.list","group":"platform","title":"List marketplace moderation reports","summary":"Return listing flags and qualifying open marketplace support reports ordered by update time.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:moderation"],"requiresApproval":false,"cli":"keyvra platform moderation-queue list","mcpTool":"platform_moderationQueue_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"category":{"anyOf":[{"const":"prohibited_content"},{"const":"misleading"},{"const":"safety"},{"const":"pricing"},{"const":"other"}]},"status":{"anyOf":[{"const":"open"},{"const":"resolved"},{"const":"dismissed"}]}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.moderationQueue.resolveFlag","group":"platform","title":"Resolve a listing flag","summary":"Mark a listing moderation flag resolved or dismissed and return its updated queue item.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:marketplace:moderation"],"requiresApproval":false,"cli":"keyvra platform moderation-queue resolve-flag","mcpTool":"platform_moderationQueue_resolveFlag","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"flagId":{"type":"string","x-convex-table":"auditLogs"},"notes":{"type":"string"},"status":{"anyOf":[{"const":"resolved"},{"const":"dismissed"}]}},"required":["flagId","notes","status"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.payouts.export","group":"platform","title":"Export payout CSV","summary":"Return payout history as CSV text with a filename and content type.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:payouts"],"requiresApproval":false,"cli":"keyvra platform payouts export","mcpTool":"platform_payouts_export","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fromMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"limit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"pending"},{"const":"paid"},{"const":"failed"},{"const":"cancelled"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"tenantQuery":{"type":"string"},"toMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.payouts.list","group":"platform","title":"List payouts","summary":"Return filtered payout summaries with tenant names, amounts, statuses, and Stripe identifiers.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:payouts"],"requiresApproval":false,"cli":"keyvra platform payouts list","mcpTool":"platform_payouts_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fromMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"limit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"pending"},{"const":"paid"},{"const":"failed"},{"const":"cancelled"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"tenantQuery":{"type":"string"},"toMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.payouts.release","group":"platform","title":"Release a payout","summary":"Attempt a Stripe Connect transfer for an existing payout and return its release outcome.","tiers":["platform"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:payouts"],"requiresApproval":true,"cli":"keyvra platform payouts release","mcpTool":"platform_payouts_release","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"payoutId":{"type":"string","x-convex-table":"payouts"}},"required":["payoutId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.payouts.releaseBatch","group":"platform","title":"Release selected payouts","summary":"Attempt Stripe Connect transfers for selected payouts and return per-payout outcomes.","tiers":["platform"],"kind":"action","risk":"financial","riskFlags":["bulk"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:payouts"],"requiresApproval":true,"cli":"keyvra platform payouts release-batch","mcpTool":"platform_payouts_releaseBatch","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"payoutIds":{"type":"array","items":{"type":"string","x-convex-table":"payouts"}}},"required":["payoutIds"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.pilotMetrics.enroll","group":"platform","title":"Enroll a pilot tenant","summary":"Create or update a tenant's pilot cohort enrollment and return its cohort ID.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:tenants:write"],"requiresApproval":false,"cli":"keyvra platform pilot-metrics enroll","mcpTool":"platform_pilotMetrics_enroll","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"enrolledAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"synthetic":{"type":"boolean"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["enrolledAt","synthetic","tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"pilotCohorts"}},{"id":"platform.pilotMetrics.getCheckoutCohort","group":"platform","title":"Get checkout cohort metrics","summary":"Return pilot checkout starts, payment outcomes, unmatched outcomes, and whether the counts are exact.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:analytics:revenue"],"requiresApproval":false,"cli":"keyvra platform pilot-metrics get-checkout-cohort","mcpTool":"platform_pilotMetrics_getCheckoutCohort","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"startAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endAt","startAt"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"declined":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"errors":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"exact":{"type":"boolean"},"paid":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"started":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unmatched":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["declined","errors","exact","paid","started","unmatched"],"additionalProperties":false}},{"id":"platform.plans.archive","group":"platform","title":"Archive a subscription plan","summary":"Mark a plan archived, inactive, and nondefault, then return its updated summary.","tiers":["platform"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:plans"],"requiresApproval":true,"cli":"keyvra platform plans archive","mcpTool":"platform_plans_archive","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planId":{"type":"string","x-convex-table":"subscriptionPlans"}},"required":["planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.plans.create","group":"platform","title":"Create a subscription plan","summary":"Create a subscription plan with prices, limits, features, and optional Stripe price mappings, then return its summary.","tiers":["platform"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:plans"],"requiresApproval":true,"cli":"keyvra platform plans create","mcpTool":"platform_plans_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"annualPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"description":{"type":"string"},"features":{"type":"object","properties":{"accessControlIntegration":{"type":"boolean"},"advancedAnalytics":{"type":"boolean"},"apiAccess":{"type":"boolean"},"calendarSync":{"type":"boolean"},"customCss":{"type":"boolean"},"customDomain":{"type":"boolean"},"customPages":{"type":"boolean"},"prioritySupport":{"type":"boolean"},"whiteLabel":{"type":"boolean"}},"required":["accessControlIntegration","advancedAnalytics","apiAccess","calendarSync","customCss","customDomain","prioritySupport","whiteLabel"],"additionalProperties":false},"isActive":{"type":"boolean"},"isDefault":{"type":"boolean"},"marketplaceCommissionBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxBookingsPerMonth":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxLocations":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxSpaces":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxUsers":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"monthlyPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"slug":{"type":"string"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"stripePriceIdAnnual":{"type":"string"},"stripePriceIdMonthly":{"type":"string"},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["annualPriceCents","currency","description","features","isActive","isDefault","maxBookingsPerMonth","maxLocations","maxSpaces","maxUsers","monthlyPriceCents","name","slug","sortOrder","trialDays"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.plans.list","group":"platform","title":"List subscription plans","summary":"Return subscription plan summaries ordered by archive status, default status, activity, sort order, and name.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:plans"],"requiresApproval":false,"cli":"keyvra platform plans list","mcpTool":"platform_plans_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"includeArchived":{"type":"boolean"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.plans.setFeature","group":"platform","title":"Set a plan feature","summary":"Enable or disable one feature on a subscription plan and return the updated plan summary.","tiers":["platform"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:plans"],"requiresApproval":true,"cli":"keyvra platform plans set-feature","mcpTool":"platform_plans_setFeature","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"featureKey":{"anyOf":[{"const":"accessControlIntegration"},{"const":"advancedAnalytics"},{"const":"apiAccess"},{"const":"calendarSync"},{"const":"customCss"},{"const":"customPages"},{"const":"customDomain"},{"const":"prioritySupport"},{"const":"whiteLabel"}]},"isEnabled":{"type":"boolean"},"planId":{"type":"string","x-convex-table":"subscriptionPlans"}},"required":["featureKey","isEnabled","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.plans.update","group":"platform","title":"Update a subscription plan","summary":"Replace a plan's editable prices, limits, features, and mappings, then return its updated summary.","tiers":["platform"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:plans"],"requiresApproval":true,"cli":"keyvra platform plans update","mcpTool":"platform_plans_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"annualPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"description":{"type":"string"},"features":{"type":"object","properties":{"accessControlIntegration":{"type":"boolean"},"advancedAnalytics":{"type":"boolean"},"apiAccess":{"type":"boolean"},"calendarSync":{"type":"boolean"},"customCss":{"type":"boolean"},"customDomain":{"type":"boolean"},"customPages":{"type":"boolean"},"prioritySupport":{"type":"boolean"},"whiteLabel":{"type":"boolean"}},"required":["accessControlIntegration","advancedAnalytics","apiAccess","calendarSync","customCss","customDomain","prioritySupport","whiteLabel"],"additionalProperties":false},"isActive":{"type":"boolean"},"isDefault":{"type":"boolean"},"marketplaceCommissionBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxBookingsPerMonth":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxLocations":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxSpaces":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxUsers":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"monthlyPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"planId":{"type":"string","x-convex-table":"subscriptionPlans"},"slug":{"type":"string"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"stripePriceIdAnnual":{"type":"string"},"stripePriceIdMonthly":{"type":"string"},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["annualPriceCents","currency","description","features","isActive","isDefault","maxBookingsPerMonth","maxLocations","maxSpaces","maxUsers","monthlyPriceCents","name","planId","slug","sortOrder","trialDays"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.privacy.download","group":"platform","title":"Download a tenant data export","summary":"Open the browser flow to download a tenant data export.","tiers":["platform"],"kind":"action","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["platform:gdpr"],"requiresApproval":true,"cli":"keyvra platform privacy download","mcpTool":"platform_privacy_download","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"jobId":{"type":"string","x-convex-table":"privacyExportJobs"},"part":{"type":"string"}},"required":["jobId","part"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.providerPayoutReversals.list","group":"platform","title":"List external payout return observations","summary":"Read the bounded inventory of account-bound transfer returns requiring audited reconciliation.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:payouts"],"requiresApproval":false,"cli":"keyvra platform provider-payout-reversals list","mcpTool":"platform_providerPayoutReversals_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"providerPayoutReversalObservations"},"accountScope":{"type":"string"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"amountKnown":{"type":"boolean"},"amountReversedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attribution":{"anyOf":[{"const":"proven"},{"const":"unproven"}]},"binding":{"type":"string"},"bookingId":{"type":"string","x-convex-table":"bookings"},"conflictingFacts":{"type":"boolean"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"destination":{"type":"string"},"payoutId":{"type":"string","x-convex-table":"payouts"},"providerEventAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reversals":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"id":{"type":"string"}},"required":["amountCents","id"],"additionalProperties":false}},"reviewState":{"anyOf":[{"const":"open"},{"const":"settled"}]},"revision":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"settlement":{"type":"object","properties":{"adminId":{"type":"string","x-convex-table":"platformAdmins"},"binding":{"type":"string"},"evidence":{"type":"string"},"operatorUserId":{"type":"string","x-convex-table":"users"},"settledAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["binding","evidence","settledAt"],"additionalProperties":false},"sourceBinding":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"transferId":{"type":"string"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","accountScope","amountCents","amountKnown","amountReversedCents","attribution","binding","conflictingFacts","createdAt","currency","destination","providerEventAt","reversals","reviewState","revision","sourceBinding","transferId","updatedAt"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"platform.providerRefunds.list","group":"platform","title":"List external provider refund reviews","summary":"Read the bounded inventory of verified provider refund observations requiring manual attribution or reconciliation.","tiers":["platform"],"kind":"query","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:payouts"],"requiresApproval":true,"cli":"keyvra platform provider-refunds list","mcpTool":"platform_providerRefunds_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.settings.get","group":"platform","title":"Get a platform setting","summary":"Return a setting's JSON string and update metadata, or null if the key does not exist.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform settings get","mcpTool":"platform_settings_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"key":{"type":"string"}},"required":["key"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.settings.getGeneral","group":"platform","title":"Get general platform settings","summary":"Return platform branding, support email, booking alert threshold, and maintenance settings with defaults applied.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform settings get-general","mcpTool":"platform_settings_getGeneral","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.settings.updateGeneral","group":"platform","title":"Update general platform settings","summary":"Save platform branding, support contact, alert threshold, and maintenance configuration, then return the updated settings.","tiers":["platform"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":true,"cli":"keyvra platform settings update-general","mcpTool":"platform_settings_updateGeneral","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"brandingName":{"type":"string"},"confirmationText":{"type":"string"},"largeBookingAlertAmountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maintenanceBannerText":{"type":"string"},"maintenanceMode":{"type":"boolean"},"supportEmail":{"type":"string"}},"required":["brandingName","confirmationText","largeBookingAlertAmountCents","maintenanceBannerText","maintenanceMode","supportEmail"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.settings.updatePresentation","group":"platform","title":"Update general platform settings","summary":"Update platform branding and alert settings while preserving maintenance state in the same transaction.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:settings"],"requiresApproval":false,"cli":"keyvra platform settings update-presentation","mcpTool":"platform_settings_updatePresentation","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"brandingName":{"type":"string"},"largeBookingAlertAmountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"supportEmail":{"type":"string"}},"required":["brandingName","largeBookingAlertAmountCents","supportEmail"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"saved":{"type":"boolean"}},"required":["saved"],"additionalProperties":false}},{"id":"platform.staff.list","group":"platform","title":"List platform staff","summary":"Return platform staff identity metadata, roles, permissions, and activity timestamps.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":["authInvitationId","invitationId","authSubject"],"permissionAlternatives":[],"policy":"allow","permissions":["platform:staff"],"requiresApproval":false,"cli":"keyvra platform staff list","mcpTool":"platform_staff_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.stripeReconciliation.sync","group":"platform","title":"Refresh Stripe reconciliation","summary":"Compare current-month Stripe invoices, application fees, and transfers with internal revenue records and cache the reconciliation result.","tiers":["platform"],"kind":"action","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:payouts"],"requiresApproval":false,"cli":"keyvra platform stripe-reconciliation sync","mcpTool":"platform_stripeReconciliation_sync","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.subscriptions.cancel","group":"platform","title":"Schedule tenant subscription cancellation","summary":"Set a tenant's Stripe subscription to cancel at period end and return the provider outcome.","tiers":["platform"],"kind":"action","risk":"financial","riskFlags":["destructive"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:tenants:write"],"requiresApproval":true,"cli":"keyvra platform subscriptions cancel","mcpTool":"platform_subscriptions_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmationText":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["confirmationText","tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.subscriptions.setPlan","group":"platform","title":"Change a tenant subscription plan","summary":"Change a tenant's plan, synchronize an existing Stripe subscription, and return whether local and provider changes succeeded.","tiers":["platform"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:tenants:write"],"requiresApproval":true,"cli":"keyvra platform subscriptions set-plan","mcpTool":"platform_subscriptions_setPlan","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planId":{"type":"string","x-convex-table":"subscriptionPlans"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["planId","tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.supportTickets.assign","group":"platform","title":"Assign a support ticket","summary":"Assign or unassign a ticket's platform staff owner and return the updated ticket summary.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:support:tickets"],"requiresApproval":false,"cli":"keyvra platform support-tickets assign","mcpTool":"platform_supportTickets_assign","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"staffId":{"type":"string","x-convex-table":"platformAdmins"},"ticketId":{"type":"string","x-convex-table":"supportTickets"}},"required":["ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.supportTickets.list","group":"platform","title":"List support tickets","summary":"Return filtered ticket summaries, replies, requester details, and platform staff assignment options.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:support:tickets"],"requiresApproval":false,"cli":"keyvra platform support-tickets list","mcpTool":"platform_supportTickets_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"string"},"status":{"anyOf":[{"const":"open"},{"const":"pending"},{"const":"closed"}]}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.supportTickets.sendReply","group":"platform","title":"Reply to a support ticket","summary":"Append an administrator reply, attempt email delivery when supported, and return the updated ticket with delivery status.","tiers":["platform"],"kind":"action","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:support:tickets"],"requiresApproval":false,"cli":"keyvra platform support-tickets send-reply","mcpTool":"platform_supportTickets_sendReply","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"ticketId":{"type":"string","x-convex-table":"supportTickets"}},"required":["body","ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.supportTickets.setStatus","group":"platform","title":"Set support ticket status","summary":"Change a ticket's platform support status and return the updated summary.","tiers":["platform"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:support:tickets"],"requiresApproval":false,"cli":"keyvra platform support-tickets set-status","mcpTool":"platform_supportTickets_setStatus","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"anyOf":[{"const":"open"},{"const":"pending"},{"const":"closed"}]},"ticketId":{"type":"string","x-convex-table":"supportTickets"}},"required":["status","ticketId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.tenants.get","group":"platform","title":"Get tenant details","summary":"Return tenant configuration, staff, domains, billing history, operational metrics, deletion state, and recent activity.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":["authInvitationId","ownerInvitationId","authSubject"],"permissionAlternatives":[],"policy":"allow","permissions":["platform:tenants:read"],"requiresApproval":false,"cli":"keyvra platform tenants get","mcpTool":"platform_tenants_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.tenants.listActivity","group":"platform","title":"List tenant activity","summary":"Return up to 200 filtered tenant audit records from the last 90 days.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":["authInvitationId","ownerInvitationId"],"permissionAlternatives":[],"policy":"allow","permissions":["platform:tenants:read"],"requiresApproval":false,"cli":"keyvra platform tenants list-activity","mcpTool":"platform_tenants_listActivity","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"action":{"type":"string"},"entityType":{"type":"string"},"query":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.tenants.listPlans","group":"platform","title":"List tenant plan options","summary":"Return subscription plan options, pricing, features, and limits for tenant administration.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:tenants:read"],"requiresApproval":false,"cli":"keyvra platform tenants list-plans","mcpTool":"platform_tenants_listPlans","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.tenants.search","group":"platform","title":"Search tenants","summary":"Return up to 50 tenant summaries matching text and subscription-status filters.","tiers":["platform"],"kind":"mutation","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:tenants:read"],"requiresApproval":false,"cli":"keyvra platform tenants search","mcpTool":"platform_tenants_search","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"includeDeleted":{"type":"boolean"},"query":{"type":"string"},"status":{"anyOf":[{"const":"trialing"},{"const":"active"},{"const":"past_due"},{"const":"canceled"},{"const":"suspended"}]}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.tenants.setPlan","group":"platform","title":"Set a tenant's local plan","summary":"Change a tenant's local plan assignment and return updated tenant details.","tiers":["platform"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":["authInvitationId","ownerInvitationId","authSubject"],"permissionAlternatives":[],"policy":"allow","permissions":["platform:tenants:write"],"requiresApproval":true,"cli":"keyvra platform tenants set-plan","mcpTool":"platform_tenants_setPlan","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planId":{"type":"string","x-convex-table":"subscriptionPlans"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["planId","tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.tenants.suspend","group":"platform","title":"Suspend a tenant","summary":"Suspend tenant operational access and return updated tenant details.","tiers":["platform"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":["authInvitationId","ownerInvitationId","authSubject"],"permissionAlternatives":[],"policy":"allow","permissions":["platform:tenants:write"],"requiresApproval":true,"cli":"keyvra platform tenants suspend","mcpTool":"platform_tenants_suspend","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmationText":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["confirmationText","tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.tenants.unsuspend","group":"platform","title":"Unsuspend a tenant","summary":"Clear tenant suspension, restore the saved subscription status, and return updated tenant details.","tiers":["platform"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":["authInvitationId","ownerInvitationId","authSubject"],"permissionAlternatives":[],"policy":"allow","permissions":["platform:tenants:write"],"requiresApproval":true,"cli":"keyvra platform tenants unsuspend","mcpTool":"platform_tenants_unsuspend","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.users.get","group":"platform","title":"Get user details","summary":"Return a consolidated user profile, workspace memberships, active-session timestamps, and recent related audit events.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:staff"],"requiresApproval":false,"cli":"keyvra platform users get","mcpTool":"platform_users_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"key":{"type":"string"}},"required":["key"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.users.list","group":"platform","title":"List users","summary":"Return paginated consolidated users with roles, memberships, status, activity, and tenant filter options.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:staff"],"requiresApproval":false,"cli":"keyvra platform users list","mcpTool":"platform_users_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"direction":{"anyOf":[{"const":"asc"},{"const":"desc"}]},"page":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pageSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"platformRole":{"anyOf":[{"anyOf":[{"const":"super_admin"},{"const":"support"},{"const":"finance"},{"const":"marketing"}]},{"const":"none"}]},"search":{"type":"string"},"sort":{"anyOf":[{"const":"name"},{"const":"email"},{"const":"createdAt"},{"const":"lastActivityAt"}]},"status":{"anyOf":[{"const":"active"},{"const":"invited"},{"const":"suspended"},{"const":"removed"}]},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.users.listPermissions","group":"platform","title":"List user permission definitions","summary":"Return platform and tenant role permission maps plus active tenant custom-role definitions.","tiers":["platform"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:staff"],"requiresApproval":false,"cli":"keyvra platform users list-permissions","mcpTool":"platform_users_listPermissions","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"platform.users.updateProfile","group":"platform","title":"Update a user profile","summary":"Update a user's name and phone across provider and local identity records, returning null.","tiers":["platform"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["platform:staff"],"requiresApproval":true,"cli":"keyvra platform users update-profile","mcpTool":"platform_users_updateProfile","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"phone":{"type":"string"}},"required":["key","name"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"portal.billing.get","group":"portal","title":"Get member billing","summary":"Return the caller's booking and membership invoices with currency-separated totals and history-limit indicators.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal billing get","mcpTool":"portal_billing_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"portal.bookingRequests.create","group":"portal","title":"Create a member booking request","summary":"Create a space approval request for the caller's existing tenant membership.","tiers":["member"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal booking-requests create","mcpTool":"portal_bookingRequests_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"note":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","endMs","note","offerId","offerVersion","requestKey","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"bookingRequests"}},{"id":"portal.bookingRequests.get","group":"portal","title":"Get booking approval status","summary":"Return the caller-owned booking request's status, expiry, offer selection, time window, and amount.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal booking-requests get","mcpTool":"portal_bookingRequests_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"requestId":{"type":"string","x-convex-table":"bookingRequests"}},"required":["requestId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"currency":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestId":{"type":"string","x-convex-table":"bookingRequests"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"}},"required":["amountCents","channelId","currency","endMs","expiresAt","offerId","offerVersion","requestId","startMs","status"],"additionalProperties":false}},{"id":"portal.bookingRequests.list","group":"portal","title":"List member booking requests","summary":"Return the caller's recent booking requests and checkout paths for live approved space requests.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal booking-requests list","mcpTool":"portal_bookingRequests_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"checkoutPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"request":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"bookingRequests"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"apiReviewedTerms":{"type":"string"},"bookingId":{"type":"string","x-convex-table":"bookings"},"bufferMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"decidedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"decidedBy":{"type":"string","x-convex-table":"users"},"decidedByApiKeyRef":{"type":"string"},"decisionReason":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"note":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"purchaseId":{"type":"string","x-convex-table":"dayPasses"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"requestedByApiKeyRef":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"pending"},{"const":"approved"},{"const":"declined"},{"const":"expired"},{"const":"consumed"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"title":{"type":"string"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","bufferMs","channelId","components","createdAt","currency","endMs","expiresAt","memberId","note","offerId","offerVersion","requestKey","resourceId","startMs","status","tenantId","title","updatedAt"],"additionalProperties":false}},"required":["checkoutPath","request"],"additionalProperties":false}}},{"id":"portal.bookings.cancel","group":"portal","title":"Cancel a member booking","summary":"Cancel the caller's tenant booking, apply its cancellation policy, and return the refund outcome.","tiers":["member"],"kind":"mutation","risk":"financial","riskFlags":["destructive"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-cancel","booking-read","space-read"],"requiresApproval":true,"cli":"keyvra portal bookings cancel","mcpTool":"portal_bookings_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"type":"string","x-convex-table":"bookings"}},"required":["bookingId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"portal.bookings.list","group":"portal","title":"List portal bookings","summary":"Return the caller's upcoming and past tenant bookings with related invoice and add-on details.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal bookings list","mcpTool":"portal_bookings_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"portal.commerce.checkout","group":"portal","title":"Open commerce checkout","summary":"Reserve checkout for an owned event registration or pass and return a Stripe checkout URL or an unavailable reason.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra portal commerce checkout","mcpTool":"portal_commerce_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"target":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"eventRegistrations"},"kind":{"const":"event"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"dayPasses"},"kind":{"const":"pass"}},"required":["id","kind"],"additionalProperties":false}]}},"required":["target"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"portal.commerce.checkoutEvents","group":"portal","title":"Open commerce checkout","summary":"Reserve checkout for an owned event registration or pass and return a Stripe checkout URL or an unavailable reason.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra portal commerce checkout-events","mcpTool":"portal_commerce_checkoutEvents","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"portal.commerce.checkoutPasses","group":"portal","title":"Open commerce checkout","summary":"Reserve checkout for an owned event registration or pass and return a Stripe checkout URL or an unavailable reason.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra portal commerce checkout-passes","mcpTool":"portal_commerce_checkoutPasses","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"portal.commerce.checkoutRentals","group":"portal","title":"Open commerce checkout","summary":"Reserve checkout for an owned event registration or pass and return a Stripe checkout URL or an unavailable reason.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra portal commerce checkout-rentals","mcpTool":"portal_commerce_checkoutRentals","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"portal.commerce.listPayments","group":"portal","title":"List own commerce payments","summary":"Return up to 100 recent checkout summaries for the caller's tenant membership and whether card checkout is configured.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["sessionUrl","sessionId"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal commerce list-payments","mcpTool":"portal_commerce_listPayments","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cardAvailable":{"type":"boolean"},"checkouts":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"checkoutId":{"type":"string","x-convex-table":"commerceCheckouts"},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"state":{"type":"string"},"target":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"eventRegistrations"},"kind":{"const":"event"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"dayPasses"},"kind":{"const":"pass"}},"required":["id","kind"],"additionalProperties":false}]}},"required":["amountCents","checkoutId","currency","expiresAt","refundedCents","state","target"],"additionalProperties":false}}},"required":["cardAvailable","checkouts"],"additionalProperties":false}},{"id":"portal.communications.getPreferences","group":"portal","title":"Get communication preferences","summary":"Return the member's newsletter and community consent, language, and preference version.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal communications get-preferences","mcpTool":"portal_communications_getPreferences","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"community":{"type":"boolean"},"locale":{"anyOf":[{"const":"en"},{"const":"fr"}]},"newsletter":{"type":"boolean"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["community","locale","newsletter","version"],"additionalProperties":false}},{"id":"portal.communications.setPreferences","group":"portal","title":"Set communication preferences","summary":"Save the member's newsletter and community consent and language, then return null.","tiers":["member"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal communications set-preferences","mcpTool":"portal_communications_setPreferences","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"community":{"type":"boolean"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"locale":{"anyOf":[{"const":"en"},{"const":"fr"}]},"newsletter":{"type":"boolean"}},"required":["community","expectedVersion","locale","newsletter"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"portal.community.download","group":"portal","title":"Download a member community document","summary":"Open the browser flow to download a member community document.","tiers":["member"],"kind":"action","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal community download","mcpTool":"portal_community_download","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"postId":{"type":"string","x-convex-table":"communityPosts"}},"required":["postId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"portal.community.listPosts","group":"portal","title":"List member community posts","summary":"Return published community posts matching the caller's membership audience, with attachment metadata and read receipts.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal community list-posts","mcpTool":"portal_community_listPosts","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_id":{"type":"string","x-convex-table":"communityPosts"},"bodyEn":{"type":"string"},"bodyFr":{"type":"string"},"document":{"anyOf":[{"type":"null"},{"type":"object","properties":{"contentType":{"type":"string"},"fileName":{"type":"string"},"size":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["contentType","fileName","size"],"additionalProperties":false}]},"publishedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"readAt":{"anyOf":[{"type":"null"},{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}]},"titleEn":{"type":"string"},"titleFr":{"type":"string"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_id","bodyEn","bodyFr","document","publishedAt","readAt","titleEn","titleFr","version"],"additionalProperties":false}},"timezone":{"type":"string"}},"required":["continueCursor","isDone","page","timezone"],"additionalProperties":false}},{"id":"portal.community.markPostRead","group":"portal","title":"Mark member post read","summary":"Record that the caller read the current version of an eligible published community post.","tiers":["member"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal community mark-post-read","mcpTool":"portal_community_markPostRead","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"postId":{"type":"string","x-convex-table":"communityPosts"}},"required":["expectedVersion","postId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"portal.dashboard.get","group":"portal","title":"Get member portal dashboard","summary":"Return the caller's bookings, memberships, benefits, balances, invoices, events, announcements, and truncation flags.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal dashboard get","mcpTool":"portal_dashboard_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"portal.eventRegistrations.cancel","group":"portal","title":"Cancel event registration","summary":"Cancel the caller's event registration and refresh the event waitlist.","tiers":["member"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal event-registrations cancel","mcpTool":"portal_eventRegistrations_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"registrationId":{"type":"string","x-convex-table":"eventRegistrations"}},"required":["registrationId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"portal.eventRegistrations.create","group":"portal","title":"Register for an event","summary":"Create an event registration for the caller, possibly waitlisted or awaiting payment.","tiers":["member"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal event-registrations create","mcpTool":"portal_eventRegistrations_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"eventId":{"type":"string","x-convex-table":"eventSessions"},"requestKey":{"type":"string"}},"required":["eventId","requestKey"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"eventRegistrations"}},{"id":"portal.installmentPayments.cancel","group":"portal","title":"Cancel a installment payment","summary":"Confirm provider cancellation before releasing the hold or collection.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal installment-payments cancel","mcpTool":"portal_installmentPayments_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"portal.installmentPayments.get","group":"portal","title":"Get a installment payment","summary":"Read settlement and refund state recorded by the existing domain handler.","tiers":["member"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal installment-payments get","mcpTool":"portal_installmentPayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"portal.installmentPayments.pay","group":"portal","title":"Pay a installment payment","summary":"Pay the frozen obligation with a shared payment token or return a signed human checkout handoff.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal installment-payments pay","mcpTool":"portal_installmentPayments_pay","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"sharedPaymentToken":{"type":"string"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"portal.installmentPayments.quote","group":"portal","title":"Quote a installment payment","summary":"Preview the saved amount, connected account profile and available payment modes.","tiers":["member"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal installment-payments quote","mcpTool":"portal_installmentPayments_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"installmentKey":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["installmentKey","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricingHash":{"type":"string"},"provisional":{"type":"boolean"}},"required":["amountCents","applicationFeeCents","currency","modes","networkId","pricingHash","provisional"],"additionalProperties":false}},{"id":"portal.installmentPayments.recover","group":"portal","title":"Recover a installment payment","summary":"Reconcile the original payment without creating a replacement charge.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal installment-payments recover","mcpTool":"portal_installmentPayments_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"portal.installmentPayments.reserve","group":"portal","title":"Reserve a installment payment","summary":"Freeze the owned commercial obligation before delegating a one-time payment.","tiers":["member"],"kind":"mutation","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal installment-payments reserve","mcpTool":"portal_installmentPayments_reserve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedPricingHash":{"type":"string"},"installmentKey":{"type":"string"},"planId":{"type":"string","x-convex-table":"invoicePaymentPlans"}},"required":["expectedPricingHash","installmentKey","planId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"breakdown":{"type":"object","properties":{"addOnCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"discountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"type":"string"},"taxRateName":{"type":"string"},"taxableSubtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["addOnCents","benefitCents","creditCents","discountCents","subtotalCents","taxCents","taxInclusive","taxRateBps","taxRateName","taxableSubtotalCents","totalCents"],"additionalProperties":false},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"handoffUrl":{"type":"string"},"payment":{"type":"object","properties":{"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sptRequirements":{"anyOf":[{"type":"null"},{"type":"object","properties":{"currency":{"type":"string"},"expiresAtMinimum":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAtRecommended":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxAmount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["currency","expiresAtMinimum","expiresAtRecommended","maxAmount"],"additionalProperties":false}]}},"required":["modes","networkId","sptRequirements"],"additionalProperties":false},"pricingHash":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"quoteVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"required":["id","kind"],"additionalProperties":false}},"required":["amountCents","applicationFeeCents","breakdown","currency","expiresAt","handoffUrl","payment","pricingHash","quoteId","quoteVersion","target"],"additionalProperties":false}},{"id":"portal.membershipBilling.checkout","group":"portal","title":"Open membership checkout","summary":"Create or reuse Stripe checkout for an unpaid membership and return its URL or an unavailable reason.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra portal membership-billing checkout","mcpTool":"portal_membershipBilling_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"portal.membershipBilling.openPortal","group":"portal","title":"Open membership billing portal","summary":"Create a Stripe billing portal session for a membership's payment methods and return its URL.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra portal membership-billing open-portal","mcpTool":"portal_membershipBilling_openPortal","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["expectedVersion","subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"portal.membershipBilling.update","group":"portal","title":"Change membership billing","summary":"Pause, resume or cancel recurring membership billing; return accepted and reason.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal membership-billing update","mcpTool":"portal_membershipBilling_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"transition":{"anyOf":[{"const":"pause"},{"const":"resume"},{"const":"cancel_now"},{"const":"cancel_at_end"},{"const":"keep_active"}]}},"required":["expectedVersion","subscriptionId","transition"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"accepted":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["accepted","reason"],"additionalProperties":false}},{"id":"portal.membershipPayments.checkout","group":"portal","title":"Open recurring checkout","summary":"Return the existing hosted checkout URL for the person to confirm recurring billing.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal membership-payments checkout","mcpTool":"portal_membershipPayments_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"portal.membershipPayments.get","group":"portal","title":"Read recurring payment status","summary":"Read persisted recurring billing status without collecting another payment.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal membership-payments get","mcpTool":"portal_membershipPayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paymentMode":{"const":"handoff"},"recurring":{"const":true},"status":{"type":"string"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["paymentMode","recurring","status","subscriptionId","version"],"additionalProperties":false}},{"id":"portal.membershipPayments.openPortal","group":"portal","title":"Open recurring billing portal","summary":"Return the existing hosted billing portal for the owned membership.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal membership-payments open-portal","mcpTool":"portal_membershipPayments_openPortal","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["expectedVersion","subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"configured":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["configured","reason","url"],"additionalProperties":false}},{"id":"portal.memberships.cancel","group":"portal","title":"Cancel an owned membership","summary":"Choose Stripe or manual cancellation from the persisted owned subscription, using its period end to choose immediate or scheduled cancellation.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":["destructive"],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal memberships cancel","mcpTool":"portal_memberships_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"expectedVersion":{"type":"integer"}},"required":["subscriptionId","expectedVersion"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"saved":{"const":true}},"required":["saved"],"additionalProperties":false}},{"id":"portal.memberships.cancelAtPeriodEnd","group":"portal","title":"Cancel a membership","summary":"Schedule cancellation at the paid period end, or cancel immediately when no paid period remains.","tiers":["member"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal memberships cancel-at-period-end","mcpTool":"portal_memberships_cancelAtPeriodEnd","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"}},"required":["expectedVersion","subscriptionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"portal.memberships.get","group":"portal","title":"Get memberships and benefits","summary":"Return the member's personal and seated company subscriptions and currently usable membership or pass benefits.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["stripeCheckoutUrl","subscriptions.stripeCustomerId","subscriptions.stripeSubscriptionId","subscriptions.stripePriceId","subscriptions.billingEmail","subscriptions.invoiceId","subscriptions.notes","subscriptions.billingTax","subscriptions.stripeAccountId","subscriptions.stripeCheckoutSessionId","subscriptions.stripeCheckoutAttempt","subscriptions.providerEventCreated","subscriptions.lastPaymentFailureAt","subscriptions.lastPaymentFailureInvoiceId","subscriptions.pendingPlanTax","subscriptions.stripeScheduleId","subscriptions.planSnapshot.priceCents","subscriptions.planSnapshot.seatLimit","subscriptions.pendingPlanSnapshot.priceCents","subscriptions.pendingPlanSnapshot.seatLimit"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal memberships get","mcpTool":"portal_memberships_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"benefits":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"memberBenefitGrants"},"benefitKey":{"type":"string"},"companyId":{"type":"string","x-convex-table":"companies"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"issuedQuantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"label":{"type":"string"},"ledgerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"passId":{"anyOf":[{"type":"string","x-convex-table":"dayPasses"},{"type":"null"}]},"periodStart":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"remainingQuantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"sourceKey":{"type":"string"},"subscriptionId":{"anyOf":[{"type":"string","x-convex-table":"memberSubscriptions"},{"type":"null"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["_creationTime","_id","benefitKey","createdAt","currency","expiresAt","issuedQuantity","label","memberId","periodStart","propertyIds","remainingQuantity","resourceIds","sourceKey","tenantId","unit"],"additionalProperties":false}},"subscriptions":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"memberSubscriptions"},"billingMethod":{"anyOf":[{"const":"manual_invoice"},{"const":"stripe"}]},"cancelAtPeriodEnd":{"type":"boolean"},"canceledAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"companyId":{"type":"string","x-convex-table":"companies"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"deletedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"pausedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pendingPlanEffectiveAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pendingPlanId":{"type":"string","x-convex-table":"membershipPlans"},"pendingPlanSnapshot":{"type":"object","properties":{"benefits":{"type":"array","items":{"type":"object","properties":{"expiresAfterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"label":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["key","label","propertyIds","quantity","resourceIds","unit"],"additionalProperties":false}},"currency":{"type":"string"},"description":{"type":"string"},"interval":{"anyOf":[{"const":"month"},{"const":"year"}]},"name":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["benefits","currency","description","interval","name","propertyIds"],"additionalProperties":false},"pendingPlanVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"periodEnd":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"periodStart":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"planId":{"type":"string","x-convex-table":"membershipPlans"},"planSnapshot":{"type":"object","properties":{"benefits":{"type":"array","items":{"type":"object","properties":{"expiresAfterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"label":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["key","label","propertyIds","quantity","resourceIds","unit"],"additionalProperties":false}},"currency":{"type":"string"},"description":{"type":"string"},"interval":{"anyOf":[{"const":"month"},{"const":"year"}]},"name":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["benefits","currency","description","interval","name","propertyIds"],"additionalProperties":false},"planVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"sourceQuoteId":{"type":"string","x-convex-table":"salesQuotes"},"status":{"anyOf":[{"const":"pending"},{"const":"trialing"},{"const":"active"},{"const":"past_due"},{"const":"paused"},{"const":"canceled"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"trialUsed":{"type":"boolean"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","billingMethod","cancelAtPeriodEnd","createdAt","memberId","planId","planSnapshot","planVersion","status","tenantId","updatedAt","version"],"additionalProperties":false}},"tenant":{"type":"object","properties":{"currency":{"type":"string"},"name":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"timezone":{"type":"string"}},"required":["currency","name","tenantId","timezone"],"additionalProperties":false}},"required":["benefits","subscriptions","tenant"],"additionalProperties":false}},{"id":"portal.passes.create","group":"portal","title":"Purchase a pass","summary":"Reserve a pass for the caller's tenant membership and return its ID.","tiers":["member"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal passes create","mcpTool":"portal_passes_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"requestKey":{"type":"string"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","expectedVersion","offerId","requestKey","validFrom"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"dayPasses"}},{"id":"portal.passes.redeem","group":"portal","title":"Redeem a pass","summary":"Check the caller in using an active pass and return the redemption ID.","tiers":["member"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal passes redeem","mcpTool":"portal_passes_redeem","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"passId":{"type":"string","x-convex-table":"dayPasses"},"requestKey":{"type":"string"}},"required":["passId","requestKey"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"passRedemptions"}},{"id":"portal.profile.get","group":"portal","title":"Get member portal profile","summary":"Return the caller's tenant member profile, groups, company name, and reminder preferences.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal profile get","mcpTool":"portal_profile_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"portal.profile.save","group":"portal","title":"Save portal profile preferences","summary":"Normalize profile fields and suppress SMS reminders when SMS is unavailable or no phone is present.","tiers":["member"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal profile save","mcpTool":"portal_profile_save","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2},"phone":{"type":["string","null"]},"emailReminders":{"type":"boolean"},"smsReminders":{"type":"boolean"}},"required":["name","phone","emailReminders","smsReminders"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"saved":{"const":true}},"required":["saved"],"additionalProperties":false}},{"id":"portal.profile.status","group":"portal","title":"Get portal profile and SMS availability","summary":"Read the member profile and server SMS capability state.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal profile status","mcpTool":"portal_profile_status","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"result":{"type":"object","properties":{"companyName":{"type":["string","null"]},"groups":{"type":"array","items":{"type":"string"}},"member":{"anyOf":[{"type":"null"},{"type":"object","properties":{"email":{"type":"string"},"memberId":{"type":"string","x-convex-table":"members"},"name":{"type":"string"},"phone":{"type":["string","null"]}},"required":["email","memberId","name","phone"],"additionalProperties":false}]},"portalPreferences":{"type":"object","properties":{"emailReminders":{"type":"boolean"},"smsReminders":{"type":"boolean"}},"required":["emailReminders","smsReminders"],"additionalProperties":false},"tenant":{"type":"object","properties":{"currency":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"timezone":{"type":"string"}},"required":["currency","name","slug","timezone"],"additionalProperties":false}},"required":["groups","member","portalPreferences","tenant"],"additionalProperties":false},"smsConfigured":{"type":"boolean"},"smsSetupReason":{"type":["string","null"]}},"required":["result","smsConfigured","smsSetupReason"],"additionalProperties":false}},{"id":"portal.purchasePayments.cancel","group":"portal","title":"Cancel a purchase payment","summary":"Confirm provider cancellation before releasing the hold or collection.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal purchase-payments cancel","mcpTool":"portal_purchasePayments_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"portal.purchasePayments.get","group":"portal","title":"Get a purchase payment","summary":"Read settlement and refund state recorded by the existing domain handler.","tiers":["member"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal purchase-payments get","mcpTool":"portal_purchasePayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"portal.purchasePayments.pay","group":"portal","title":"Pay a purchase payment","summary":"Pay the frozen obligation with a shared payment token or return a signed human checkout handoff.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal purchase-payments pay","mcpTool":"portal_purchasePayments_pay","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"sharedPaymentToken":{"type":"string"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"portal.purchasePayments.quote","group":"portal","title":"Quote a purchase payment","summary":"Preview the saved amount, connected account profile and available payment modes.","tiers":["member"],"kind":"query","risk":"read","riskFlags":["read"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal purchase-payments quote","mcpTool":"portal_purchasePayments_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"target":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"eventRegistrations"},"kind":{"const":"event"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"dayPasses"},"kind":{"const":"pass"}},"required":["id","kind"],"additionalProperties":false}]}},"required":["target"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricingHash":{"type":"string"},"provisional":{"type":"boolean"}},"required":["amountCents","applicationFeeCents","currency","modes","networkId","pricingHash","provisional"],"additionalProperties":false}},{"id":"portal.purchasePayments.recover","group":"portal","title":"Recover a purchase payment","summary":"Reconcile the original payment without creating a replacement charge.","tiers":["member"],"kind":"action","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal purchase-payments recover","mcpTool":"portal_purchasePayments_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"portal.purchasePayments.reserve","group":"portal","title":"Reserve a purchase payment","summary":"Freeze the owned commercial obligation before delegating a one-time payment.","tiers":["member"],"kind":"mutation","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["sharedPaymentToken","guestCapability","clientSecret","sessionUrl","checkoutUrl","paymentMethod"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal purchase-payments reserve","mcpTool":"portal_purchasePayments_reserve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedPricingHash":{"type":"string"},"target":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","x-convex-table":"eventRegistrations"},"kind":{"const":"event"}},"required":["id","kind"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","x-convex-table":"dayPasses"},"kind":{"const":"pass"}},"required":["id","kind"],"additionalProperties":false}]}},"required":["expectedPricingHash","target"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"breakdown":{"type":"object","properties":{"addOnCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"discountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"type":"string"},"taxRateName":{"type":"string"},"taxableSubtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["addOnCents","benefitCents","creditCents","discountCents","subtotalCents","taxCents","taxInclusive","taxRateBps","taxRateName","taxableSubtotalCents","totalCents"],"additionalProperties":false},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"handoffUrl":{"type":"string"},"payment":{"type":"object","properties":{"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sptRequirements":{"anyOf":[{"type":"null"},{"type":"object","properties":{"currency":{"type":"string"},"expiresAtMinimum":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAtRecommended":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxAmount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["currency","expiresAtMinimum","expiresAtRecommended","maxAmount"],"additionalProperties":false}]}},"required":["modes","networkId","sptRequirements"],"additionalProperties":false},"pricingHash":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"quoteVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"required":["id","kind"],"additionalProperties":false}},"required":["amountCents","applicationFeeCents","breakdown","currency","expiresAt","handoffUrl","payment","pricingHash","quoteId","quoteVersion","target"],"additionalProperties":false}},{"id":"portal.purchases.list","group":"portal","title":"List member purchases","summary":"Return the caller's passes and event registrations for the selected tenant.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal purchases list","mcpTool":"portal_purchases_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"passes":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"dayPasses"},"allocationStartMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"bufferAfterMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bufferBeforeMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"fulfilledAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"inventoryAllocationVersion":{"const":1},"memberId":{"type":"string","x-convex-table":"members"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentDueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pricingUnit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]},"purchaseKind":{"anyOf":[{"const":"pass"},{"const":"rental"},{"const":"service"}]},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"returnedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"status":{"anyOf":[{"const":"pending_payment"},{"const":"active"},{"const":"redeemed"},{"const":"revoked"},{"const":"expired"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"unitPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","components","createdAt","currency","memberId","name","offerId","offerVersion","paymentDueAt","requestKey","resourceId","status","tenantId","updatedAt","validFrom","validUntil"],"additionalProperties":false}},"registrations":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"eventRegistrations"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attendedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"eventId":{"type":"string","x-convex-table":"eventSessions"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"memberId":{"type":"string","x-convex-table":"members"},"paymentDueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentRevokedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"status":{"anyOf":[{"const":"waitlisted"},{"const":"pending_payment"},{"const":"confirmed"},{"const":"attended"},{"const":"cancelled"},{"const":"expired"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","createdAt","currency","eventId","memberId","requestKey","status","tenantId","updatedAt"],"additionalProperties":false}}},"required":["passes","registrations"],"additionalProperties":false}},{"id":"portal.quotes.accept","group":"portal","title":"Accept saved quote terms","summary":"Record version-bound recipient acceptance evidence and convert the quote without charging.","tiers":["member"],"kind":"mutation","risk":"financial","riskFlags":["financial","write"],"resultRedactions":["acceptanceEvidence","sharedPaymentToken","sessionUrl","checkoutUrl"],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal quotes accept","mcpTool":"portal_quotes_accept","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"evidence":{"type":"string"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"quoteId":{"type":"string","x-convex-table":"salesQuotes"},"termsAccepted":{"type":"boolean"},"termsVersion":{"type":"string"}},"required":["evidence","expectedVersion","quoteId","termsAccepted","termsVersion"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bookingId":{"anyOf":[{"type":"string","x-convex-table":"bookings"},{"type":"null"}]},"handoffUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"invoiceId":{"anyOf":[{"type":"string","x-convex-table":"invoices"},{"type":"null"}]},"paymentMode":{"type":"string"},"planId":{"anyOf":[{"type":"string","x-convex-table":"invoicePaymentPlans"},{"type":"null"}]},"quoteId":{"type":"string","x-convex-table":"salesQuotes"},"subscriptionId":{"anyOf":[{"type":"string","x-convex-table":"memberSubscriptions"},{"type":"null"}]}},"required":["bookingId","handoffUrl","invoiceId","paymentMode","planId","quoteId","subscriptionId"],"additionalProperties":false}},{"id":"portal.quotes.get","group":"portal","title":"Get own quote","summary":"Return a sent or accepted quote for its verified recipient.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal quotes get","mcpTool":"portal_quotes_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"quoteId":{"type":"string","x-convex-table":"salesQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"salesQuotes"},"acceptanceEvidence":{"type":"string"},"acceptedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"acceptedByMemberId":{"type":"string","x-convex-table":"members"},"acceptedByUserId":{"type":"string","x-convex-table":"users"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"convertedBookingId":{"type":"string","x-convex-table":"bookings"},"convertedSubscriptionId":{"type":"string","x-convex-table":"memberSubscriptions"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"depositCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"invoiceId":{"type":"string","x-convex-table":"invoices"},"leadId":{"type":"string","x-convex-table":"salesLeads"},"memberId":{"type":"string","x-convex-table":"members"},"note":{"type":"string"},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"status":{"anyOf":[{"const":"draft"},{"const":"sent"},{"const":"accepted"},{"const":"canceled"}]},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"anyOf":[{"type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"const":"booking"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"snapshot":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"capturedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"currency":{"type":"string"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"remoteFulfillmentPolicy":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"rules":{"type":"object","properties":{"bufferMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"horizonDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"leadMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberOnly":{"type":"boolean"},"minimumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"passValidityMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"}},"required":["bufferMinutes","horizonDays","leadMinutes","memberOnly","minimumMinutes","requiresApproval"],"additionalProperties":false},"terms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","capturedAt","channelId","currency","name","offerId","quantity","resourceId","rules","terms","version"],"additionalProperties":false},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","endMs","kind","offerId","offerVersion","snapshot","spaceId","startMs"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"membership"},"planId":{"type":"string","x-convex-table":"membershipPlans"},"planVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"snapshot":{"type":"object","properties":{"benefits":{"type":"array","items":{"type":"object","properties":{"expiresAfterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"label":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["key","label","propertyIds","quantity","resourceIds","unit"],"additionalProperties":false}},"currency":{"type":"string"},"description":{"type":"string"},"interval":{"anyOf":[{"const":"month"},{"const":"year"}]},"name":{"type":"string"},"priceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"seatLimit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["benefits","currency","description","interval","name","priceCents","propertyIds","seatLimit"],"additionalProperties":false}},"required":["kind","planId","planVersion","snapshot"],"additionalProperties":false}]},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxRateName":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"title":{"type":"string"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","benefitCents","createdAt","currency","depositCents","expiresAt","leadId","memberId","note","salesChannel","status","subtotalCents","target","taxCents","taxInclusive","taxRateBps","taxRateId","taxRateName","tenantId","title","totalCents","updatedAt","version"],"additionalProperties":false}},{"id":"portal.resourcePurchases.cancel","group":"portal","title":"Cancel a rental or service purchase","summary":"Revoke the caller's unpaid or free active purchase and release its inventory allocations.","tiers":["member"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal resource-purchases cancel","mcpTool":"portal_resourcePurchases_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"purchaseId":{"type":"string","x-convex-table":"dayPasses"}},"required":["purchaseId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"portal.resourcePurchases.create","group":"portal","title":"Purchase a rental or service","summary":"Reserve a rental or service for the caller and return its purchase ID.","tiers":["member"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra portal resource-purchases create","mcpTool":"portal_resourcePurchases_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"channelId":{"type":"string","x-convex-table":"channels"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","expectedVersion","offerId","quantity","requestKey","validFrom","validUntil"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"dayPasses"}},{"id":"portal.resourcePurchases.list","group":"portal","title":"List member rentals and services","summary":"Return the caller's recent rental and service purchases for the selected tenant.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal resource-purchases list","mcpTool":"portal_resourcePurchases_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"dayPasses"},"allocationStartMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"bufferAfterMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bufferBeforeMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"fulfilledAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"inventoryAllocationVersion":{"const":1},"memberId":{"type":"string","x-convex-table":"members"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentDueAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"pricingUnit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]},"purchaseKind":{"anyOf":[{"const":"pass"},{"const":"rental"},{"const":"service"}]},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"returnedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"salesChannel":{"anyOf":[{"const":"direct"},{"const":"marketplace"}]},"status":{"anyOf":[{"const":"pending_payment"},{"const":"active"},{"const":"redeemed"},{"const":"revoked"},{"const":"expired"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"unitPriceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","components","createdAt","currency","memberId","name","offerId","offerVersion","paymentDueAt","requestKey","resourceId","status","tenantId","updatedAt","validFrom","validUntil"],"additionalProperties":false}}},{"id":"portal.resourcePurchases.quote","group":"portal","title":"Quote a rental or service","summary":"Return current price, tax, units, quantity, time window, and approval requirement for a member purchase.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal resource-purchases quote","mcpTool":"portal_resourcePurchases_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","expectedVersion","offerId","quantity","validFrom","validUntil"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"name":{"type":"string"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requiresApproval":{"type":"boolean"},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"unit":{"type":"string"},"units":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","currency","name","quantity","requiresApproval","tax","unit","units","validFrom","validUntil"],"additionalProperties":false}},{"id":"portal.resourceRequests.create","group":"portal","title":"Request rental or service approval","summary":"Create an approval request for the caller's selected rental or service window and quantity.","tiers":["member"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal resource-requests create","mcpTool":"portal_resourceRequests_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"note":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"validFrom":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"validUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","expectedVersion","note","offerId","quantity","requestKey","validFrom","validUntil"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","x-convex-table":"bookingRequests"}},{"id":"portal.resourceRequests.list","group":"portal","title":"List rental and service requests","summary":"Return the caller's recent approval requests that do not target a space.","tiers":["member"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra portal resource-requests list","mcpTool":"portal_resourceRequests_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"bookingRequests"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"apiReviewedTerms":{"type":"string"},"bookingId":{"type":"string","x-convex-table":"bookings"},"bufferMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"components":{"type":"array","items":{"type":"object","properties":{"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"}},"required":["quantity","resourceId"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"decidedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"decidedBy":{"type":"string","x-convex-table":"users"},"decidedByApiKeyRef":{"type":"string"},"decisionReason":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberId":{"type":"string","x-convex-table":"members"},"note":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"purchaseId":{"type":"string","x-convex-table":"dayPasses"},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"requestKey":{"type":"string"},"requestedByApiKeyRef":{"type":"string"},"resourceId":{"type":"string","x-convex-table":"resources"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"pending"},{"const":"approved"},{"const":"declined"},{"const":"expired"},{"const":"consumed"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"title":{"type":"string"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","bufferMs","channelId","components","createdAt","currency","endMs","expiresAt","memberId","note","offerId","offerVersion","requestKey","resourceId","startMs","status","tenantId","title","updatedAt"],"additionalProperties":false}}},{"id":"privacy.exports.download","group":"privacy","title":"Download a personal data export","summary":"Open the browser flow to download a personal data export.","tiers":["operator"],"kind":"action","risk":"bulk","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":["member-read","member-export"],"requiresApproval":true,"cli":"keyvra privacy exports download","mcpTool":"privacy_exports_download","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"jobId":{"type":"string","x-convex-table":"privacyExportJobs"},"part":{"type":"string"}},"required":["jobId","part"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"reports.bookings.get","group":"reports","title":"Get booking report","summary":"Return booking summaries, trends, status funnel, lead times, peak hours and booking rows.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["confirmationId"],"permissionAlternatives":[],"policy":"allow","permissions":["report-read"],"requiresApproval":false,"cli":"keyvra reports bookings get","mcpTool":"reports_bookings_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"compare":{"type":"boolean"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyId":{"type":"string","x-convex-table":"properties"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"reports.datasets.export","group":"reports","title":"Export a report dataset","summary":"Return structured rows for an overview, revenue, bookings, occupancy or members dataset.","tiers":["operator"],"kind":"mutation","risk":"bulk","riskFlags":[],"resultRedactions":["confirmationId"],"permissionAlternatives":[],"policy":"allow","permissions":["report-read"],"requiresApproval":true,"cli":"keyvra reports datasets export","mcpTool":"reports_datasets_export","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"compare":{"type":"boolean"},"dataset":{"anyOf":[{"const":"overview"},{"const":"revenue"},{"const":"bookings"},{"const":"occupancy"},{"const":"members"}]},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"groupBy":{"anyOf":[{"const":"day"},{"const":"week"},{"const":"month"}]},"propertyId":{"type":"string","x-convex-table":"properties"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["dataset","endMs","groupBy","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"reports.filters.options","group":"reports","title":"Get report filter options","summary":"Return active tenant property and space IDs and labels for report filtering.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read"],"requiresApproval":false,"cli":"keyvra reports filters options","mcpTool":"reports_filters_options","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"reports.financialCollections.get","group":"reports","title":"Get financial collection totals","summary":"Return currency-separated payment, refund, credit-note and fee totals, unknown-date totals and ledger readiness.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra reports financial-collections get","mcpTool":"reports_financialCollections_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"ready":{"type":"boolean"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"timeZone":{"const":"UTC"},"totals":{"type":"array","items":{"type":"object","properties":{"creditNotesCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"entries":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"legacyDateEntries":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"netCashCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentsCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"platformFeesCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundsCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["creditNotesCents","currency","entries","legacyDateEntries","netCashCents","paymentsCents","platformFeesCents","refundsCents"],"additionalProperties":false}},"unknownDateTotals":{"type":"array","items":{"type":"object","properties":{"creditNotesCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"entries":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"legacyDateEntries":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"netCashCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paymentsCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"platformFeesCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"refundsCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["creditNotesCents","currency","entries","legacyDateEntries","netCashCents","paymentsCents","platformFeesCents","refundsCents"],"additionalProperties":false}}},"required":["endMs","ready","startMs","timeZone","totals","unknownDateTotals"],"additionalProperties":false}},{"id":"reports.financialEntries.list","group":"reports","title":"List financial entries","summary":"Return paginated financial-ledger entries for a time range or entries with unknown transaction dates.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra reports financial-entries list","mcpTool":"reports_financialEntries_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unknownDates":{"type":"boolean"}},"required":["endMs","paginationOpts","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"financialLedger"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"category":{"anyOf":[{"const":"booking"},{"const":"membership"},{"const":"event"},{"const":"pass"},{"const":"rental"},{"const":"service"},{"const":"installment"},{"const":"unapplied"}]},"currency":{"type":"string"},"dateSource":{"anyOf":[{"const":"provider_event"},{"const":"api_confirmation"},{"const":"verified_recording"},{"const":"manual_verification"},{"const":"legacy_recorded"},{"const":"legacy_unknown"}]},"kind":{"anyOf":[{"const":"payment"},{"const":"refund"},{"const":"credit_note"},{"const":"platform_fee"}]},"occurredAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"recordedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"source":{"anyOf":[{"const":"invoices"},{"const":"membershipInvoices"},{"const":"commerceReceipts"},{"const":"commerceCheckouts"},{"const":"invoicePaymentReceipts"},{"const":"creditNotes"},{"const":"invoicePaymentCollections"}]},"sourceId":{"type":"string"},"sourceKey":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["_creationTime","_id","amountCents","category","currency","dateSource","kind","occurredAt","recordedAt","source","sourceId","sourceKey","tenantId"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"reports.members.get","group":"reports","title":"Get member report","summary":"Return member activity, growth series, company usage and revenue summaries.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read"],"requiresApproval":false,"cli":"keyvra reports members get","mcpTool":"reports_members_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"compare":{"type":"boolean"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyId":{"type":"string","x-convex-table":"properties"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"reports.occupancy.get","group":"reports","title":"Get occupancy report","summary":"Return space/property utilization, attendance, occupancy estimates, arrivals and coverage metadata.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read"],"requiresApproval":false,"cli":"keyvra reports occupancy get","mcpTool":"reports_occupancy_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"compare":{"type":"boolean"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyId":{"type":"string","x-convex-table":"properties"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"reports.overview.get","group":"reports","title":"Get report overview","summary":"Return booking, member, revenue and utilization KPIs, revenue trends, heatmap and top spaces.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read"],"requiresApproval":false,"cli":"keyvra reports overview get","mcpTool":"reports_overview_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"compare":{"type":"boolean"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyId":{"type":"string","x-convex-table":"properties"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"reports.portfolio.get","group":"reports","title":"Get portfolio report","summary":"Compare all tenant properties using bookings, net revenue and utilization, grouped by currency.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read"],"requiresApproval":false,"cli":"keyvra reports portfolio get","mcpTool":"reports_portfolio_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"compare":{"type":"boolean"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"compare":{"type":"boolean"},"groups":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"rows":{"type":"array","items":{"type":"object","properties":{"availableHours":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bookedHours":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bookingCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"netRevenueCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"otherCurrencyRevenue":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"netRevenueCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["currency","netRevenueCents"],"additionalProperties":false}},"previous":{"anyOf":[{"type":"object","properties":{"availableHours":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bookedHours":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bookingCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"netRevenueCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"utilizationPct":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]}},"required":["availableHours","bookedHours","bookingCount","netRevenueCents","utilizationPct"],"additionalProperties":false},{"type":"null"}]},"property":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"region":{"anyOf":[{"type":"string"},{"type":"null"}]},"regionId":{"anyOf":[{"type":"string","x-convex-table":"regions"},{"type":"null"}]},"utilizationPct":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]}},"required":["availableHours","bookedHours","bookingCount","currency","netRevenueCents","otherCurrencyRevenue","previous","property","propertyId","region","regionId","utilizationPct"],"additionalProperties":false}},"totals":{"type":"object","properties":{"availableHours":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bookedHours":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"bookingCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"netRevenueCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"previousNetRevenueCents":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"utilizationPct":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]}},"required":["availableHours","bookedHours","bookingCount","netRevenueCents","previousNetRevenueCents","utilizationPct"],"additionalProperties":false}},"required":["currency","rows","totals"],"additionalProperties":false}},"propertyCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"range":{"type":"object","properties":{"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","startMs"],"additionalProperties":false},"revenueMayBeIncomplete":{"type":"boolean"},"rowsMayBeIncomplete":{"type":"boolean"}},"required":["compare","groups","propertyCount","range","revenueMayBeIncomplete","rowsMayBeIncomplete"],"additionalProperties":false}},{"id":"reports.revenue.get","group":"reports","title":"Get revenue report","summary":"Return captured-invoice revenue series, breakdowns, invoice rows and refund totals.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["report-read"],"requiresApproval":false,"cli":"keyvra reports revenue get","mcpTool":"reports_revenue_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"compare":{"type":"boolean"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"groupBy":{"anyOf":[{"const":"day"},{"const":"week"},{"const":"month"}]},"propertyId":{"type":"string","x-convex-table":"properties"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","groupBy","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"settings.businessProfile.update","group":"settings","title":"Update the business profile","summary":"Save business name, address, contact email, and phone and return saved status and update time.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":false,"cli":"keyvra settings business-profile update","mcpTool":"settings_businessProfile_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"address":{"type":"string"},"contactEmail":{"type":"string"},"name":{"type":"string"},"phone":{"type":"string"}},"required":["address","contactEmail","name","phone"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"settings.embeds.get","group":"settings","title":"Get embed settings","summary":"Return normalized allowed embed origins, headless-catalog status, and the tenant's public site identifiers.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra settings embeds get","mcpTool":"settings_embeds_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"settings.embeds.setAllowedOrigins","group":"settings","title":"Set allowed embed origins","summary":"Save normalized embed origins and return accepted origins and rejected-entry details.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":true,"cli":"keyvra settings embeds set-allowed-origins","mcpTool":"settings_embeds_setAllowedOrigins","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"origins":{"type":"array","items":{"type":"string"}}},"required":["origins"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"settings.embeds.setHeadlessCatalogEnabled","group":"settings","title":"Set public catalog access","summary":"Enable or disable the tenant's keyless headless catalog and return embed settings.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":true,"cli":"keyvra settings embeds set-headless-catalog-enabled","mcpTool":"settings_embeds_setHeadlessCatalogEnabled","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"settings.general.get","group":"settings","title":"Get general settings","summary":"Return business profile, locale, normalized tax settings, and last update time.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra settings general get","mcpTool":"settings_general_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"settings.language.set","group":"settings","title":"Set interface language","summary":"Persist the caller's staff language preference and return whether it changed.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra settings language set","mcpTool":"settings_language_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"language":{"anyOf":[{"const":"en"},{"const":"fr"}]}},"required":["language"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"saved":{"type":"boolean"}},"required":["saved"],"additionalProperties":false}},{"id":"settings.locale.update","group":"settings","title":"Update locale settings","summary":"Save tenant currency, date format, and timezone and return saved status and update time.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":true,"cli":"keyvra settings locale update","mcpTool":"settings_locale_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"currency":{"type":"string"},"dateFormat":{"anyOf":[{"const":"MM/dd/yyyy"},{"const":"dd/MM/yyyy"},{"const":"yyyy-MM-dd"},{"const":"MMM d, yyyy"}]},"timezone":{"type":"string"}},"required":["currency","dateFormat","timezone"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"settings.payments.get","group":"settings","title":"Get payment settings","summary":"Return Stripe Connect account status, currency, payout-schedule description, and Stripe configuration state.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["billing-read"],"requiresApproval":false,"cli":"keyvra settings payments get","mcpTool":"settings_payments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"settings.savedViews.create","group":"settings","title":"Save view","summary":"Create a named view in the caller's preferences and return its UUID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra settings saved-views create","mcpTool":"settings_savedViews_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"filters":{"type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"search":{"type":"string"},"sortDirection":{"anyOf":[{"const":"asc"},{"const":"desc"}]},"sortId":{"anyOf":[{"type":"null"},{"const":"name"},{"const":"email"},{"const":"company"},{"const":"credit"},{"const":"bookingsCount"},{"const":"joinedAt"}]},"tag":{"type":"string"}},"required":["search","sortDirection","sortId","tag"],"additionalProperties":false},"name":{"type":"string"}},"required":["expectedVersion","filters","name"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string"}},{"id":"settings.savedViews.createBooking","group":"settings","title":"Save view","summary":"Create a named view in the caller's preferences and return its UUID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra settings saved-views create-booking","mcpTool":"settings_savedViews_createBooking","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"filters":{"type":"object","properties":{"endDate":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"search":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startDate":{"type":"string"},"statuses":{"type":"array","items":{"anyOf":[{"const":"confirmed"},{"const":"checked_in"},{"const":"completed"},{"const":"no_show"},{"const":"cancelled"}]}}},"required":["endDate","search","startDate","statuses"],"additionalProperties":false},"name":{"type":"string"}},"required":["expectedVersion","filters","name"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string"}},{"id":"settings.savedViews.delete","group":"settings","title":"Delete saved view","summary":"Remove one of the caller's saved views, increment the preference version, and return null.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","member-read"],"requiresApproval":true,"cli":"keyvra settings saved-views delete","mcpTool":"settings_savedViews_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"id":{"type":"string"}},"required":["expectedVersion","id"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"null"}},{"id":"settings.savedViews.list","group":"settings","title":"List saved views (members)","summary":"Return the caller's saved views for a kind and the shared saved-view version.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["member-read"],"requiresApproval":false,"cli":"keyvra settings saved-views list","mcpTool":"settings_savedViews_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"views":{"type":"array","items":{"type":"object","properties":{"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"filters":{"anyOf":[{"type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"kind":{"const":"members"},"search":{"type":"string"},"sortDirection":{"anyOf":[{"const":"asc"},{"const":"desc"}]},"sortId":{"anyOf":[{"type":"null"},{"const":"name"},{"const":"email"},{"const":"company"},{"const":"credit"},{"const":"bookingsCount"},{"const":"joinedAt"}]},"tag":{"type":"string"}},"required":["kind","search","sortDirection","sortId","tag"],"additionalProperties":false},{"type":"object","properties":{"endDate":{"type":"string"},"kind":{"const":"bookings"},"propertyId":{"type":"string","x-convex-table":"properties"},"search":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startDate":{"type":"string"},"statuses":{"type":"array","items":{"anyOf":[{"const":"confirmed"},{"const":"checked_in"},{"const":"completed"},{"const":"no_show"},{"const":"cancelled"}]}}},"required":["endDate","kind","search","startDate","statuses"],"additionalProperties":false}]},"id":{"type":"string"},"name":{"type":"string"}},"required":["createdAt","filters","id","name"],"additionalProperties":false}}},"required":["version","views"],"additionalProperties":false}},{"id":"settings.savedViews.list.bookings","group":"settings","title":"List saved views (bookings)","summary":"Return the caller's saved views for a kind and the shared saved-view version.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read"],"requiresApproval":false,"cli":"keyvra settings saved-views list bookings","mcpTool":"settings_savedViews_list_bookings","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"views":{"type":"array","items":{"type":"object","properties":{"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"filters":{"anyOf":[{"type":"object","properties":{"companyId":{"type":"string","x-convex-table":"companies"},"groupId":{"type":"string","x-convex-table":"memberGroups"},"kind":{"const":"members"},"search":{"type":"string"},"sortDirection":{"anyOf":[{"const":"asc"},{"const":"desc"}]},"sortId":{"anyOf":[{"type":"null"},{"const":"name"},{"const":"email"},{"const":"company"},{"const":"credit"},{"const":"bookingsCount"},{"const":"joinedAt"}]},"tag":{"type":"string"}},"required":["kind","search","sortDirection","sortId","tag"],"additionalProperties":false},{"type":"object","properties":{"endDate":{"type":"string"},"kind":{"const":"bookings"},"propertyId":{"type":"string","x-convex-table":"properties"},"search":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"},"startDate":{"type":"string"},"statuses":{"type":"array","items":{"anyOf":[{"const":"confirmed"},{"const":"checked_in"},{"const":"completed"},{"const":"no_show"},{"const":"cancelled"}]}}},"required":["endDate","kind","search","startDate","statuses"],"additionalProperties":false}]},"id":{"type":"string"},"name":{"type":"string"}},"required":["createdAt","filters","id","name"],"additionalProperties":false}}},"required":["version","views"],"additionalProperties":false}},{"id":"settings.tax.update","group":"settings","title":"Update tax settings","summary":"Save normalized tax rates and display policy and return saved status, tax settings, and update time.","tiers":["operator"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":true,"cli":"keyvra settings tax update","mcpTool":"settings_tax_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tax":{"type":"object","properties":{"defaultRateId":{"type":"string"},"rates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["id","name","rateBps"],"additionalProperties":false}},"taxInclusiveDisplay":{"type":"boolean"}},"required":["rates","taxInclusiveDisplay"],"additionalProperties":false}},"required":["tax"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"settings.workspace.getNavigation","group":"settings","title":"Get workspace navigation","summary":"Return the workspace business type, selected modules, version, commerce mode, and management capability.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra settings workspace get-navigation","mcpTool":"settings_workspace_getNavigation","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"businessType":{"anyOf":[{"const":"coworking"},{"const":"office"},{"const":"studio"},{"const":"venue"},{"const":"community"},{"const":"multi_use"},{"const":"other"}]},"canManage":{"type":"boolean"},"mode":{"anyOf":[{"const":"host"},{"const":"business"}]},"modules":{"type":"array","items":{"anyOf":[{"const":"spaces"},{"const":"bookings"},{"const":"members"},{"const":"memberships"},{"const":"billing"},{"const":"access"},{"const":"events"},{"const":"marketplace"},{"const":"communications"},{"const":"operations"},{"const":"insights"},{"const":"reports"},{"const":"website"}]}},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["businessType","canManage","mode","modules","version"],"additionalProperties":false}},{"id":"settings.workspace.setNavigation","group":"settings","title":"Set workspace navigation","summary":"Save business type and normalized module selection, advance the version, and return the saved preferences.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-update"],"requiresApproval":false,"cli":"keyvra settings workspace set-navigation","mcpTool":"settings_workspace_setNavigation","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"businessType":{"anyOf":[{"const":"coworking"},{"const":"office"},{"const":"studio"},{"const":"venue"},{"const":"community"},{"const":"multi_use"},{"const":"other"}]},"expectedVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"modules":{"type":"array","items":{"anyOf":[{"const":"spaces"},{"const":"bookings"},{"const":"members"},{"const":"memberships"},{"const":"billing"},{"const":"access"},{"const":"events"},{"const":"marketplace"},{"const":"communications"},{"const":"operations"},{"const":"insights"},{"const":"reports"},{"const":"website"}]}}},"required":["businessType","expectedVersion","modules"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"businessType":{"anyOf":[{"const":"coworking"},{"const":"office"},{"const":"studio"},{"const":"venue"},{"const":"community"},{"const":"multi_use"},{"const":"other"}]},"modules":{"type":"array","items":{"anyOf":[{"const":"spaces"},{"const":"bookings"},{"const":"members"},{"const":"memberships"},{"const":"billing"},{"const":"access"},{"const":"events"},{"const":"marketplace"},{"const":"communications"},{"const":"operations"},{"const":"insights"},{"const":"reports"},{"const":"website"}]}},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["businessType","modules","version"],"additionalProperties":false}},{"id":"site.availability.get","group":"site","title":"Get tenant space availability","summary":"Return available intervals for a public tenant-site space and requested time window.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site availability get","mcpTool":"site_availability_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"hostname":{"type":"string"},"slug":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["endMs","hostname","slug","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.booking.checkout","group":"site","title":"Complete tenant booking checkout","summary":"Open the browser flow to complete tenant booking checkout.","tiers":["public"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra site booking checkout","mcpTool":"site_booking_checkout","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string"}},"required":["slug"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.booking.checkoutRaw","group":"site","title":"Start tenant-site checkout","summary":"Reserve a tenant-site booking and create a Stripe PaymentIntent, or settle a fully credit-funded reservation.","tiers":["public"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"interactive","permissions":[],"requiresApproval":true,"cli":"keyvra site booking checkout-raw","mcpTool":"site_booking_checkoutRaw","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"contactName":{"type":"string"},"email":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"idempotencyKey":{"type":"string"},"notes":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"phone":{"type":"string"},"promotionCode":{"type":"string"},"selectedAddOnIds":{"type":"array","items":{"type":"string","x-convex-table":"addOnServices"}},"slug":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["email","endMs","slug","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.bookingOffers.list","group":"site","title":"List public booking request offers","summary":"Return public direct-channel offers for bookable tenant-site spaces.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site booking-offers list","mcpTool":"site_bookingOffers_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"currency":{"type":"string"},"description":{"type":"string"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"type":"string"}},"required":["amountCents","channelId","currency","description","name","offerId","offerVersion","unit"],"additionalProperties":false}}},{"id":"site.bookingPayments.cancel","group":"site","title":"Cancel a booking payment attempt","summary":"Prove provider cancellation before releasing the reservation and allowing another payment.","tiers":["public"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra site booking-payments cancel","mcpTool":"site_bookingPayments_cancel","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"site.bookingPayments.get","group":"site","title":"Read booking payment status","summary":"Read persisted payment and fulfillment status after webhook settlement.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site booking-payments get","mcpTool":"site_bookingPayments_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"site.bookingPayments.pay","group":"site","title":"Pay a booking","summary":"Confirm a one-time shared payment token against the frozen quote, or return a human handoff.","tiers":["public"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra site booking-payments pay","mcpTool":"site_bookingPayments_pay","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"sharedPaymentToken":{"type":"string"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"site.bookingPayments.quote","group":"site","title":"Preview a booking payment","summary":"Return provisional pricing and available payment modes without reserving or charging.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site booking-payments quote","mcpTool":"site_bookingPayments_quote","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"promotionCode":{"type":"string"},"selectedAddOnIds":{"type":"array","items":{"type":"string","x-convex-table":"addOnServices"}},"slug":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","slug","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"handoffUrl":{"type":"string"},"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"pricingHash":{"type":"string"},"provisional":{"type":"boolean"}},"required":["amountCents","currency","handoffUrl","modes","networkId","pricingHash","provisional"],"additionalProperties":false}},{"id":"site.bookingPayments.recover","group":"site","title":"Reconcile a booking payment attempt","summary":"Find the original account-bound intent without creating a replacement charge.","tiers":["public"],"kind":"action","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra site booking-payments recover","mcpTool":"site_bookingPayments_recover","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"guestCapability":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"}},"required":["quoteId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"attemptId":{"anyOf":[{"type":"string","x-convex-table":"agentPaymentAttempts"},{"type":"null"}]},"currency":{"type":"string"},"deferredEffects":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"approvedEarlier":{"type":"boolean"},"currency":{"type":"string"},"key":{"type":"string"},"kind":{"anyOf":[{"const":"booking_invoice_reconciliation"},{"const":"member_credit"},{"const":"membership_benefit"},{"const":"promotion_release"},{"const":"payout_cancel"},{"const":"invoice_reconciliation"},{"const":"credit_note_reconciliation"},{"const":"booking_refund_application"}]},"retirementReason":{"anyOf":[{"const":"member_unavailable"},{"const":"invoice_unavailable"},{"const":"operator_settlement"}]}},"required":["amountCents","currency","key","kind"],"additionalProperties":false}},"effectsDeferred":{"type":"boolean"},"fulfillmentStatus":{"type":"string"},"handoff":{"anyOf":[{"type":"null"},{"type":"object","properties":{"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"reason":{"type":"string"},"url":{"type":"string"}},"required":["expiresAt","reason","url"],"additionalProperties":false}]},"pollAfterSeconds":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerRefundStatus":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"refundedCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"type":"string"},"statusOnly":{"type":"boolean"}},"required":["amountCents","attemptId","currency","fulfillmentStatus","handoff","pollAfterSeconds","quoteId","status"],"additionalProperties":false}},{"id":"site.bookingPayments.requestContactVerification","group":"site","title":"Send purchase contact verification","summary":"Send an email challenge bound to the public selection, pricing and explicit purchase consent.","tiers":["public"],"kind":"action","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site booking-payments request-contact-verification","mcpTool":"site_bookingPayments_requestContactVerification","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"email":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expectedPricingHash":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"promotionCode":{"type":"string"},"purchaseConsent":{"type":"boolean"},"selectedAddOnIds":{"type":"array","items":{"type":"string","x-convex-table":"addOnServices"}},"slug":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["email","endMs","expectedPricingHash","purchaseConsent","slug","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"challengeId":{"type":"string","x-convex-table":"guestPaymentConsents"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"sent":{"type":"boolean"}},"required":["challengeId","expiresAt","sent"],"additionalProperties":false}},{"id":"site.bookingPayments.reserve","group":"site","title":"Reserve a booking payment","summary":"Freeze the authoritative amount, reservation, buyer and seller account before delegating payment.","tiers":["public"],"kind":"mutation","risk":"financial","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":true,"cli":"keyvra site booking-payments reserve","mcpTool":"site_bookingPayments_reserve","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approvalRequestId":{"type":"string","x-convex-table":"bookingRequests"},"attendeeCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expectedPricingHash":{"type":"string"},"guestCapability":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"promotionCode":{"type":"string"},"selectedAddOnIds":{"type":"array","items":{"type":"string","x-convex-table":"addOnServices"}},"slug":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","expectedPricingHash","slug","startMs"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"applicationFeeCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"breakdown":{"type":"object","properties":{"addOnCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"benefitCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"creditCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"discountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxInclusive":{"type":"boolean"},"taxRateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxRateId":{"type":"string"},"taxRateName":{"type":"string"},"taxableSubtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["addOnCents","benefitCents","creditCents","discountCents","subtotalCents","taxCents","taxInclusive","taxRateBps","taxRateName","taxableSubtotalCents","totalCents"],"additionalProperties":false},"currency":{"type":"string"},"expiresAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"handoffUrl":{"type":"string"},"payment":{"type":"object","properties":{"modes":{"type":"array","items":{"type":"string"}},"networkId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sptRequirements":{"anyOf":[{"type":"null"},{"type":"object","properties":{"currency":{"type":"string"},"expiresAtMinimum":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"expiresAtRecommended":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maxAmount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["currency","expiresAtMinimum","expiresAtRecommended","maxAmount"],"additionalProperties":false}]}},"required":["modes","networkId","sptRequirements"],"additionalProperties":false},"pricingHash":{"type":"string"},"quoteId":{"type":"string","x-convex-table":"agentPaymentQuotes"},"quoteVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"target":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"required":["id","kind"],"additionalProperties":false}},"required":["amountCents","applicationFeeCents","breakdown","currency","expiresAt","handoffUrl","payment","pricingHash","quoteId","quoteVersion","target"],"additionalProperties":false},{"type":"object","properties":{"handoffUrl":{"type":"string"},"quoteId":{"type":"null"},"reason":{"type":"string"},"status":{"const":"handoff_required"}},"required":["handoffUrl","quoteId","reason","status"],"additionalProperties":false}]}},{"id":"site.bookingPayments.verifyContact","group":"site","title":"Verify purchase contact","summary":"Consume the challenge once and issue a short-lived purchase capability.","tiers":["public"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site booking-payments verify-contact","mcpTool":"site_bookingPayments_verifyContact","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"challengeId":{"type":"string","x-convex-table":"guestPaymentConsents"},"verificationCode":{"type":"string"}},"required":["challengeId","verificationCode"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expiresAt":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"guestCapability":{"anyOf":[{"type":"string"},{"type":"null"}]},"verified":{"type":"boolean"}},"required":["expiresAt","guestCapability","verified"],"additionalProperties":false}},{"id":"site.checkoutConfirmations.get","group":"site","title":"Get tenant checkout confirmation","summary":"Return tenant-scoped booking confirmation, guest email, add-ons, payment state, and calendar content.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site checkout-confirmations get","mcpTool":"site_checkoutConfirmations_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmationId":{"type":"string"},"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["confirmationId","hostname"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.contact.send","group":"site","title":"Send contact request","summary":"Save a tenant-site contact request and return submission and notification results.","tiers":["public"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site contact send","mcpTool":"site_contact_send","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"email":{"type":"string"},"hostname":{"type":"string"},"message":{"type":"string"},"name":{"type":"string"},"sourcePath":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"website":{"type":"string"}},"required":["email","hostname","message","name"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.eventSessions.list","group":"site","title":"List public event sessions","summary":"Return upcoming open event sessions offered through a tenant's public direct channel.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site event-sessions list","mcpTool":"site_eventSessions_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"eventSessions"},"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"capacity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"description":{"type":"string"},"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"fulfillment":{"anyOf":[{"type":"object","properties":{"kind":{"const":"remote"},"policy":{"type":"string"}},"required":["kind","policy"],"additionalProperties":false},{"type":"object","properties":{"address":{"type":"string"},"kind":{"const":"location"},"name":{"type":"string"},"propertyId":{"type":"string","x-convex-table":"properties"},"timezone":{"type":"string"}},"required":["address","kind","name","propertyId","timezone"],"additionalProperties":false}]},"offerId":{"type":"string","x-convex-table":"offers"},"offerVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceId":{"type":"string","x-convex-table":"resources"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"open"},{"const":"cancelled"}]},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"tenantId":{"type":"string","x-convex-table":"tenants"},"title":{"type":"string"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","amountCents","capacity","createdAt","currency","description","endMs","offerId","offerVersion","startMs","status","tenantId","title","updatedAt"],"additionalProperties":false}}},{"id":"site.events.list","group":"site","title":"List tenant-site events","summary":"Return upcoming events embedded in the tenant's published CMS page blocks.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site events list","mcpTool":"site_events_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.membershipOfferings.list","group":"site","title":"List tenant membership offerings","summary":"Return tenant member-group descriptions, allowed space counts and types, discount labels, and contact links.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site membership-offerings list","mcpTool":"site_membershipOfferings_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.membershipPlans.list","group":"site","title":"List published membership plans","summary":"Return the resolved tenant's summary and up to 100 published, non-deleted membership plans.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site membership-plans list","mcpTool":"site_membershipPlans_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"plans":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"membershipPlans"},"benefits":{"type":"array","items":{"type":"object","properties":{"expiresAfterDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"key":{"type":"string"},"label":{"type":"string"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"quantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"resourceIds":{"type":"array","items":{"type":"string","x-convex-table":"resources"}},"unit":{"anyOf":[{"const":"minutes"},{"const":"credit_cents"},{"const":"guest_pass"},{"const":"visit"},{"const":"print_page"},{"const":"wifi_minute"},{"const":"parking_minute"}]}},"required":["key","label","propertyIds","quantity","resourceIds","unit"],"additionalProperties":false}},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"deletedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"description":{"type":"string"},"interval":{"anyOf":[{"const":"month"},{"const":"year"}]},"name":{"type":"string"},"priceCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"propertyIds":{"type":"array","items":{"type":"string","x-convex-table":"properties"}},"seatLimit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"draft"},{"const":"published"},{"const":"archived"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"trialDays":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","benefits","createdAt","currency","description","interval","name","priceCents","propertyIds","seatLimit","status","tenantId","updatedAt","version"],"additionalProperties":false}},"tenant":{"type":"object","properties":{"currency":{"type":"string"},"name":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"},"timezone":{"type":"string"}},"required":["currency","name","tenantId","timezone"],"additionalProperties":false}},"required":["plans","tenant"],"additionalProperties":false}},{"id":"site.offers.getEmbed","group":"site","title":"Get public embed offer","summary":"Return a visible direct-booking offer, tenant name/slug, and permitted frame origins.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site offers get-embed","mcpTool":"site_offers_getEmbed","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"offerId":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname","offerId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.pages.get","group":"site","title":"Get public page","summary":"Return published CMS content by tenant ID and path, including redirect metadata or a not-found result.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site pages get","mcpTool":"site_pages_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"path":{"type":"string"},"tenantId":{"type":"string","x-convex-table":"tenants"}},"required":["path","tenantId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.pages.getByHost","group":"site","title":"Get public page by host","summary":"Resolve a tenant host and return its published CMS page or redirect metadata.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site pages get-by-host","mcpTool":"site_pages_getByHost","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"path":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname","path"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.passOffers.list","group":"site","title":"List public pass offers","summary":"Return publicly purchasable pass offers with direct channel IDs, versions, tax, and validity duration.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site pass-offers list","mcpTool":"site_passOffers_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"channelId":{"type":"string","x-convex-table":"channels"},"currency":{"type":"string"},"description":{"type":"string"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"tax":{"type":"object","properties":{"inclusive":{"type":"boolean"},"rateBps":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"rateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rateName":{"type":"string"},"subtotalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"taxCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"totalCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["inclusive","rateBps","rateId","rateName","subtotalCents","taxCents","totalCents"],"additionalProperties":false},"validityMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["amountCents","channelId","currency","description","name","offerId","tax","version"],"additionalProperties":false}}},{"id":"site.resourceOffers.list","group":"site","title":"List public rental and service offers","summary":"Return public direct-channel rental and service offers with quantity limits, terms, and approval requirements.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site resource-offers list","mcpTool":"site_resourceOffers_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"channelId":{"type":"string","x-convex-table":"channels"},"description":{"type":"string"},"maximumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumQuantity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"minimumMinutes":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"offerId":{"type":"string","x-convex-table":"offers"},"purchaseKind":{"anyOf":[{"const":"rental"},{"const":"service"}]},"requiresApproval":{"type":"boolean"},"resourceName":{"type":"string"},"terms":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"minimumUnits":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"unit":{"anyOf":[{"const":"hour"},{"const":"half_day"},{"const":"day"},{"const":"week"},{"const":"month"},{"const":"year"},{"const":"unit"}]}},"required":["amountCents","currency","minimumUnits","unit"],"additionalProperties":false},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["channelId","description","maximumQuantity","minimumMinutes","name","offerId","purchaseKind","requiresApproval","resourceName","terms","version"],"additionalProperties":false}}},{"id":"site.spaces.get","group":"site","title":"Get tenant-site space","summary":"Return a tenant's public space details, media, amenities, pricing, rules, and availability.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site spaces get","mcpTool":"site_spaces_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"availabilityEndMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"availabilityStartMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"slug":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname","slug"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"site.spaces.list","group":"site","title":"List public tenant spaces","summary":"Return filtered public space cards and available amenity and space-type filters for a tenant.","tiers":["public"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra site spaces list","mcpTool":"site_spaces_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amenityKeys":{"type":"array","items":{"type":"string"}},"capacity":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"customDomain":{"type":"boolean"},"hostname":{"type":"string"},"spaceType":{"type":"string"},"tenantSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["hostname"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"staff.customRoles.list","group":"staff","title":"List custom roles","summary":"Return the tenant's custom role definitions, including archived definitions.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["staff-read"],"requiresApproval":false,"cli":"keyvra staff custom-roles list","mcpTool":"staff_customRoles_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"tenantCustomRoles"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdByUserId":{"type":"string","x-convex-table":"users"},"description":{"type":"string"},"name":{"type":"string"},"permissions":{"type":"array","items":{"anyOf":[{"const":"tenant-read"},{"const":"tenant-update"},{"const":"billing-read"},{"const":"billing-manage"},{"const":"subscription-manage"},{"const":"staff-read"},{"const":"invite-user"},{"const":"staff-manage"},{"const":"space-read"},{"const":"space-create"},{"const":"space-update"},{"const":"space-delete"},{"const":"space-publish"},{"const":"booking-read"},{"const":"booking-create"},{"const":"booking-update"},{"const":"booking-cancel"},{"const":"booking-checkin"},{"const":"booking-refund"},{"const":"member-read"},{"const":"member-create"},{"const":"member-update"},{"const":"member-delete"},{"const":"member-import"},{"const":"member-export"},{"const":"community-manage"},{"const":"operation-read"},{"const":"operation-create"},{"const":"operation-update"},{"const":"operation-assign"},{"const":"operation-complete"},{"const":"report-read"},{"const":"integration-read"},{"const":"integration-manage"},{"const":"cms-read"},{"const":"cms-manage"},{"const":"ai-use"},{"const":"ai-manage"}]}},"status":{"anyOf":[{"const":"active"},{"const":"archived"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","createdAt","createdByUserId","description","name","permissions","status","tenantId","updatedAt","version"],"additionalProperties":false}}},{"id":"staff.customRoles.listStaff","group":"staff","title":"List custom-role assignment candidates","summary":"Return a paginated list of non-owner staff with current role and custom-role assignment.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra staff custom-roles list-staff","mcpTool":"staff_customRoles_listStaff","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"customRoleId":{"type":"string","x-convex-table":"tenantCustomRoles"},"email":{"type":"string"},"id":{"type":"string","x-convex-table":"users"},"name":{"type":"string"},"role":{"type":"string"}},"required":["email","id","name","role"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"staff.enterpriseConnections.list","group":"staff","title":"List enterprise connections","summary":"Return enterprise connection documents, workspace slug, and runtime availability.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["domainChallenge"],"permissionAlternatives":[],"policy":"allow","permissions":["staff-read"],"requiresApproval":false,"cli":"keyvra staff enterprise-connections list","mcpTool":"staff_enterpriseConnections_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connections":{"type":"array","items":{"type":"object","properties":{"_creationTime":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"_id":{"type":"string","x-convex-table":"enterpriseIdentityConnections"},"allowExistingAccountLinking":{"type":"boolean"},"audience":{"type":"string"},"authOrganizationId":{"type":"string"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdByUserId":{"type":"string","x-convex-table":"users"},"defaultCustomRoleId":{"type":"string","x-convex-table":"tenantCustomRoles"},"defaultRole":{"anyOf":[{"const":"owner"},{"const":"ops_manager"},{"const":"front_desk"},{"const":"cleaning_staff"},{"const":"maintenance_staff"},{"const":"finance"},{"const":"community"},{"const":"events"},{"const":"it"},{"const":"custom"}]},"domain":{"type":"string"},"domainVerifiedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"domainVerifiedUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"entryPoint":{"type":"string"},"issuer":{"type":"string"},"lastSignInAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"name":{"type":"string"},"nextDomainCheckAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"protocol":{"anyOf":[{"const":"oidc"},{"const":"saml"}]},"providerConfiguredVersion":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"providerId":{"type":"string"},"status":{"anyOf":[{"const":"draft"},{"const":"configured"},{"const":"active"},{"const":"disabled"}]},"tenantId":{"type":"string","x-convex-table":"tenants"},"updatedAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"verificationLeaseUntil":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["_creationTime","_id","allowExistingAccountLinking","audience","authOrganizationId","createdAt","createdByUserId","defaultRole","domain","issuer","name","protocol","providerId","status","tenantId","updatedAt","version"],"additionalProperties":false}},"runtimeAvailable":{"type":"boolean"},"workspaceSlug":{"type":"string"}},"required":["connections","runtimeAvailable","workspaceSlug"],"additionalProperties":false}},{"id":"staff.enterprisePrincipals.list","group":"staff","title":"List enterprise staff identities","summary":"Return paginated staff identity summaries associated with a tenant enterprise connection.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["staff-read"],"requiresApproval":false,"cli":"keyvra staff enterprise-principals list","mcpTool":"staff_enterprisePrincipals_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"type":"string","x-convex-table":"enterpriseIdentityConnections"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["connectionId","paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"disabled":{"type":"boolean"},"email":{"type":"string"},"id":{"type":"string","x-convex-table":"users"},"name":{"type":"string"},"role":{"type":"string"}},"required":["disabled","email","id","name","role"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"staff.profile.get","group":"staff","title":"Get own staff profile","summary":"Return the caller's profile fields, preferences, role, user id, and resolved avatar URL.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra staff profile get","mcpTool":"staff_profile_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"staff.scimGroups.listMembers","group":"staff","title":"List SCIM group members","summary":"Return paginated directory user summaries for a group.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra staff scim-groups list-members","mcpTool":"staff_scimGroups_listMembers","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"groupId":{"type":"string","x-convex-table":"enterpriseScimGroups"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["groupId","paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"active":{"type":"boolean"},"displayName":{"type":"string"},"id":{"type":"string","x-convex-table":"enterpriseScimUsers"},"userName":{"type":"string"}},"required":["active","displayName","id","userName"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"staff.scimMappings.list","group":"staff","title":"List SCIM group mappings","summary":"Return paginated non-deleted directory groups with their mapping and version metadata.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra staff scim-mappings list","mcpTool":"staff_scimMappings_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"type":"string","x-convex-table":"enterpriseIdentityConnections"},"paginationOpts":{"type":"object","properties":{"cursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"endCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumBytesRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"maximumRowsRead":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"numItems":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["cursor","numItems"],"additionalProperties":false}},"required":["connectionId","paginationOpts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"continueCursor":{"type":"string"},"isDone":{"type":"boolean"},"page":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string"},"externalId":{"type":"string"},"id":{"type":"string","x-convex-table":"enterpriseScimGroups"},"mappedCustomRoleId":{"type":"string","x-convex-table":"tenantCustomRoles"},"mappedRole":{"anyOf":[{"const":"owner"},{"const":"ops_manager"},{"const":"front_desk"},{"const":"cleaning_staff"},{"const":"maintenance_staff"},{"const":"finance"},{"const":"community"},{"const":"events"},{"const":"it"},{"const":"custom"}]},"mappingPriority":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"memberCount":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"version":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["displayName","id","memberCount","version"],"additionalProperties":false}},"pageStatus":{"anyOf":[{"const":"SplitRecommended"},{"const":"SplitRequired"},{"type":"null"}]},"splitCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["continueCursor","isDone","page"],"additionalProperties":false}},{"id":"staff.scimProvisioning.get","group":"staff","title":"Get SCIM provisioning settings","summary":"Return directory status, endpoint, user and group counts, and active token metadata.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra staff scim-provisioning get","mcpTool":"staff_scimProvisioning_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"type":"string","x-convex-table":"enterpriseIdentityConnections"}},"required":["connectionId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"},"endpoint":{"type":"string"},"groups":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"users":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["enabled","endpoint","groups","users"],"additionalProperties":false}},{"id":"staff.workspace.get","group":"staff","title":"Get staff workspace","summary":"Return tenant staff, unaccepted invitations, staff audit activity, and management capability flags.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["authInvitationId","invitationId","authSubject"],"permissionAlternatives":[],"policy":"allow","permissions":["staff-read"],"requiresApproval":false,"cli":"keyvra staff workspace get","mcpTool":"staff_workspace_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"support.tickets.create","group":"support","title":"Create a support ticket","summary":"Create a workspace support ticket for the current staff user and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra support tickets create","mcpTool":"support_tickets_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"body":{"type":"string"},"category":{"anyOf":[{"const":"guest-support"},{"const":"setup"},{"const":"spaces"},{"const":"bookings"},{"const":"payments"},{"const":"integrations"},{"const":"operations"},{"const":"other"}]},"subject":{"type":"string"}},"required":["body","category","subject"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"support.tickets.list","group":"support","title":"List my support tickets","summary":"Return the current workspace staff user's latest support tickets.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":[],"requiresApproval":false,"cli":"keyvra support tickets list","mcpTool":"support_tickets_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"limit":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.aiDrafts.save","group":"website","title":"Save constrained website page","summary":"Create a draft CMS page or update an existing page using validated template slots.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":false,"cli":"keyvra website ai-drafts save","mcpTool":"website_aiDrafts_save","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pageId":{"type":"string","x-convex-table":"cmsPages"},"slots":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"component":{"type":"string"},"href":{"type":"string"},"itemIds":{"type":"array","items":{"type":"string"}},"mediaStorageId":{"type":"string"},"text":{"type":"string"}},"required":["component"],"additionalProperties":false}},"slug":{"type":"string"},"templateId":{"type":"string"},"title":{"type":"string"}},"required":["slots","slug","templateId","title"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.branding.get","group":"website","title":"Get branding","summary":"Return tenant colors, fonts, logo URL, custom CSS, analytics ID, and feature availability.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-read"],"requiresApproval":false,"cli":"keyvra website branding get","mcpTool":"website_branding_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.branding.update","group":"website","title":"Update branding","summary":"Replace tenant branding and save custom CSS and analytics settings; return tenant ID and branding.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":false,"cli":"keyvra website branding update","mcpTool":"website_branding_update","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"colors":{"type":"object","properties":{"accent":{"type":"string"},"background":{"type":"string"},"foreground":{"type":"string"},"primary":{"type":"string"},"secondary":{"type":"string"}},"required":["primary","secondary"],"additionalProperties":false},"customCss":{"type":"string"},"fonts":{"type":"object","properties":{"body":{"type":"string"},"heading":{"type":"string"},"mono":{"type":"string"}},"required":["body","heading"],"additionalProperties":false},"ga4MeasurementId":{"type":"string"},"logoStorageId":{"type":"string","x-convex-table":"_storage"}},"required":["colors","fonts"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.customDomains.create","group":"website","title":"Add custom domain","summary":"Register a pending custom domain and return its ID and DNS TXT verification instructions.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":["dnsTxtValue","verificationToken","records.value"],"permissionAlternatives":[],"policy":"interactive","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra website custom-domains create","mcpTool":"website_customDomains_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"domain":{"type":"string"},"recordType":{"anyOf":[{"const":"A"},{"const":"CNAME"}]}},"required":["domain"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.customDomains.verify","group":"website","title":"Verify custom domain","summary":"Check DNS ownership and routing for a registered tenant domain; return domain and SSL status.","tiers":["operator"],"kind":"action","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra website custom-domains verify","mcpTool":"website_customDomains_verify","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"domain":{"type":"string"}},"required":["domain"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.domains.create","group":"website","title":"Add domain","summary":"Register a pending tenant domain and return its ID and DNS TXT verification instructions.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":["dnsTxtValue","verificationToken","records.value"],"permissionAlternatives":[],"policy":"interactive","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra website domains create","mcpTool":"website_domains_create","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"domain":{"type":"string"},"recordType":{"anyOf":[{"const":"A"},{"const":"CNAME"}]}},"required":["domain"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.domains.delete","group":"website","title":"Remove domain","summary":"Soft-delete a tenant domain, stop its verification schedule, and clear it as the primary domain.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra website domains delete","mcpTool":"website_domains_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"domain":{"type":"string"}},"required":["domain"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.domains.list","group":"website","title":"List domains","summary":"Return live domain registrations, DNS instructions, SSL state, primary selection, and management availability.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":["dnsTxtValue","verificationToken","domains.records.value"],"permissionAlternatives":[],"policy":"allow","permissions":["cms-read"],"requiresApproval":false,"cli":"keyvra website domains list","mcpTool":"website_domains_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.domains.setPrimary","group":"website","title":"Set primary domain","summary":"Make an active tenant domain the primary website hostname and clear its redirect flag.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra website domains set-primary","mcpTool":"website_domains_setPrimary","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"domain":{"type":"string"}},"required":["domain"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.domains.setRedirect","group":"website","title":"Set domain redirect","summary":"Set whether a tenant domain redirects to the primary domain.","tiers":["operator"],"kind":"mutation","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra website domains set-redirect","mcpTool":"website_domains_setRedirect","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"domain":{"type":"string"},"redirectToPrimary":{"type":"boolean"}},"required":["domain","redirectToPrimary"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.domains.verify","group":"website","title":"Verify domain","summary":"Verify tenant-domain DNS and return the verification result plus a verified boolean.","tiers":["operator"],"kind":"action","risk":"security","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra website domains verify","mcpTool":"website_domains_verify","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"domain":{"type":"string"}},"required":["domain"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.media.delete","group":"website","title":"Delete media asset","summary":"Remove tenant references to an image and its optimized variants, then permanently delete their blobs.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra website media delete","mcpTool":"website_media_delete","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"storageId":{"type":"string","x-convex-table":"_storage"}},"required":["storageId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.media.deleteUpload","group":"website","title":"Delete image upload","summary":"Detach an image from the specified owner, tombstone its media record, and permanently delete its blob.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":true,"cli":"keyvra website media delete-upload","mcpTool":"website_media_deleteUpload","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"owner":{"anyOf":[{"type":"object","properties":{"type":{"const":"cmsMedia"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"tenantLogo"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"},"type":{"const":"propertyCover"}},"required":["propertyId","type"],"additionalProperties":false},{"type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"},"type":{"const":"propertyImage"}},"required":["propertyId","type"],"additionalProperties":false},{"type":"object","properties":{"spaceId":{"type":"string","x-convex-table":"spaces"},"type":{"const":"spaceCover"}},"required":["spaceId","type"],"additionalProperties":false},{"type":"object","properties":{"spaceId":{"type":"string","x-convex-table":"spaces"},"type":{"const":"spaceImage"}},"required":["spaceId","type"],"additionalProperties":false}]},"storageId":{"type":"string","x-convex-table":"_storage"}},"required":["owner","storageId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.media.finalizeUpload","group":"website","title":"Finalize image upload","summary":"Verify uploaded image bytes and metadata, attach them to a tenant owner, and return the finalized image input.","tiers":["operator"],"kind":"action","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-update"],"requiresApproval":false,"cli":"keyvra website media finalize-upload","mcpTool":"website_media_finalizeUpload","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"byteSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"contentType":{"type":"string"},"fileName":{"type":"string"},"optimization":{"type":"object","properties":{"height":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"originalByteSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"originalContentType":{"type":"string"},"originalHeight":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"originalWidth":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"variants":{"type":"array","items":{"type":"object","properties":{"byteSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"contentType":{"type":"string"},"fileName":{"type":"string"},"height":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"anyOf":[{"const":"responsive"},{"const":"thumbnail"}]},"storageId":{"type":"string","x-convex-table":"_storage"},"width":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["byteSize","contentType","height","kind","storageId","width"],"additionalProperties":false}},"width":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["height","originalByteSize","originalContentType","originalHeight","originalWidth","variants","width"],"additionalProperties":false},"owner":{"anyOf":[{"type":"object","properties":{"type":{"const":"cmsMedia"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"tenantLogo"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"},"type":{"const":"propertyCover"}},"required":["propertyId","type"],"additionalProperties":false},{"type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"},"type":{"const":"propertyImage"}},"required":["propertyId","type"],"additionalProperties":false},{"type":"object","properties":{"spaceId":{"type":"string","x-convex-table":"spaces"},"type":{"const":"spaceCover"}},"required":["spaceId","type"],"additionalProperties":false},{"type":"object","properties":{"spaceId":{"type":"string","x-convex-table":"spaces"},"type":{"const":"spaceImage"}},"required":["spaceId","type"],"additionalProperties":false}]},"storageId":{"type":"string","x-convex-table":"_storage"}},"required":["byteSize","contentType","owner","storageId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"byteSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"contentType":{"type":"string"},"fileName":{"type":"string"},"optimization":{"type":"object","properties":{"height":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"originalByteSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"originalContentType":{"type":"string"},"originalHeight":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"originalWidth":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"variants":{"type":"array","items":{"type":"object","properties":{"byteSize":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"contentType":{"type":"string"},"fileName":{"type":"string"},"height":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"kind":{"anyOf":[{"const":"responsive"},{"const":"thumbnail"}]},"storageId":{"type":"string","x-convex-table":"_storage"},"width":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["byteSize","contentType","height","kind","storageId","width"],"additionalProperties":false}},"width":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["height","originalByteSize","originalContentType","originalHeight","originalWidth","variants","width"],"additionalProperties":false},"owner":{"anyOf":[{"type":"object","properties":{"type":{"const":"cmsMedia"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"tenantLogo"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"},"type":{"const":"propertyCover"}},"required":["propertyId","type"],"additionalProperties":false},{"type":"object","properties":{"propertyId":{"type":"string","x-convex-table":"properties"},"type":{"const":"propertyImage"}},"required":["propertyId","type"],"additionalProperties":false},{"type":"object","properties":{"spaceId":{"type":"string","x-convex-table":"spaces"},"type":{"const":"spaceCover"}},"required":["spaceId","type"],"additionalProperties":false},{"type":"object","properties":{"spaceId":{"type":"string","x-convex-table":"spaces"},"type":{"const":"spaceImage"}},"required":["spaceId","type"],"additionalProperties":false}]},"storageId":{"type":"string","x-convex-table":"_storage"}},"required":["byteSize","contentType","owner","storageId"],"additionalProperties":false}},{"id":"website.media.list","group":"website","title":"List media library","summary":"Return live tenant images with URLs, upload metadata, optimized variants, and usage references.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-read"],"requiresApproval":false,"cli":"keyvra website media list","mcpTool":"website_media_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.navigation.list","group":"website","title":"List navigation menus","summary":"Return tenant header and footer navigation menus, optionally including deleted rows.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-read"],"requiresApproval":false,"cli":"keyvra website navigation list","mcpTool":"website_navigation_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"includeDeleted":{"type":"boolean"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.navigation.set","group":"website","title":"Save navigation menu","summary":"Create or replace a tenant navigation menu and return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":false,"cli":"keyvra website navigation set","mcpTool":"website_navigation_set","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string"},"id":{"type":"string"},"label":{"type":"string"},"opensInNewTab":{"type":"boolean"},"pageId":{"type":"string","x-convex-table":"cmsPages"},"sortOrder":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["href","id","label","opensInNewTab","sortOrder"],"additionalProperties":false}},"name":{"type":"string"},"navigationMenuId":{"type":"string","x-convex-table":"navigationMenus"},"placement":{"anyOf":[{"const":"header"},{"const":"footer"}]}},"required":["items","name","placement"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.pages.archive","group":"website","title":"Archive page","summary":"Move a published tenant page to archived status and return its ID and status.","tiers":["operator"],"kind":"mutation","risk":"destructive","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":true,"cli":"keyvra website pages archive","mcpTool":"website_pages_archive","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pageId":{"type":"string","x-convex-table":"cmsPages"}},"required":["pageId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.pages.checkSlug","group":"website","title":"Check page slug","summary":"Return a normalized slug and whether tenant pages or redirects conflict with it.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-read"],"requiresApproval":false,"cli":"keyvra website pages check-slug","mcpTool":"website_pages_checkSlug","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pageId":{"type":"string","x-convex-table":"cmsPages"},"slug":{"type":"string"}},"required":["slug"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.pages.getEntitlement","group":"website","title":"Get page entitlement","summary":"Return custom-page availability and the built-in page slugs.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-read"],"requiresApproval":false,"cli":"keyvra website pages get-entitlement","mcpTool":"website_pages_getEntitlement","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.pages.list","group":"website","title":"List pages","summary":"Return tenant CMS pages, including drafts and archived pages, optionally including deleted rows.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-read"],"requiresApproval":false,"cli":"keyvra website pages list","mcpTool":"website_pages_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"includeDeleted":{"type":"boolean"}},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.pages.publish","group":"website","title":"Publish page","summary":"Publish a tenant draft page and return its ID and published status.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":false,"cli":"keyvra website pages publish","mcpTool":"website_pages_publish","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pageId":{"type":"string","x-convex-table":"cmsPages"}},"required":["pageId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.pages.saveDraft","group":"website","title":"Save page draft","summary":"Create a draft or replace the content of an existing tenant page; return its ID.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":false,"cli":"keyvra website pages save-draft","mcpTool":"website_pages_saveDraft","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"blocks":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"eyebrow":{"type":"string"},"heading":{"type":"string"},"id":{"type":"string"},"links":{"type":"array","items":{"type":"object","properties":{"href":{"type":"string"},"label":{"type":"string"}},"required":["href","label"],"additionalProperties":false}},"mediaStorageId":{"type":"string","x-convex-table":"_storage"},"settings":{},"type":{"anyOf":[{"const":"hero"},{"const":"rich_text"},{"const":"gallery"},{"const":"cta"},{"const":"space_list"}]}},"required":["id","links","type"],"additionalProperties":false}},"pageId":{"type":"string","x-convex-table":"cmsPages"},"seo":{"type":"object","properties":{"description":{"type":"string"},"imageStorageId":{"type":"string","x-convex-table":"_storage"},"keywords":{"type":"array","items":{"type":"string"}},"title":{"type":"string"}},"required":[],"additionalProperties":false},"slug":{"type":"string"},"title":{"type":"string"}},"required":["blocks","slug","title"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"website.pages.unpublish","group":"website","title":"Unpublish page","summary":"Move a published tenant page to draft and clear its publication timestamp.","tiers":["operator"],"kind":"mutation","risk":"write","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["cms-manage"],"requiresApproval":false,"cli":"keyvra website pages unpublish","mcpTool":"website_pages_unpublish","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pageId":{"type":"string","x-convex-table":"cmsPages"}},"required":["pageId"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"workspace.dashboard.get","group":"workspace","title":"Get dashboard metrics","summary":"Return period metrics, activity, booking summaries, and staff capabilities for the workspace dashboard.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["booking-read","member-read","space-read"],"requiresApproval":false,"cli":"keyvra workspace dashboard get","mcpTool":"workspace_dashboard_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"nowMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"period":{"anyOf":[{"const":"day"},{"const":"week"},{"const":"month"}]}},"required":["period"],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}},{"id":"workspace.hostDashboard.get","group":"workspace","title":"Get host dashboard","summary":"Return tenant listing status, upcoming marketplace bookings, and permitted payout information.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read","booking-read"],"requiresApproval":false,"cli":"keyvra workspace host-dashboard get","mcpTool":"workspace_hostDashboard_get","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"canCreateListings":{"type":"boolean"},"canManageListings":{"type":"boolean"},"canReadPayouts":{"type":"boolean"},"commissionBps":{"anyOf":[{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},{"type":"null"}]},"listings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","x-convex-table":"listings"},"moderation":{"type":"string"},"name":{"type":"string"},"published":{"type":"boolean"},"slug":{"type":"string"},"spaceId":{"type":"string","x-convex-table":"spaces"}},"required":["id","moderation","name","published","slug","spaceId"],"additionalProperties":false}},"listingsTruncated":{"type":"boolean"},"name":{"type":"string"},"payouts":{"type":"array","items":{"type":"object","properties":{"amountCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"commissionCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"createdAt":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"currency":{"type":"string"},"id":{"type":"string","x-convex-table":"payouts"},"netCents":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"status":{"anyOf":[{"const":"pending"},{"const":"paid"},{"const":"failed"},{"const":"cancelled"}]}},"required":["amountCents","commissionCents","createdAt","currency","id","netCents","status"],"additionalProperties":false}},"payoutsReady":{"type":"boolean"},"timezone":{"type":"string"},"upcoming":{"type":"array","items":{"type":"object","properties":{"endMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"},"id":{"type":"string","x-convex-table":"bookings"},"spaceName":{"type":"string"},"startMs":{"anyOf":[{"type":"number"},{"type":"object","properties":{"$float":{"type":"string","contentEncoding":"base64","pattern":"^[A-Za-z0-9+/]{11}=$"}},"required":["$float"],"additionalProperties":false,"description":"Convex float64 non-finite values and negative zero use eight little-endian IEEE 754 bytes encoded as base64."}],"x-convex-type":"float64"}},"required":["endMs","id","spaceName","startMs"],"additionalProperties":false}}},"required":["canCreateListings","canManageListings","canReadPayouts","commissionBps","listings","listingsTruncated","name","payouts","payoutsReady","timezone","upcoming"],"additionalProperties":false}},{"id":"workspace.marketplace.getStatus","group":"workspace","title":"Get marketplace participation","summary":"Return participation, approval, moderation requirement, and whether the caller can change participation.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["space-read"],"requiresApproval":false,"cli":"keyvra workspace marketplace get-status","mcpTool":"workspace_marketplace_getStatus","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"approved":{"type":"boolean"},"canChange":{"type":"boolean"},"enabled":{"type":"boolean"},"requiresReview":{"type":"boolean"}},"required":["approved","canChange","enabled","requiresReview"],"additionalProperties":false}},{"id":"workspace.verifications.list","group":"workspace","title":"List host verification states","summary":"Return each host-verification kind, state, and update time.","tiers":["operator"],"kind":"query","risk":"read","riskFlags":[],"resultRedactions":[],"permissionAlternatives":[],"policy":"allow","permissions":["tenant-read"],"requiresApproval":false,"cli":"keyvra workspace verifications list","mcpTool":"workspace_verifications_list","argsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"required":[],"additionalProperties":false},"returnsSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}}]}