Skip to content
KAMOUniverse

Changelog

What's new.

Every improvement to the platform, as it ships.

  1. · MCPGatewayService

    The organization's web analytics for SIs: websites, traffic, top pages and sources (SITP TP16)

    analytics_list_websites, analytics_website_stats (views, visitors, visits, bounces, time on site, the period before, who is on now), analytics_website_metrics (top pages, entry/exit pages, referrers, campaigns, events, places, devices, languages, channels). VIEW_ANALYTICS at the gateway and inside kamo-analytics: AnalyticsClient exchanges a one-time key holding the caller's *** for the caller's own bearer token (POST /api/auth/otk), which since SITP TP02 signs the member in as themselves in their organization's team and refuses anyone without the right. Aggregates only: no visitor identifier, sessions or replays.

  2. · kamo-internal

    The studio's required devices card

    The DNS studio lists "devices" as a required core record with the Router icon, so every organization with its own domain is asked for devices.<domain>: the host the kamo-iot share pages are served on. It mirrors SecurityService's KnownAliases (which gains devices in the same change) and reworks the held SP04 commit f2b11bf81, whose card said iot: the label is customer-facing, so it is "devices", and the card's words **************** never say IoT (owner 2026-10-18). vitest collects app/setup so the catalog test runs.

  3. · kamo-internal

    Reserve the devices alias, not iot

    The kamo-iot share pages are served at devices.<domain> (owner 2026-10-18: the host is customer-facing, and "IoT" is a technical term), so the new-organization wizard refuses the alias "devices" locally, as SecurityService's OrgAliasPolicy does, instead of "iot". Share-link test fixtures move to devices.acme.com.

  4. · MCPGatewayService

    Saved report views for SIs: list, save, delete, share, and reports_run by viewId (SITP TP16)

    reports_list_views, reports_save_view (create or change; a change keeps what it does not name), reports_delete_view, reports_share_view (SHARE_REPORTS; the endpoint replaces the list, so the tool reads it and adds or removes only what was named), all as ReportViewController checks them. reports_run takes viewId: the view's stored request, changed by params and groupBy as the studio's bar changes it. A view holds settings, never figures: whoever opens a shared one runs it under their own rights.

  5. · kamo-shared-library

    The kamo-iot host label is devices, not iot

    DomainAliasType.IOT keeps its internal name but now carries the customer-facing label "devices" (owner 2026-10-18: "iot" is a technical term; URLs say devices). devices.<domain> therefore resolves the org that owns <domain> (OrgResolutionService.byHost), and iot.<domain> is no longer a platform host. No org_domains row holds an iot alias (DataLoader never ran with it on a live org), so nothing is relabelled. The share-email sample link and report fixtures follow.

  6. · SecurityService

    Devices is a standard alias

    Required like careers and computers: the record is what makes shared device access open anywhere. The kamo-iot share pages are served at devices.<domain>; the label is customer-facing, so it is "devices", never "iot" (owner 2026-10-18). KnownAliases, SSL_PROBE_LABELS and the studio mirror in DomainAliasContractTest gain it. Lands only after devices.kamouniverse.com answers over trusted TLS (kamouniverse.com only: kamocrm.com is a marketing site). Reworks the held SP04 commit 4b356087, which added iot.

  7. · SecurityService

    Reserve the devices alias, not iot

    The kamo-iot share pages are served at devices.<domain> (owner 2026-10-18: "iot" is a technical term; anything customer-facing says devices). OrgAliasPolicy reserves "devices" in place of "iot" so no organization can claim the label (0 of 48 orgs use either today). The host tests move with it: devices.acme.com resolves the org behind acme.com (DomainAliasType.IOT now carries "devices", shared-lib), and branding answers by the devices host.

  8. · kamo-shared-library

    PREPARE_COMMISSION_PAYOUTS (570), compose a draft payout batch without sending it (SITP TP18)

    MANAGE_ORG_FINANCES composes and sends a commission payout batch, and an SI can never hold it (AiRightsFloor), so a finance SI could prepare nothing for a person to review. This right opens the DRAFT batch and adds, changes or removes its lines; sending, voiding an issued line and cancelling a withdrawal keep MANAGE_ORG_FINANCES / APPROVE_ORG_PAYOUTS. A child of VIEW_ORG_FINANCES beside MANAGE_ORG_FINANCES (preparing must not imply issuing), seeded from MANAGE_ORG_FINANCES by SecurityService so everyone who composes a batch today still can. RoleRightHierarchyTest: 403 values, 279 children; roots and standalone unchanged.

  9. · MCPGatewayService

    An SI reads its own and its managed members' work, and cancels its own queued sends (SITP TP20)

    Owner decision 2 (2026-10-18). Eleven AI_ONLY tools, each calling the owning service as the SI itself (its own session; new KamoService.KAMOAI door), which scopes it again (kamoai-service SiOversight, KBService SupervisionPolicy.siManages): - workforce_roster, workforce_get_member, workforce_list_runs, workforce_get_run, workforce_explain, workforce_list_calls (read only: no **************** - collab_list_outbox, collab_cancel_outbox (the SI's own queued send only; UPDATE_RECORD) - approvals_list (mine | managed), approvals_get (read only: deciding stays human) - checklists_list_for_member (VIEW_NOTES; a member the SI manages, SI or person) Run summaries, held messages, calls and approval drafts are unlabeled content items (CP07); roster and workbench are NOT_CONTENT status. workforce_ joins the static prefixes. Guards and the four tools/list goldens regenerated: they gain exactly these eleven tools.

  10. · MCPGatewayService

    Plans & Billing for SIs: plan, catalogue, accounts, seats, invoices, usage, provider status, seat assign and remove (SITP TP18)

    Nine billing_* tools (BillingPack) through SecurityService's billing door (SITP TP02's BillingRelayController; TP18 added the licensee step and the usage reads) as the SI member: - billing_my_plan (own plan, coverage, seat eligibility, alerts: why "this needs a licensed seat"), billing_catalog (markets, plans, add-ons, promotion); no right. - billing_get_account (accounts; one with its subscriptions and members), billing_list_seats (subscription members and licenses), billing_list_invoices (without hosted-payment or PDF links or processor ids), billing_usage (mailboxes, extensions, storage): VIEW_ORG_BILLING or MANAGE_ORG_BILLING, as BillingService and the door decide. - billing_provider_status: the invoicing provider's health and sync runs (MANAGE_SUBSCRIPTION_SETTINGS); never a credential. - billing_assign_seat (COMMIT_PRICING: a seat is money; makes the member a licensee first when needed) and billing_remove_seat (DELETE_RECORD): MANAGE_ORG_BILLING; on its own initiative an SI asks a person first. Payment methods, buying or cancelling seats, plan changes, billing groups and cost modes are never built. Billing reads are unlabeled items (private to the run's principal); the golden tool lists gain exactly these nine tools.

  11. · KlusterServices

    The share host is devices.<domain>, and nothing on kamocrm.com

    Owner 2026-10-18: "iot" is a technical term, so the customer-facing host alias for kamo-iot is `devices`, and kamocrm.com is a marketing site only. auto-cert documents and pre-issues devices.<parent> (BROWSER_ONLY_ALIASES) instead of iot.<parent>, never seeds it under kamocrm.com, and pre-seeds devices.kamouniverse.com alone (iot.kamouniverse.com and iot.kamocrm.com dropped). The availability probe watches **************** only. The PDB keeps its app name kamowebiot (internal names stay).

  12. · KBService

    An SI reads the checklists of a member it manages (SITP TP20)

    Owner decision 2 (2026-10-18): an SI may see the work of the members it manages, SIs and people alike, read-only. GET **************** now answers an SI session (by its own intelligenceType, never the X-Kamo-Actor header) with VIEW_NOTES for a member whose org-graph management chain holds it (SupervisionPolicy.siManages, KamoCollab CP02); 404 for anyone else, as before. People keep the SUPERVISE_AI_MEMBERS + supervisee rule unchanged.

  13. · MCPGatewayService

    Timecards, leave, breaks and attendance, payroll reads and commission reads for SIs (SITP TP18)

    25 tools, so an SI does in HR -> Attendance, Payroll and My Commissions what a person does, within its rights, through SecurityService's TimecardController, PayrollRelayController, PayrollProviderRelayController and CommissionController as the SI member (its OTK): - timecards_* (TimecardsPack): my_status, get (a card and its whole approval trail), approval_queue (the line manager's), list_punches (day or range), roster (or the HR summary), list_exceptions, pto_balance, list_breaks, attendance; and the pay-affecting acts approve (APPROVE, APPROVE_ON_BEHALF, SEND_BACK, UNAPPROVE), correct_punch (CORRECT / VOID / INSERT), waive_exception, use_pto, adjust_pto, decide_break (PAID / WAIVED / DISPUTED), which are COMMIT_PRICING (APPROVE_BEFORE: on its own initiative an SI asks a person; a cited request is the approval), and excuse_attendance (UPDATE_RECORD). SecurityService decides the timecard capacity from the session (payroll, manager right, or line manager) and checks it there; a line manager holds no right, so those tools name none. An SI never acts on its own card's approval; submitting and attesting breaks (the employee's own statements) are not offered. Every reason stands on the wage record, so these are disclosing (NOTE/SHARE to the member and MANAGE_TIMECARDS holders). - payroll_* (PayrollPack): list_periods (+ close readiness and export history with FINALIZE_PAY_PERIODS), export_dry_run (a read: totals only), cost_report, compliance_report (rounding, break premiums, adjustment audit, a member's evidence pack), provider_status (health, runs, dispatches; never a credential). Generating, closing, finalizing, reopening, committing, reversing and dispatching stay a person's. - commissions_* (CommissionsPack): my_summary (balance, ledger, opportunities), my_withdrawals, list_batches and list_withdrawals (VIEW_ORG_FINANCES, MANAGE_ORG_FINANCES or APPROVE_ORG_PAYOUTS). Payout accounts, withdrawals, batch send and line void are never built. HR reads are unlabeled items (no record kind names a timecard or a balance: private to the run's principal). COMMIT_PRICING stays in ApprovalsPack.DECISION_ONLY with FINANCIAL_TRANSACTION (as TP17 rules); the golden tool lists gain exactly these 25 tools.

  14. · SecurityService

    The billing door makes a member a licensee before a seat, and reads usage for the org billing rights (SITP TP18)

    BillingService's LicenseService.assign refuses anyone who is not already a licensee of the subscription, so the relay's seat assign alone could not seat a new member. POST **************** now relays that one step under the seat-write gate (owner or MANAGE_ORG_BILLING): it always sets isLicensee, and reads the member's current row first so a subscription manager stays one (BillingService's add rewrites both flags); nobody is ever made a manager here. GET **************** and /storage/(summary|history): the organization's metered usage. BillingService answers them from X-Org-Id alone, so this door asks the owner or VIEW_ORG_BILLING / MANAGE_ORG_BILLING. Cost modes and the platform storage views stay unrelayed.

  15. · kamo-internal

    Mirror the SITP TP02 rights (440-442) and their parents

    MANAGE_ANALYTICS under VIEW_ANALYTICS (Analytics changes, now that each member signs in as themselves), and VIEW_ORG_BILLING with MANAGE_ORG_BILLING under it (organization billing for non-owners). Display strings match RoleRightType.java exactly; no app service type, so they sit with the other system rights. RIGHT_PARENT 276 -> 278.

  16. · MCPGatewayService

    Quotes, service work, orders, the commerce pipeline and catalog, subscriptions and reserved opportunities for SIs (SITP TP17)

    86 tools over SecurityService as the SI member, each right checked there as well as here: - quotes_*: find, read (share links never carry their address), create, edit, revise, cancel, turn an accepted quote into an order, send (Kamo emails the customer's link: SEND_EXTERNAL_EMAIL, outreach gate), withdraw a link. No write carries a total. - service_*: work orders (find, read, open, edit, status, labour/parts lines, notes, vendors), the priced task catalog (search, read, save, delete), service requests (find, raise, accept: COMMIT_PRICING) and their vendor work orders. A job's sign-off and a visit's clock stay human. - orders_*: find, read, create and edit drafts (totals summed by SecurityService), status (PAID/REFUNDED are FINANCIAL_TRANSACTION), returns (approving one is money), fulfilments, notes (never customer-visible). - commerce_*: markets, the pipeline (HEALTHCARE left to the EHR), products, stock and its adjustment, products saved, shipments, draft orders, discounts, rentals, procurement (approving a purchase is money). - subscriptions_*: catalog and pricing, subscriptions (plan, seats, add-ons, renew: COMMIT_PRICING; cancel: DELETE_RECORD), orders (draft, edit, approve/activate), invoices (issue; mark paid/void/refund: FINANCIAL), agreements (read as text, issue), analytics. Never a payment method, a COMP order, custom pricing or an agreement's acceptance. - opportunities_*: reserved claims on leads (find, read, a lead's, file, ask more time, a manager's decisions; denying takes DELETE_OPPORTUNITIES). Commission terms stay a person's. The money tools ask FINANCIAL_TRANSACTION, which the charter forbids unless the organization allows it, so the default SI tools/list gains 82 of the 86. COMMIT_PRICING and FINANCIAL_TRANSACTION stay decision-only in approvals_request (a price or payment is often decided outside any tool). Guards: new prefixes, ContentReadTools, DisclosingTools, CollabTools, catalogue counts; the four tools/list snapshots grow by exactly these tools.

  17. · SecurityService

    HR reads a member's leave balances, as it already spends and corrects them (SITP TP18)

    GET **************** own on identity (as /me/accruals), anyone else's with MANAGE_TIMECARDS, the right that already gates /use and /adjust on the same balances; a refusal never reaches TimecardService. The balance an SI acting for HR reads before recording or correcting leave (timecards_pto_balance).

  18. · SecurityService

    Rights-carrying doors to commerce invoices and billing, and the MANAGE_ANALYTICS backfill (SITP TP02)

    Commerce invoices: InvoicingService's CommerceInvoiceController checks no right by design (it expects SecurityService to own the session and the rights) and nothing relayed to it. /api/security/commerce-invoices is that door: list, one and the PDF take VIEW_SUBSCRIPTION_INVOICES (or MANAGE_); drafting from a job or order, finalize, void and credit take MANAGE_SUBSCRIPTION_INVOICES (@RequireRight). Org and actor come from the session only; ids are validated before they reach a path. No backfill: existing rights, no screen. Billing: BillingService takes identity from X-Org-Id/X-Member-Id, so a non-browser session holder (the SI tool plane) needs a trusted hop. /api/security/billing relays a fixed list only — own plan/coverage/ eligibility/alerts, the plan catalogue, the org's **************** and seat assign/remove — stamping both headers from the session; BillingService decides each (own account, owner, VIEW_/MANAGE_ORG_BILLING), and a seat write here also needs the owner or MANAGE_ORG_BILLING. Payment methods, buying/cancelling seats, plan changes and billing groups are never relayed. Backfill: MANAGE_ANALYTICS (440) is seeded from VIEW_ANALYTICS on the boot that introduces it (every Analytics user could change it under the shared login); VIEW_/MANAGE_ORG_BILLING are seeded to nobody.

  19. · MCPGatewayService

    Report options, export, paging and schedules; rights explained; org structure; settings screens by their rights (SITP TP16)

    30 new SI tools, each asking the right the screen's endpoint checks (rights enforced twice): - reports_options (a picker's live choices), reports_run pages through every row (page, hasMore), reports_export (SecurityService renders CSV/XLSX/PDF/JSON under VIEW_REPORTS + EXPORT_REPORTS; kept in My Docs through files_upload's door, CREATE_DOCUMENTS; told to the organization carrying REPORT:<key>/<level>/<si>), reports_list_schedules (+ delivery history), reports_schedule (create or change; runs as its owner; the organization's own addresses only; recipients told the report), reports_unschedule. Running a schedule now stays DaemonService's hook. - directory_explain_rights (the caller's own waterfall: state and every source of each right; the SI floor is never held), directory_list_departments, directory_list_job_titles, **************** (no phone numbers), directory_list_teams, directory_get_state_licensing / **************** (STATE_LICENSING_*; the endpoint replaces the whole list, so a change reads it first). - settings_get_organization, settings_update_brand_colors (MANAGE_ORG_BRANDING; shades by the shared ColorVariants; theme republished), settings_get_disclosure, settings_update_status_labels (MANAGE_CRM_SETTINGS), settings_get_meetings / settings_update_meetings (MANAGE_MEET_SETTINGS; the welcome message every guest reads stays with people), settings_get_email_signature (read: the designer renders the HTML in the browser), settings_list_email_templates / settings_get_email_template / settings_update_email_template (MANAGE_EMAIL_SETTINGS; HTML bodies only, block-editor bodies stay in the editor; told to the public), settings_list_doc_types / settings_save_doc_type (MANAGE_DOCS_SETTINGS), settings_list_phone_numbers / settings_assign_phone_number (never an SI's own lines) / settings_list_phone_extensions / settings_phone_health / settings_list_mobile_devices (no IPs), settings_simulate_chat_policy (policy edits stay human: they bound whom SIs may contact). Guards: catalogue +30, settings_ prefix, **************** rulings.

  20. · kamo-shared-library

    SITP TP02 rights — MANAGE_ANALYTICS (440), VIEW_ORG_BILLING (441), MANAGE_ORG_BILLING (442)

    MANAGE_ANALYTICS: Analytics signed every caller in as one shared analytics administrator, so VIEW_ANALYTICS let anyone create, edit and delete every tracked website, link and pixel. Members now sign in as themselves; VIEW reads, MANAGE changes. A child of VIEW_ANALYTICS, seeded from it by SecurityService so nobody loses what they can do today. VIEW_ORG_BILLING / MANAGE_ORG_BILLING: Plans & Billing showed a member only their own account and the owner everyone's (a flag, not a right). These let the owner give an administrator or an SI read access to the organization's billing accounts, subscriptions, seats and invoices, and the actions on them. Seeded to nobody: the owner keeps the owner path, nobody gains or loses anything until granted. RoleRightHierarchyTest: 402 values, 278 children, 45 roots with children, 79 standalone, 124 roots.

  21. · MCPGatewayService

    Documents, KB writing and review, careers screening, checklists, sales scripts and binders for SIs (SITP TP14)

    84 tools and docs_search filters, so an SI can do in Docs, the knowledge base, HR careers, checklists, sales scripts and binders what a person does, within its rights: - docs_search: by record (collection + recordId), folder, trash/hidden, files/templates. - docs_* (DocsWorkPack): get, history (never the IP addresses), list_types, update, move, delete (DELETE_RECORD), restore, list/create/rename/delete folders, list/read versions (office files read by their PDF), snapshot, restore_version, list_templates, docs_create (Markdown/text into My Docs or a record's documents, through ConversionService's upload), share (RELEASE_INFORMATION; the plan carries the document, CP05 D26), list_shares, unshare, list_shared_with_me, mark_shares_seen. Clearance level stays human. - kb_* (KbWritePack): list, tree, overview (stale/recent), create/update in Markdown (stored as Lexical + plain text), unpublish, delete, move, versions, restore, submit, review queue, approve (always SHARE_DOCUMENT_EXTERNAL; an SI never approves its own article), reject, related, pins. Editing or restoring a PUBLISHED article that is or becomes public is SHARE_DOCUMENT_EXTERNAL; every write reads the article first (NOT_FOUND before a send). - careers_* (CareersPack): postings list/get/save (created ON_HOLD, never published by a save), set_posting_status (AVAILABLE = SHARE_DOCUMENT_EXTERNAL), duplicate, delete; applications list/read (with resume text; reading never marks opened), set_application_status, erase_applicant (DELETE_RECORD); list_openings. - checklists_* (ChecklistsPack): the caller's own lists; no assignees here, and a task assigned to a colleague is never reworded or removed (tasks_update owns that). - scripts_* (ScriptsAdminPack): list_markets, create, update (full replace guarded: kept blocks resent as they are, dropped blocks refused unless dropUnlisted), set_status, reorder, delete. - binders_* (BindersPack): list, get, create, update, duplicate, delete, add/remove item, reorder, share (RELEASE_INFORMATION, carries every document), unshare, render (one PDF stored beside the binder's documents). Every tool is ruled on in DisclosingTools / ContentReadTools / CollabTools; the catalogue and golden tool lists are regenerated for exactly these 84 tools and docs_search.

  22. · EmailService

    An event names its organiser; an RSVP that cannot be taken says why (SITP TP12)

    - EventDto carries organizerEmail, so the Tool Plane's calendar_rsvp names who the answer is mailed to (and classifies an outside organiser as an external meeting) before it asks any approval. - POST **************** a status other than accepted/decoderd/tentative is 400 INVALID_STATUS, no such event 404 EVENT_NOT_FOUND, not a guest 409 NOT_AN_ATTENDEE; these were 500s.

  23. · MCPGatewayService

    An SI records or withdraws a lead's call consent (SITP TP11)

    leads_record_voice_consent and leads_withdraw_voice_consent over SecurityService's PUT/DELETE /leads/{id}/ai-voice-consent (authorized there like editing the lead's contact info; EDIT_LEADS here). As for a contact: recording needs a teammate's verified request (the standing approval), withdrawal is always allowed. TP10 shipped the read. Snapshots gain exactly the two.

  24. · MCPGatewayService

    Meetings history and transcripts, calendar answers, presence, notification dismiss/snooze, webinars (SITP TP12)

    25 new SI tools, each checked by the same rights at the gateway and at the owning service: - meetings_history, meetings_get, meetings_get_transcript (MEETING, pre-checked), meetings_set_summary (the transcript's author only; told to the meeting's people), meetings_add_si (only on a teammate's request; MediaService lets an SI place SIs only in a meeting it is in), meetings_remove_si, meetings_set_confidential. VIEW_MEETINGS + participant, as MediaService checks. - calendar_rsvp (the organiser is emailed: SCHEDULE_EXTERNAL_MEETING when outside), calendar_accept_mail_invite (applies a follow-up, else adds; answers no one), calendar_list_calendars, calendar_events_for_record, calendar_check_conflicts; calendarId on calendar_create_event (the organization calendar reaches everyone). - presence_get, presence_set_status (shown to the organization). - notifications_dismiss, notifications_snooze, notifications_preferences; the kind filter offers the IoT and RPM kinds (fixes NotificationsPackTest / KnowledgeAndPeoplePacksTest on origin/main). - webinars_list, webinars_options, webinars_book, webinars_leave, webinars_availability, webinars_set_availability (own hours), webinars_cancel, webinars_add_attendees (presenter). Guards: catalogue 160 -> 185, presence_/webinars_ prefixes, **************** rulings.

  25. · kamo-internal

    Mirror the SITP TP01 rights (410-418) and their parents

    MANAGE_PRODUCTS, MANAGE_INVENTORY, MANAGE_RETAIL_CUSTOMERS, MANAGE_FULFILLMENT, MANAGE_RENTALS, MANAGE_PROCUREMENT and APPROVE_PURCHASE_REQUESTS under ACCESS_COMMERCE; MANAGE_ENCOUNTERS under VIEW_CHART; MANAGE_LEAD_CALLBACKS a standalone root. Display strings match RoleRightType.java exactly, so the permission editors file them under Retail, Rentals, Procurement, CRM and Patient Records. RIGHT_PARENT 268 -> 276.

  26. · kamo-shared-library

    SITP TP01 rights for formerly session-only endpoints (410-418)

    Nine rights in the TP01 block for endpoints that answered any signed-in member of the organization: - MANAGE_PRODUCTS, MANAGE_INVENTORY, MANAGE_RETAIL_CUSTOMERS, MANAGE_FULFILLMENT (RETAIL), MANAGE_RENTALS (RENTAL), MANAGE_PROCUREMENT and APPROVE_PURCHASE_REQUESTS (PROCUREMENT), all children of ACCESS_COMMERCE; - MANAGE_LEAD_CALLBACKS (CRM), a standalone root: the softphone schedules callbacks for members without VIEW_LEADS; - MANAGE_ENCOUNTERS (EHR) under VIEW_CHART: starting, ending and closing a visit asked only for VIEW_CHART. SecurityService seeds each from the right gating the screen that does the work today, so nobody loses access. **************** orgId) answers only for a product of that org; the org-less lookup let a member read another tenant's stock by product id. RoleRightHierarchyTest: 399 values, 276 children, 80 standalone, 123 roots. RpmRightsTest no longer requires 404 to stay the ceiling.

  27. · MCPGatewayService

    Leads, accounts and communications timelines for SIs (SITP TP10)

    54 tools over SecurityService as the SI member, each right checked there as well as here: - leads: create, edit (masked values never written back), assign, bulk reassign, delete, account link, form, status labels, markets, email opt-out, SI-call consent read, hot reassign - the pool: what is available, take the next lead (FINANCIAL, accept gate), blockers, credit balances, imports, intake endpoints, bulk-email audience - follow-up: callbacks (an invitation to the lead is SCHEDULE_EXTERNAL_MEETING through the outreach gate), my callbacks due, the lead's tasks, its timeline of notes (read, reply, edit, delete own) - communications: a lead's merged timeline, an email in full, the grid feed, webinars, social conversation - accounts: create, edit, notes, leads, orders, people, history, addresses, merge, delete, timeline - commerce_record_*: a record's timeline and contact points (new commerce_ prefix) Classified in ContentReadTools, DisclosingTools and CollabTools; internal reads refused for outside readers; the catalogue guards and the four tools/list snapshots grow by exactly these 54.

  28. · MCPGatewayService

    Shared mailboxes, folders, stars, Trash, labels, attachments in and out, group chats, drips, files_upload, contact groups (SITP TP13)

    27 tools and two new arguments, so an SI can work its mail and chat as a person does: - mail: mail_list_folders, mail_flag, mail_delete (to Trash only; a message already in Trash is refused), mail_list_labels, mail_label, mail_read_attachment (text, or OCR for PDFs and images), mail_list_shared_mailboxes. sharedMailboxId on search, unread, read, mark read, move, send and reply (EmailService checks the grant; a shared send goes through the shared mailbox's own endpoint and its SI guards). attachments on mail_send and mail_reply: documents fetched from DocsService as the caller, each carried by the send's disclosure plan as its DOCUMENT. label: in mail_search covers listing by label. - chat: chat_read_attachment, chat_send_file (SEND_INTERNAL_MESSAGE in a team chat, SHARE_DOCUMENT_EXTERNAL to a support visitor), chat_create_group, chat_add_members, chat_remove_member, chat_leave, chat_rename, chat_list_members, chat_edit_message, chat_delete_message, chat_react. Every call that names a message or an attachment names its conversation (?session=), so the audience pre-check is the whole check. chat_read now names each attachment's id. - drips_list, drips_get, drips_enrollments (a lead's enrolment is its LEAD), drips_enroll (SEND_EXTERNAL_EMAIL, one outbound mail per person, the outreach gate per lead or address), drips_unenroll. VIEW_/MANAGE_BULK_EMAIL, as DripController checks. - files_upload: text or base64 into documents through ConversionService (OTK, CREATE_DOCUMENTS, malware scan); told to the organization (DOCUMENT, SHARE). - contacts_list_groups, contacts_group_add, contacts_group_remove (VIEW_/EDIT_CONTACTS). Every tool is ruled on in DisclosingTools / ContentReadTools / CollabTools; the catalogue, approvals and golden tool lists are regenerated for exactly these changes.

  29. · MCPGatewayService

    The phone inbox, the do-not-contact list, contact call consent, text templates and MMS (SITP TP11)

    22 new SI tools, each checked by the same rights at the gateway and at VOIPService/EmailService: - phone_list_voicemail, phone_voicemail_mark_read, phone_voicemail_archive, phone_voicemail_delete **************** DELETE_RECORD), phone_get_recording (transcript; labeled by its call log), **************** phone_list_org_voicemail, phone_org_voicemail_mark_read (MANAGE_VOICEMAIL), phone_queue_status, phone_set_agent_state, phone_mark_missed_calls_seen, phone_list_my_numbers (PhoneInboxPack, pack phone). - dnc_check (ACCESS_VOIP), dnc_list and dnc_add (MANAGE_VOIP_SETTINGS); remove/import stay human. - contacts_get_voice_consent, contacts_record_voice_consent (an SI only on a teammate's request, the standing approval), **************** - sms_list_templates, sms_preview_template, sms_create_template, sms_update_template over the members' template door; sms_send takes templateKey+variables (rendered before the plan, so the approval and disclosure judge the words that go) and attachmentDocumentId (MMS: a JPEG/PNG/GIF/PDF from Docs up to 1 MB, carried as a DOCUMENT in the disclosure plan). Guards: catalogue 111 -> 133, dnc_ prefix, **************** rulings, onRequestOf set; snapshots regenerated: the lists gain exactly these tools and sms_send's new arguments.

  30. · VOIPService

    The softphone's own surfaces check ACCESS_VOIP, and members get a session door to text templates (SITP TP11)

    - CallController (call history, own voicemail list/read/archive, queues, agent state), missed-calls-seen, the do-not-contact check and SMS send now check ACCESS_VOIP at the endpoint: the right the softphone, mobile dialer and texting window are opened by, so nobody who uses those screens loses them (owner decision 5). The DNC check also admits MANAGE_VOIP_SETTINGS. - PUT /calls/agent-state answers 400 for a state that is none of the four instead of a 500. - /api/voip/sms/text-templates: list, get, preview and render with ACCESS_VOIP; create, edit, archive and unarchive with MANAGE_VOIP_SETTINGS; org and actor from the session. The internal-auth /sms/templates surface was unreachable from any member session.

Your universe is waiting.

Start free in minutes. Add products whenever you are ready — no migration, no new logins.

Free forever — no credit card required