{"serverId":"mcp-registry/com.coordinalo/mcp-server","tools":[{"name":"admin_create_service","fixed":{"name":"admin_create_service","description":"Add a bookable service to an organization. Use after admin_create_organization. Auto-discoverable by default. If the org has exactly one active provider, the service is auto-assigned to them. With multiple providers, use service_assign_provider to assign manually — unassigned services block admin_toggle_discoverable. Next step: admin_set_availability to configure the provider schedule. Requires X-Org-Api-Key header.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","name","duration_minutes","price"],"properties":{"name":{"type":"string"},"price":{"type":"number","minimum":0},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"currency":{"enum":["CLP","UF","USD"],"type":"string"},"vertical":{"type":"string"},"description":{"type":"string"},"duration_minutes":{"type":"integer","maximum":480,"minimum":5}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":256,"tokensAfter":256},{"name":"admin_list_providers","fixed":{"name":"admin_list_providers","description":"List active providers (professionals) for an organization. Use this to get providerId before calling admin_set_availability. The org owner is auto-provisioned as a provider. Requires X-Org-Api-Key header.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":120,"tokensAfter":120},{"name":"admin_set_availability","fixed":{"name":"admin_set_availability","description":"Replace the weekly availability schedule for a provider (not additive — overwrites all existing blocks). Get providerId from admin_list_providers first. Schedule uses day names and HH:MM times. Requires X-Org-Api-Key header.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","providerId","schedule"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"schedule":{"type":"array","items":{"type":"object","required":["day","start","end"],"properties":{"day":{"enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],"type":"string"},"end":{"type":"string"},"start":{"type":"string"}}}},"providerId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"agendas_create","fixed":{"name":"agendas_create","description":"Create a public agenda — a shareable booking page where external clients can self-book appointments. Links to a specific provider and/or service. The agenda gets a public URL at /{orgSlug}/agenda/{slug}. Create this after services and availability are configured. Without a public agenda, clients can only be booked via the API or dashboard.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","slug"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"isActive":{"type":"boolean"},"isPublic":{"type":"boolean"},"description":{"type":"string"},"proveedorId":{"type":"string"},"showSessions":{"type":"boolean"},"showClientNames":{"type":"boolean"},"bookingFlowOrder":{"enum":["service_first","provider_first","auto"],"type":"string"},"defaultDurations":{"type":"array","items":{"type":"number"}},"showProviderList":{"type":"boolean"},"assignmentStrategy":{"enum":["manual","round_robin","least_booked","most_available","priority","random"],"type":"string"},"requiresPrepayment":{"type":"boolean"},"allowGroupSelection":{"type":"boolean"},"serviceSelectionMode":{"enum":["required","optional","auto","hidden"],"type":"string"},"providerSelectionMode":{"enum":["required","optional","auto","hidden"],"type":"string"},"showProviderUtilization":{"type":"boolean"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":396,"tokensAfter":396},{"name":"agendas_delete","fixed":{"name":"agendas_delete","description":"Delete a public agenda permanently. Cascades to related sessions booked through this agenda, comments, and service configs. Requires confirm: true. Cannot be undone.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","agendaId","confirm"],"properties":{"apiKey":{"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"agendaId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"agendas_get","fixed":{"name":"agendas_get","description":"Get complete details of a public agenda by ID. Returns all configuration including booking flow (service_first, provider_first, auto), selection modes, assignment strategy, privacy settings, linked provider/service, and session count. Use before agendas_update to inspect current settings.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","agendaId"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"agendaId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"agendas_list","fixed":{"name":"agendas_list","description":"List public agendas for an organization. Returns agendas with their provider, service, and session counts.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":90,"tokensAfter":90},{"name":"agendas_update","fixed":{"name":"agendas_update","description":"Update a public agenda’s configuration. Partial update — only provided fields are changed. Supports modifying: title, description, visibility (isPublic/isActive), booking flow order (service_first/provider_first/auto), selection modes for service and provider (required/optional/auto/hidden), assignment strategy (manual/round_robin/least_booked/most_available/priority/random), privacy flags (showSessions, showClientNames, showProviderUtilization, showProviderList), prepayment, and provider/servic","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","agendaId"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"agendaId":{"type":"string"},"category":{"type":"string"},"isActive":{"type":"boolean"},"isPublic":{"type":"boolean"},"expiresAt":{"type":"string"},"isDefault":{"type":"boolean"},"description":{"type":"string"},"proveedorId":{"type":"string"},"showSessions":{"type":"boolean"},"showClientNames":{"type":"boolean"},"bookingFlowOrder":{"enum":["service_first","provider_first","auto"],"type":"string"},"defaultDurations":{"type":"array","items":{"type":"number"}},"showProviderList":{"type":"boolean"},"assignmentStrategy":{"enum":["manual","round_robin","least_booked","most_available","priority","random"],"type":"string"},"requiresPrepayment":{"type":"boolean"},"allowGroupSelection":{"type":"boolean"},"serviceSelectionMode":{"enum":["required","optional","auto","hidden"],"type":"string"},"providerSelectionMode":{"enum":["required","optional","auto","hidden"],"type":"string"},"showProviderUtilization":{"type":"boolean"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":475,"tokensAfter":475},{"name":"availability_get_provider_schedule","fixed":{"name":"availability_get_provider_schedule","description":"Get the configured weekly availability schedule for a provider (not free slots, but the base configuration). Use admin_set_availability to modify.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","providerId"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"providerId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":120,"tokensAfter":120},{"name":"availability_get_slots","fixed":{"name":"availability_get_slots","description":"Query available time slots within a date range. Agenda-aware: without clientId, filters by the org default public agenda — each org decides which services to expose. With clientId, resolves the client titular provider and returns their full service catalog. Five modes: (1) orgSlug only — slots from the public agenda grouped by service, provider auto-assigned at booking; (2) orgSlug + clientId — resolves titular provider if set, falls back to agenda; (3) orgSlug + agendaId — slots for a specific ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"date":{"type":"string"},"apiKey":{"type":"string"},"dateTo":{"type":"string"},"orgSlug":{"type":"string"},"agendaId":{"type":"string"},"clientId":{"type":"string"},"dateFrom":{"type":"string"},"duration":{"type":"integer","maximum":480,"minimum":5},"timezone":{"type":"string"},"serviceId":{"type":"string"},"providerId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":282,"tokensAfter":282},{"name":"booking_cancel","fixed":{"name":"booking_cancel","description":"Cancel an existing session. By default applies the org cancellation policy: the charge is computed from the no-charge/partial/full windows and, if the policy has autoApply, registered as a penalty transaction (money-write). Set applyCancellationPolicy: false to waive the charge. Requires confirm: true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","sessionId","reason","confirm"],"properties":{"apiKey":{"type":"string"},"reason":{"type":"string","maxLength":500},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"sessionId":{"type":"string"},"cancelledBy":{"enum":["client","provider","admin"],"type":"string"},"applyCancellationPolicy":{"type":"boolean"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"booking_create","fixed":{"name":"booking_create","description":"Create a new session/appointment for a client. providerId is optional — if omitted, the system auto-assigns a provider using the agenda assignment strategy (round_robin, least_booked, etc.). When a client has a titular provider, that provider is preferred automatically. Without providerId and without publicAgendaId, the org default public agenda is used. Preconditions: (1) service must exist and be active, (2) client must exist (use client_create first). Use availability_get_slots to find valid ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","clientId","serviceId","scheduledAt"],"properties":{"notes":{"type":"string","maxLength":1000},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"duration":{"type":"integer","maximum":480,"minimum":5},"modalidad":{"enum":["presencial","a_domicilio","remoto"],"type":"string"},"serviceId":{"type":"string"},"autoCharge":{"type":"boolean"},"providerId":{"type":"string"},"retroactive":{"type":"boolean"},"scheduledAt":{"type":"string"},"idempotencyKey":{"type":"string"},"publicAgendaId":{"type":"string"},"retroactiveStatus":{"enum":["completed","no_show"],"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":349,"tokensAfter":349},{"name":"booking_create_recurring","fixed":{"name":"booking_create_recurring","description":"Create recurring sessions (e.g. weekly therapy). Generates multiple individual sessions linked by a recurrence series ID. Max 52 occurrences.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","clientId","providerId","recurrence","timezone","confirm"],"properties":{"notes":{"type":"string","maxLength":1000},"apiKey":{"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"timezone":{"type":"string"},"serviceId":{"type":"string"},"providerId":{"type":"string"},"recurrence":{"type":"object","required":["startDate","startTime","duration","daysOfWeek","endCondition"],"properties":{"duration":{"type":"integer","maximum":480,"minimum":15},"startDate":{"type":"string"},"startTime":{"type":"string"},"daysOfWeek":{"type":"array","items":{"type":"integer","maximum":6,"minimum":0},"maxItems":7,"minItems":1},"endCondition":{"anyOf":[{"type":"object","required":["type","date"],"properties":{"date":{"type":"string"},"type":{"type":"string","const":"until"}}},{"type":"object","required":["type","count"],"properties":{"type":{"type":"string","const":"count"},"count":{"type":"integer","maximum":52,"minimum":1}}}]}}},"skipConflicts":{"type":"boolean"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":364,"tokensAfter":364},{"name":"booking_get","fixed":{"name":"booking_get","description":"Get complete details of a session/appointment by its ID, including client, provider, service, financial, and delivery proof information.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","sessionId"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"sessionId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"booking_list","fixed":{"name":"booking_list","description":"List sessions for an organization with filters by provider, client, service, status, and date range. Supports cursor-based pagination.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"cursor":{"type":"string"},"dateTo":{"type":"string"},"status":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"orderBy":{"enum":["scheduledAt_asc","scheduledAt_desc"],"type":"string"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"dateFrom":{"type":"string"},"serviceId":{"type":"string"},"providerId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":204,"tokensAfter":204},{"name":"booking_list_requests","fixed":{"name":"booking_list_requests","description":"List the reschedule requests (SessionRequest) of an organization — the org side of the bilateral coordination loop a client opens from the portal. Filter by status (pending|all|resolved, default pending), sessionId or clientId. Returns the proposed slot, current session state, and who proposed it. Cursor-paginated. Set includePendingCount: true to also get the count of pending requests (powers the sidebar badge). Read-only. Use booking_resolve_request to approve or reject one.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"cursor":{"type":"string"},"status":{"enum":["pending","all","resolved"],"type":"string"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"sessionId":{"type":"string"},"includePendingCount":{"type":"boolean"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":264,"tokensAfter":264},{"name":"booking_reschedule","fixed":{"name":"booking_reschedule","description":"Reschedule a session to a new time. Cancels the original and creates a new one. Requires confirm: true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","sessionId","newScheduledAt","confirm"],"properties":{"apiKey":{"type":"string"},"reason":{"type":"string","maxLength":500},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"sessionId":{"type":"string"},"newProviderId":{"type":"string"},"newScheduledAt":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":149,"tokensAfter":149},{"name":"booking_resolve_request","fixed":{"name":"booking_resolve_request","description":"Approve or reject a pending reschedule request (SessionRequest) that a client proposed from the portal — closes the bilateral coordination loop. outcome: \"approved\" applies the reschedule atomically (moves the session to the proposed slot in the same transaction); \"rejected\" requires a reason of at least 10 characters. Idempotent: a request already resolved returns a conflict with its current status. Emits the corresponding session lifecycle events.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","requestId","outcome"],"properties":{"apiKey":{"type":"string"},"reason":{"type":"string","maxLength":500},"orgSlug":{"type":"string"},"outcome":{"enum":["approved","rejected"],"type":"string"},"requestId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":234,"tokensAfter":234},{"name":"booking_update_status","fixed":{"name":"booking_update_status","description":"Advance a session through the Servicialo lifecycle: confirm, start, complete, or mark as no-show. NOTE: the \"deliver\" action is NOT available via MCP (ref PDC-SEC-001) — MCP authentication cannot validate actor-as-Proveedor. Delivery must be performed via the REST endpoint PATCH /api/organizations/[orgSlug]/coordinalo/sessions/[sessionId]/deliver which enforces provider binding.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","sessionId","action"],"properties":{"notes":{"type":"string","maxLength":1000},"action":{"enum":["confirm","start","complete","deliver","no_show"],"type":"string"},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"sessionId":{"type":"string"},"noShowType":{"enum":["client","provider"],"type":"string"},"deliveryType":{"enum":["completo","parcial"],"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":254,"tokensAfter":254},{"name":"cierre_listar_clientes","fixed":{"name":"cierre_listar_clientes","description":"List client closings for an organization. Filter by period and/or client.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"periodo":{"type":"string"},"clientId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"cierre_listar_utilidades","fixed":{"name":"cierre_listar_utilidades","description":"List retained earnings (utilidades retenidas) for an organization. Returns per-period records with accumulated totals: ingresos, costos, utilidadNeta, distribuido, retenido.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":112,"tokensAfter":112},{"name":"cierre_preview_cliente","fixed":{"name":"cierre_preview_cliente","description":"Preview the financial snapshot for a client in a period WITHOUT creating the closing. Returns totals for ventas, cobros, pagos, sessions.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","clientId","periodo"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"periodo":{"type":"string"},"clientId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":123,"tokensAfter":123},{"name":"client_create","fixed":{"name":"client_create","description":"Create a new client in the organization. If a Person with the same email exists, it will be linked (not duplicated).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","name","lastName"],"properties":{"rut":{"type":"string"},"name":{"type":"string","minLength":1},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"notes":{"type":"string"},"phone":{"type":"string"},"apiKey":{"type":"string"},"comuna":{"type":"string"},"orgSlug":{"type":"string"},"lastName":{"type":"string","minLength":1},"direccion":{"type":"string"},"idempotencyKey":{"type":"string"},"proveedorTitularId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":223,"tokensAfter":223},{"name":"client_get","fixed":{"name":"client_get","description":"Get complete details of a client including financial summary and recent sessions.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","clientId"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"includeHistory":{"type":"boolean"},"includeFinancials":{"type":"boolean"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":115,"tokensAfter":115},{"name":"client_list","fixed":{"name":"client_list","description":"List clients of an organization with search and pagination. Can filter by provider or outstanding debt.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"cursor":{"type":"string"},"search":{"type":"string"},"hasDebt":{"type":"boolean"},"orgSlug":{"type":"string"},"providerId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":135,"tokensAfter":135},{"name":"client_update","fixed":{"name":"client_update","description":"Update an existing client's personal data. Email cannot be changed via MCP.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","clientId"],"properties":{"rut":{"type":"string"},"name":{"type":"string"},"notes":{"type":"string"},"phone":{"type":"string"},"apiKey":{"type":"string"},"comuna":{"type":"string"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"lastName":{"type":"string"},"direccion":{"type":"string"},"proveedorTitularId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":156,"tokensAfter":156},{"name":"comms_create_campaign","fixed":{"name":"comms_create_campaign","description":"Create a new email campaign with HTML body to send to a segmented audience. Supports variable substitution: {nombre}, {apellido}, {nombre_completo}, {email}, {telefono}, {organizacion}. Use audienceType \"predefined\" with audienceId \"active\"/\"inactive\"/\"new\"/\"withPhone\"/\"withoutPhone\", or \"adhoc\" with custom filters. On send, links in the body are auto-tagged with UTMs (utm_campaign = stable slug from campaign name) and a legal footer with unsubscribe link is appended. Returns campaign ID and rec","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","name","emailBody","audienceType","confirm"],"properties":{"name":{"type":"string","maxLength":100,"minLength":1},"type":{"enum":["email","whatsapp","auto"],"type":"string","default":"email"},"apiKey":{"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"emailBody":{"type":"string"},"audienceId":{"type":"string"},"adHocFilters":{"type":"object","required":["rules","operator"],"properties":{"rules":{"type":"array","items":{"type":"object","required":["field","operator","value"],"properties":{"field":{"type":"string"},"value":{},"operator":{"type":"string"}}}},"operator":{"enum":["AND","OR"],"type":"string"}}},"audienceType":{"enum":["predefined","adhoc"],"type":"string"},"emailSubject":{"type":"string","maxLength":200}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":395,"tokensAfter":395},{"name":"comms_get_campaign","fixed":{"name":"comms_get_campaign","description":"Get details of a specific campaign with optional delivery logs per recipient.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","campaignId"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"logLimit":{"type":"integer","maximum":200,"minimum":1},"campaignId":{"type":"string"},"includeLogs":{"type":"boolean"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":121,"tokensAfter":121},{"name":"comms_get_preferences","fixed":{"name":"comms_get_preferences","description":"Get the communication preferences for an organization (WhatsApp, email, confirmation, reminder channels and messages).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":96,"tokensAfter":96},{"name":"comms_list_audiences","fixed":{"name":"comms_list_audiences","description":"List the saved audiences/segments used for campaign targeting, each with its filter definition and campaign-usage count. Set includeCount: true to also resolve how many clients currently match each audience, and includePredefined: true to include built-in predefined segments. Read-only — use before comms_create_campaign to pick a target audience.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"includeCount":{"type":"boolean"},"includePredefined":{"type":"boolean"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":180,"tokensAfter":180},{"name":"comms_list_campaigns","fixed":{"name":"comms_list_campaigns","description":"List communication campaigns (WhatsApp/email) for the organization. Filter by status.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"cursor":{"type":"string"},"status":{"enum":["draft","scheduled","sent","completed","failed"],"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"comms_send_campaign","fixed":{"name":"comms_send_campaign","description":"Execute a draft or scheduled campaign. Sends messages to all matching recipients asynchronously, skipping recipients with email opt-out or bounced addresses (logged as \"skipped\"). Campaign must be in draft or scheduled status. Returns immediately — use comms_get_campaign to track progress (sent/delivered/opened/clicked update via provider webhooks). Requires confirm: true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","campaignId","confirm"],"properties":{"apiKey":{"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"campaignId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":190,"tokensAfter":190},{"name":"comms_send_message","fixed":{"name":"comms_send_message","description":"Send a single WhatsApp or email message to a specific client. Use templateKey for predefined templates or customMessage for free text. Requires confirm: true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","clientId","channel","confirm"],"properties":{"apiKey":{"type":"string"},"channel":{"enum":["whatsapp","email"],"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"templateKey":{"type":"string"},"customMessage":{"type":"string","maxLength":2000}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":199,"tokensAfter":199},{"name":"comms_update_preferences","fixed":{"name":"comms_update_preferences","description":"Enable or disable communication channels and features for an organization. Partial update — only provided fields are changed. Creates preferences if none exist.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"emailEnabled":{"type":"boolean"},"phoneRequired":{"type":"boolean"},"whatsappEnabled":{"type":"boolean"},"emailReminderEnabled":{"type":"boolean"},"phoneRequiredMessage":{"type":"string"},"whatsappReminderEnabled":{"type":"boolean"},"whatsappReminderMessage":{"type":"string"},"emailConfirmationEnabled":{"type":"boolean"},"whatsappConfirmationEnabled":{"type":"boolean"},"whatsappConfirmationMessage":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"delivery_confirmations_list","fixed":{"name":"delivery_confirmations_list","description":"List the delivery-confirmation ledger for an organization's sessions. Each row reflects the DeliveryProof overlay: whether the provider confirmed delivery, whether the client confirmed, and whether the system auto-confirmed after the verification window (silence). Filter by state — awaiting_client (provider confirmed, client has not, not yet auto-confirmed), confirmed (client confirmed or auto-confirmed), or provider_pending (proof exists but the provider has not confirmed delivery) — or look on","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"page":{"type":"integer","maximum":9007199254740991,"minimum":1},"limit":{"type":"integer","maximum":100,"minimum":1},"state":{"enum":["awaiting_client","confirmed","provider_pending"],"type":"string"},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"sessionId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":268,"tokensAfter":268},{"name":"disputes_list","fixed":{"name":"disputes_list","description":"List disputes for an organization. Filter by status or type. Returns disputes with client and provider info.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"page":{"type":"integer","maximum":9007199254740991,"minimum":1},"type":{"type":"string"},"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"status":{"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":138,"tokensAfter":138},{"name":"dunning_get_config","fixed":{"name":"dunning_get_config","description":"Get the current dunning (payment recovery) configuration for an organization. Returns whether dunning is enabled, grace period, step timings, and blocking settings.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["organizationSlug"],"properties":{"apiKey":{"type":"string"},"organizationSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":113,"tokensAfter":113},{"name":"email_domain_delete","fixed":{"name":"email_domain_delete","description":"Remove the configured email sending domain from the organization. This deletes it from both Resend and the database. The organization will revert to using the default Coordinalo sending address. Requires confirm: true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","confirm"],"properties":{"apiKey":{"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":134,"tokensAfter":134},{"name":"email_domain_get","fixed":{"name":"email_domain_get","description":"Get the email sending domain configured for an organization and its verification status (PENDING, VERIFIED, FAILED). Returns null if no domain is configured. Use email_domain_register to set one up.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":117,"tokensAfter":117},{"name":"finance_create_cobro","fixed":{"name":"finance_create_cobro","description":"Create a manual charge (cobro) for a client. Not linked to a sale/venta. Requires confirm: true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","clientId","monto","descripcion","confirm"],"properties":{"tipo":{"type":"string"},"fecha":{"type":"string"},"monto":{"type":"number","exclusiveMinimum":0},"apiKey":{"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"descripcion":{"type":"string"},"idempotencyKey":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":164,"tokensAfter":164},{"name":"finance_create_venta","fixed":{"name":"finance_create_venta","description":"Create a service sale (venta) for a client. Optionally auto-creates a charge (cobro) depending on org configuration. Requires confirm: true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","clientId","servicioId","precio","confirm"],"properties":{"apiKey":{"type":"string"},"estado":{"enum":["realizado","proyectado"],"type":"string"},"precio":{"type":"number","minimum":0},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"cantidad":{"type":"integer","maximum":9007199254740991,"minimum":1},"clientId":{"type":"string"},"fechaRef":{"type":"string"},"servicioId":{"type":"string"},"proveedorId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":202,"tokensAfter":202},{"name":"finance_get_cobro","fixed":{"name":"finance_get_cobro","description":"Get details of a specific charge (cobro) including all associated payments.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","cobroId"],"properties":{"apiKey":{"type":"string"},"cobroId":{"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":94,"tokensAfter":94},{"name":"finance_list_cobros","fixed":{"name":"finance_list_cobros","description":"List charges (cobros) for an organization. Filter by client, status, or date range. Includes summary totals.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"cursor":{"type":"string"},"dateTo":{"type":"string"},"estado":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"dateFrom":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":161,"tokensAfter":161},{"name":"finance_list_confirmations","fixed":{"name":"finance_list_confirmations","description":"List pending charge confirmations and their status. Shows cobros in pending_confirmation state that await client verification. Filter by client or confirmation status (pending, confirmed, disputed, auto_confirmed).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"status":{"enum":["pending","confirmed","disputed","auto_confirmed"],"type":"string"},"orgSlug":{"type":"string"},"clientId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":156,"tokensAfter":156},{"name":"finance_list_gastos","fixed":{"name":"finance_list_gastos","description":"List operational expenses (gastos operacionales) of an organization with their category, plus totals broken down by category type (FIJO/VARIABLE/COSTO_PRODUCTO/PROVISION). Filter by date range (dateFrom/dateTo), category id, type(s), or recurring-only. Read-only — complements finance_list_cobros/finance_list_payments (income side) to complete the financial picture.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"tipo":{"type":"array","items":{"enum":["FIJO","VARIABLE","COSTO_PRODUCTO","PROVISION"],"type":"string"}},"limit":{"type":"integer","maximum":500,"minimum":1},"apiKey":{"type":"string"},"dateTo":{"type":"string"},"orgSlug":{"type":"string"},"dateFrom":{"type":"string"},"recurrente":{"type":"boolean"},"categoriaId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":242,"tokensAfter":242},{"name":"finance_list_invoices","fixed":{"name":"finance_list_invoices","description":"List invoices (facturas) of an organization with total, balance (saldo), status, SII status, linked-sales count and the amount already applied via payment links (with a derived payment status: pendiente/abonada/pagada). Filter by client or status (pendiente/pagada/cancelada). Read-only.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"limit":{"type":"integer","maximum":200,"minimum":1},"apiKey":{"type":"string"},"estado":{"enum":["pendiente","pagada","cancelada"],"type":"string"},"orgSlug":{"type":"string"},"clientId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":185,"tokensAfter":185},{"name":"finance_list_payments","fixed":{"name":"finance_list_payments","description":"List payments received with filters. Includes summary by payment type.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"tipo":{"type":"string"},"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"cursor":{"type":"string"},"dateTo":{"type":"string"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"dateFrom":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":135,"tokensAfter":135},{"name":"finance_list_ventas","fixed":{"name":"finance_list_ventas","description":"List sales (ventas) for an organization. Filter by client, service, provider, or status.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"cursor":{"type":"string"},"dateTo":{"type":"string"},"estado":{"type":"string"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"dateFrom":{"type":"string"},"servicioId":{"type":"string"},"proveedorId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":158,"tokensAfter":158},{"name":"finance_register_payment","fixed":{"name":"finance_register_payment","description":"Register a manual payment against an existing charge (cobro). Updates cobro status automatically. Requires confirm: true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","cobroId","monto","tipo","confirm"],"properties":{"tipo":{"enum":["EFECTIVO","TRANSFERENCIA","TARJETA","MERCADOPAGO","OTRO"],"type":"string"},"fecha":{"type":"string"},"monto":{"type":"number","exclusiveMinimum":0},"apiKey":{"type":"string"},"cobroId":{"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"descripcion":{"type":"string"},"idempotencyKey":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":188,"tokensAfter":188},{"name":"finance_send_confirmations","fixed":{"name":"finance_send_confirmations","description":"Send pending confirmation digest to clients. Groups all pending_confirmation charges by client and sends a single message per client via WhatsApp or email. Creates confirmation tokens and sets a grace period for auto-confirmation. Requires confirm: true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","confirm"],"properties":{"apiKey":{"type":"string"},"channel":{"enum":["whatsapp","email"],"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"clientId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":170,"tokensAfter":170},{"name":"lifecycle_get_state","fixed":{"name":"lifecycle_get_state","description":"Get the current lifecycle state of a session, including available transitions, state history, and SC resolution. Returns current_state, available_transitions, verification_deadline (when state=delivered), timestamps, duration, sc_resolution (the fundamental SC event: resolved, resolved_at, resolved_by, billing_model), and recent transition history with from/to/at/by/method fields. Requires X-Org-Api-Key. Shape per docs/protocol/sc-event-canonical-schema-2026-04-18.md §7.1.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","session_id"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"session_id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":207,"tokensAfter":207},{"name":"lifecycle_transition","fixed":{"name":"lifecycle_transition","description":"Execute a state transition on a session. Accepts either to_state (target state name per Servicialo spec: confirmed, in_progress, completed, verified, documented, cancelled, no_show) or action (semantic verb: confirm, start, complete, verify, document, cancel, no_show). When to_state=no_show, no_show_type is required. NOTE: to_state=\"delivered\" / action=\"deliver\" is NOT available via MCP (ref PDC-SEC-001) — MCP authentication cannot validate actor-as-Proveedor. Delivery must be performed via the ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","session_id"],"properties":{"notes":{"type":"string","maxLength":1000},"action":{"type":"string"},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"evidence":{"type":"string"},"to_state":{"type":"string"},"session_id":{"type":"string"},"no_show_type":{"enum":["client","provider"],"type":"string"},"delivery_type":{"enum":["completo","parcial"],"type":"string"}}}},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: evidence. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":282,"tokensAfter":286},{"name":"members_invite","fixed":{"name":"members_invite","description":"Invite a new member to the organization by email. Sends an invitation email. Requires confirm: true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","email","role","confirm"],"properties":{"role":{"enum":["admin","member"],"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"apiKey":{"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":162,"tokensAfter":162},{"name":"members_list","fixed":{"name":"members_list","description":"List members of an organization with their roles and status.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":77,"tokensAfter":77},{"name":"org_update","fixed":{"name":"org_update","description":"Update organization profile fields: name, description, logo URL, or vertical. Only provided fields are updated.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"name":{"type":"string","maxLength":100,"minLength":2},"apiKey":{"type":"string"},"logoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"orgSlug":{"type":"string"},"vertical":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":167,"tokensAfter":167},{"name":"payroll_get_summary","fixed":{"name":"payroll_get_summary","description":"Get payroll summary for a period: total per provider, total cost, pending approvals.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","periodo"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"periodo":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"payroll_list_records","fixed":{"name":"payroll_list_records","description":"List payroll records for an organization. Filter by period, provider, or status.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"status":{"type":"string"},"orgSlug":{"type":"string"},"periodo":{"type":"string"},"providerId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"portal_cancel_reschedule_request","fixed":{"name":"portal_cancel_reschedule_request","description":"Cancel a pending reschedule request (SessionRequest) on behalf of the client who proposed it — the client-side withdrawal in the bilateral loop (outcome=cancelled_by_client). Idempotent: a request already cancelled_by_client returns wasAlreadyCancelled=true; a request in another terminal state returns a conflict. Use booking_list_requests to find pending requests; use booking_resolve_request for the org's own approve/reject.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","requestId"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"requestId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":197,"tokensAfter":197},{"name":"portal_session_cancel","fixed":{"name":"portal_session_cancel","description":"Cancel a client's session on behalf of the client (client-initiated cancellation: cancelledBy=client). Allowed from scheduled/pending_confirmation/confirmed; rejects past sessions. Idempotent: a session already cancelled returns alreadyCancelled=true. Distinct from the admin cancellation with cancellation-policy charges — this is the client-portal cancel flow. The org API key owner is recorded as the actor acting on behalf of the client (ADR-004 §6).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","sessionId"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"sessionId":{"type":"string"},"cancellationReason":{"type":"string","maxLength":500}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":216,"tokensAfter":216},{"name":"provider_create","fixed":{"name":"provider_create","description":"Create a new provider in the organization. Links or creates a Person record by email.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","name","lastName","email"],"properties":{"name":{"type":"string","minLength":1},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string"},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"lastName":{"type":"string","minLength":1},"isInternal":{"type":"boolean"},"serviceIds":{"type":"array","items":{"type":"string"}},"idempotencyKey":{"type":"string"},"comunasCobertura":{"type":"array","items":{"type":"string"}},"defaultCommission":{"type":"number","maximum":100,"minimum":0}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":236,"tokensAfter":236},{"name":"provider_get","fixed":{"name":"provider_get","description":"Get complete details of a provider including services, schedule, and session stats.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","providerId"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"providerId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":96,"tokensAfter":96},{"name":"provider_get_stats","fixed":{"name":"provider_get_stats","description":"Get detailed performance metrics for a provider over a date range: sessions, occupancy, no-show rate, revenue.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","providerId"],"properties":{"apiKey":{"type":"string"},"dateTo":{"type":"string"},"orgSlug":{"type":"string"},"dateFrom":{"type":"string"},"providerId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":121,"tokensAfter":121},{"name":"provider_update","fixed":{"name":"provider_update","description":"Update provider data: status, commission, coverage areas, permissions.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","providerId"],"properties":{"name":{"type":"string"},"phone":{"type":"string"},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"isActive":{"type":"boolean"},"lastName":{"type":"string"},"providerId":{"type":"string"},"comunasCobertura":{"type":"array","items":{"type":"string"}},"defaultCommission":{"type":"number","maximum":100,"minimum":0},"canManageOwnServices":{"type":"boolean"},"canManageOwnAvailability":{"type":"boolean"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":183,"tokensAfter":183},{"name":"public_availability_get_slots","fixed":{"name":"public_availability_get_slots","description":"Query available time slots for public booking. Does NOT require an API key. Returns slots grouped by service from the organization's public agenda. Provider details are hidden — the system auto-assigns at booking time. Use after public_service_list to find bookable times.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"date":{"type":"string"},"dateTo":{"type":"string"},"orgSlug":{"type":"string"},"dateFrom":{"type":"string"},"timezone":{"type":"string"},"serviceId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":172,"tokensAfter":172},{"name":"public_booking_cancel","fixed":{"name":"public_booking_cancel","description":"Cancel a public booking using the bookingToken. Only works for bookings in pending_confirmation, scheduled, or confirmed status. Optionally include a reason. Does NOT require an API key. The booking token scopes access to a single booking.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","bookingToken"],"properties":{"reason":{"type":"string","maxLength":500},"orgSlug":{"type":"string"},"bookingToken":{"type":"string","minLength":20}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"public_booking_confirm","fixed":{"name":"public_booking_confirm","description":"Confirm a pending public booking using the confirmationToken returned by public_booking_create. Advances the booking from pending_confirmation to scheduled. The token expires after 30 minutes. Does NOT require an API key. Rate-limited.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","confirmationToken"],"properties":{"orgSlug":{"type":"string"},"confirmationToken":{"type":"string","minLength":20}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":142,"tokensAfter":142},{"name":"public_booking_create","fixed":{"name":"public_booking_create","description":"Create a public booking request. Does NOT require an API key, but DOES require: (1) requester identity — fullName plus at least email or phone, (2) submission context — channel and whether an agent assisted, (3) authorization.humanIntentConfirmed must be true. The booking is created as pending_confirmation — use public_booking_confirm with the returned confirmationToken to confirm. A bookingToken is also returned for future lifecycle management (cancel, reschedule). Rate-limited per IP+org. All ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","serviceId","startAt","requester","submission","authorization"],"properties":{"notes":{"type":"string","maxLength":500},"orgSlug":{"type":"string"},"startAt":{"type":"string"},"requester":{"type":"object","required":["fullName"],"properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"notes":{"type":"string","maxLength":500},"phone":{"type":"string","minLength":6},"fullName":{"type":"string","minLength":2},"nationalId":{"type":"string"}}},"serviceId":{"type":"string"},"submission":{"type":"object","required":["channel","submittedByType"],"properties":{"agentId":{"type":"string"},"channel":{"enum":["web","whatsapp","phone","chat","api","other"],"type":"string"},"platform":{"type":"string"},"agentName":{"type":"string"},"submittedByType":{"enum":["human","agent","human_with_agent_assistance"],"type":"string"}}},"authorization":{"type":"object","required":["mode","humanIntentConfirmed"],"properties":{"mode":{"enum":["human_confirmed","delegated_confirmed"],"type":"string"},"humanIntentConfirmed":{"type":"boolean","const":true}}},"idempotencyKey":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":514,"tokensAfter":514},{"name":"public_booking_get","fixed":{"name":"public_booking_get","description":"Get details of a public booking using the bookingToken returned by public_booking_create. Returns status, scheduled time, service, and requester info. Does NOT require an API key — the booking token is the credential. Only returns public-safe data.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","bookingToken"],"properties":{"orgSlug":{"type":"string"},"bookingToken":{"type":"string","minLength":20}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":141,"tokensAfter":141},{"name":"public_booking_reschedule","fixed":{"name":"public_booking_reschedule","description":"Reschedule a public booking using the bookingToken. Cancels the original and creates a new pending_confirmation booking at the new time. Returns new confirmationToken and bookingToken. Only works for bookings in pending_confirmation, scheduled, or confirmed status. Does NOT require an API key.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","bookingToken","newStartAt"],"properties":{"orgSlug":{"type":"string"},"newStartAt":{"type":"string"},"bookingToken":{"type":"string","minLength":20}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":168,"tokensAfter":168},{"name":"public_service_list","fixed":{"name":"public_service_list","description":"List publicly bookable services for an organization. Does NOT require an API key. Returns only active, discoverable services with assigned providers. Use this as the first step in the public booking flow to show available services to end users or agents.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":126,"tokensAfter":126},{"name":"reminders_get_config","fixed":{"name":"reminders_get_config","description":"Get the full reminder/notification configuration for an organization. Returns detailed settings for each reminder type: bookingReminder (post-booking follow-up), sessionReminder24h (24h before), sessionReminder1h (1h before), paymentReminder (payment due), paymentOverdue (overdue payment), notificationFollowup (post-session follow-up), pendingConfirmation (auto-cancel unconfirmed). Each has enabled, timing, and frequency settings. More granular than settings_get reminders chapter.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":198,"tokensAfter":198},{"name":"reminders_update_config","fixed":{"name":"reminders_update_config","description":"Update reminder/notification configuration for an organization. Partial update — only provided sections are changed. Sections: bookingReminder {enabled, daysAfter, maxReminders, interval}, sessionReminder24h {enabled, hoursBefore, sendTime}, sessionReminder1h {enabled, hoursBefore}, paymentReminder {enabled, daysAfter, maxReminders, interval}, paymentOverdue {enabled, daysOverdue, maxReminders, interval}, notificationFollowup {enabled, daysAfter, maxFollowups, interval}, pendingConfirmation {ena","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"paymentOverdue":{"type":"object","properties":{"enabled":{"type":"boolean"},"interval":{"type":"integer","maximum":30,"minimum":1},"daysOverdue":{"type":"integer","maximum":90,"minimum":1},"maxReminders":{"type":"integer","maximum":10,"minimum":1}}},"bookingReminder":{"type":"object","properties":{"enabled":{"type":"boolean"},"interval":{"type":"integer","maximum":30,"minimum":1},"daysAfter":{"type":"integer","maximum":30,"minimum":1},"maxReminders":{"type":"integer","maximum":10,"minimum":1}}},"paymentReminder":{"type":"object","properties":{"enabled":{"type":"boolean"},"interval":{"type":"integer","maximum":30,"minimum":1},"daysAfter":{"type":"integer","maximum":30,"minimum":1},"maxReminders":{"type":"integer","maximum":10,"minimum":1}}},"sessionReminder1h":{"type":"object","properties":{"enabled":{"type":"boolean"},"hoursBefore":{"type":"integer","maximum":12,"minimum":1}}},"sessionReminder24h":{"type":"object","properties":{"enabled":{"type":"boolean"},"sendTime":{"type":"string"},"hoursBefore":{"type":"integer","maximum":72,"minimum":1}}},"pendingConfirmation":{"type":"object","properties":{"enabled":{"type":"boolean"},"autoConfirm":{"type":"boolean"},"cutoffHours":{"type":"integer","maximum":168,"minimum":1}}},"notificationFollowup":{"type":"object","properties":{"enabled":{"type":"boolean"},"interval":{"type":"integer","maximum":30,"minimum":1},"daysAfter":{"type":"integer","maximum":30,"minimum":1},"maxFollowups":{"type":"integer","maximum":10,"minimum":1}}}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":617,"tokensAfter":617},{"name":"report_no_shows","fixed":{"name":"report_no_shows","description":"Report no-show statistics for a period. Group by client, provider, service, or day.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"dateTo":{"type":"string"},"groupBy":{"enum":["client","provider","service","day"],"type":"string"},"orgSlug":{"type":"string"},"dateFrom":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":135,"tokensAfter":135},{"name":"resources_list","fixed":{"name":"resources_list","description":"List the bookable resources of an organization (rooms, boxes, chairs, equipment) with their type, capacity, buffer minutes, location and active state. Filter by type, active state, or a name/description search. Read-only.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"type":{"type":"string"},"limit":{"type":"integer","maximum":200,"minimum":1},"apiKey":{"type":"string"},"search":{"type":"string"},"orgSlug":{"type":"string"},"isActive":{"type":"boolean"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":160,"tokensAfter":160},{"name":"scheduling_book","fixed":{"name":"scheduling_book","description":"Book a session (Servicialo spec). Returns confirmation_credential (opaque token, valid 30 min) and booking_id. Use scheduling_confirm with the credential to finalize. Does NOT require an API key — uses requester identity (fullName + email or phone). Accepts optional submission context for audit trail.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","service_id","datetime","requester"],"properties":{"notes":{"type":"string","maxLength":500},"orgSlug":{"type":"string"},"datetime":{"type":"string"},"requester":{"type":"object","required":["fullName"],"properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","minLength":6},"fullName":{"type":"string","minLength":2},"nationalId":{"type":"string"}}},"service_id":{"type":"string"},"submission":{"type":"object","properties":{"agentId":{"type":"string"},"channel":{"enum":["web","whatsapp","phone","chat","api","other"],"type":"string","default":"api"},"platform":{"type":"string"},"agentName":{"type":"string"},"submittedByType":{"enum":["human","agent","human_with_agent_assistance"],"type":"string","default":"agent"}}},"provider_id":{"type":"string"},"idempotencyKey":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":385,"tokensAfter":385},{"name":"scheduling_cancel","fixed":{"name":"scheduling_cancel","description":"Cancel a session through the Servicialo protocol lane. Moves the session to cancelled and emits sc_service.cancelled.v1. It REPORTS the cancellation policy tier that applies (policy_applied: none | partial | full, with the percentage) but does NOT create any charge — no penalty transaction is persisted and the client owes nothing as a result of this call. If you need the organization lane that actually applies the policy and registers the charge, use booking_cancel instead. Requires confirm: tru","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","session_id","confirm"],"properties":{"apiKey":{"type":"string"},"reason":{"type":"string","maxLength":500},"confirm":{"type":"boolean","const":true},"orgSlug":{"type":"string"},"session_id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"service_assign_provider","fixed":{"name":"service_assign_provider","description":"Assign or unassign a provider to/from a service. Controls which providers can deliver which services.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","serviceId","providerId","action"],"properties":{"price":{"type":"number","minimum":0},"action":{"enum":["assign","unassign"],"type":"string"},"apiKey":{"type":"string"},"confirm":{"type":"boolean"},"orgSlug":{"type":"string"},"serviceId":{"type":"string"},"commission":{"type":"number","maximum":100,"minimum":0},"providerId":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":168,"tokensAfter":168},{"name":"service_create","fixed":{"name":"service_create","description":"Create a new bookable service in an existing organization. Use this for day-to-day service management (requires X-Org-Api-Key). For initial org setup, prefer admin_create_service instead. After creating, use service_assign_provider to link providers. A service without providers cannot accept bookings. Optional delivery-verification overrides per service: verificationLevel (none = silent auto-complete, legacy; default_confirm = both can confirm and silence auto-confirms after the org window; dual","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","name","price","duration"],"properties":{"name":{"type":"string"},"price":{"type":"number","minimum":0},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"category":{"type":"string"},"currency":{"type":"string"},"duration":{"type":"integer","maximum":480,"minimum":5},"modalidad":{"enum":["presencial","a_domicilio","remoto"],"type":"string"},"providerId":{"type":"string"},"description":{"type":"string"},"isDiscoverable":{"type":"boolean"},"qualityCapture":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"verificationLevel":{"anyOf":[{"enum":["none","default_confirm","dual_confirm","documented"],"type":"string"},{"type":"null"}]}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":358,"tokensAfter":358},{"name":"service_list","fixed":{"name":"service_list","description":"List services of an organization. Can filter by active status, discoverability, or category.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"category":{"type":"string"},"activeOnly":{"type":"boolean"},"discoverableOnly":{"type":"boolean"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":114,"tokensAfter":114},{"name":"service_update","fixed":{"name":"service_update","description":"Update an existing service (price, duration, status, etc.). Creates a price history entry if price changes. Delivery-verification overrides can be changed too: verificationLevel (none / default_confirm / dual_confirm / documented — see service_create for semantics) and qualityCapture (1–5 rating on confirmation). Pass null on either to reset that field and inherit the organization default again; omit to leave it unchanged.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","serviceId"],"properties":{"name":{"type":"string"},"price":{"type":"number","minimum":0},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"category":{"type":"string"},"currency":{"type":"string"},"duration":{"type":"integer","maximum":480,"minimum":5},"isActive":{"type":"boolean"},"modalidad":{"enum":["presencial","a_domicilio","remoto"],"type":"string"},"serviceId":{"type":"string"},"description":{"type":"string"},"isDiscoverable":{"type":"boolean"},"qualityCapture":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"publicDescription":{"type":"string"},"verificationLevel":{"anyOf":[{"enum":["none","default_confirm","dual_confirm","documented"],"type":"string"},{"type":"null"}]}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":352,"tokensAfter":352},{"name":"session_note_get","fixed":{"name":"session_note_get","description":"Read the clinical note of a session. Non-restricted notes return full content. Notes marked dataSensitivity=restricted return metadata only (type, sensitivity, timestamps, which fields are present) with the clinical text withheld — pass includeRestricted: true to retrieve the full content, which logs an audited restricted-access event and increments the access counter. Returns note: null if the session has no note.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","sessionId"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"sessionId":{"type":"string"},"includeRestricted":{"type":"boolean"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":200,"tokensAfter":200},{"name":"session_note_upsert","fixed":{"name":"session_note_upsert","description":"Create or update the clinical note (ficha) of a session: evolution, treatmentPerformed, nextSessionPlan, type (evaluacion/tratamiento/derivacion/cierre), progressMetrics, etc. One note per session (upsert). Sensitivity is resolved automatically (health-vertical orgs default to restricted). NOTE: unlike the provider's own UI save, this does NOT create the provider-confirmed DeliveryProof nor award practice points — those are provider-bound actions (PDC-SEC-001); use the provider portal / REST for","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","sessionId"],"properties":{"type":{"anyOf":[{"enum":["evaluacion","tratamiento","derivacion","cierre"],"type":"string"},{"type":"null"}]},"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"evolution":{"anyOf":[{"type":"string"},{"type":"null"}]},"isPrivate":{"type":"boolean"},"sessionId":{"type":"string"},"dataSensitivity":{"enum":["public","internal","confidential","restricted"],"type":"string","default":"internal"},"nextSessionPlan":{"anyOf":[{"type":"string"},{"type":"null"}]},"treatmentPerformed":{"anyOf":[{"type":"string"},{"type":"null"}]}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":337,"tokensAfter":337},{"name":"settings_get","fixed":{"name":"settings_get","description":"Get organization settings. THIS IS THE ENTRY POINT for anything configurable: call it with no filters first to get the full map. Settings are indexed on two axes — `group` (the sections a human sees in the settings screen: profile, availability, client_fields, communication, reminders, automations, finances, delivery, cancellation, tax) and `chapter` (the onboarding-interview sequence: basics, availability, communication, finances, policies, reminders, client_data). Prefer `group`. Or pass `keys","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"keys":{"type":"string"},"group":{"enum":["profile","availability","client_fields","communication","reminders","automations","finances","delivery","cancellation","tax"],"type":"string"},"apiKey":{"type":"string"},"chapter":{"enum":["basics","availability","communication","finances","policies","reminders","client_data"],"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":286,"tokensAfter":286},{"name":"settings_update","fixed":{"name":"settings_update","description":"Update organization settings. Partial update — only provided keys are changed. Pass a settings object with key-value pairs (e.g. {\"policies.noShowMaxStrikes\": 3, \"finances.clientPaymentTiming\": \"BEFORE\"}). ALL values are validated before ANY is written: if one key fails, nothing changes — so related keys can be sent together and either all land or none do. That matters for settings with invariants between them (the cancellation tiers, where the partial-charge window must sit closer to the appoin","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","settings"],"properties":{"apiKey":{"type":"string"},"orgSlug":{"type":"string"},"settings":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":230,"tokensAfter":230},{"name":"treatment_plans_get","fixed":{"name":"treatment_plans_get","description":"Get the full detail of a single treatment/care plan by id: diagnosis, objectives, notes, status timeline, expiration, the intake session, and all plan items (service, quantity, frequency, priority, sessions booked/completed). Read-only.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug","planId"],"properties":{"apiKey":{"type":"string"},"planId":{"type":"string"},"orgSlug":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":138,"tokensAfter":138},{"name":"treatment_plans_list","fixed":{"name":"treatment_plans_list","description":"List treatment/care plans of an organization with client, provider, status, objectives and their items (services with quantity/frequency/priority). Filter by clientId, status or proveedorId; paginated (page/limit). Read-only — plan creation/editing stays in the UI (requires clinical supervision).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orgSlug"],"properties":{"page":{"type":"integer","maximum":9007199254740991,"minimum":1},"limit":{"type":"integer","maximum":100,"minimum":1},"apiKey":{"type":"string"},"status":{"type":"string"},"orgSlug":{"type":"string"},"clientId":{"type":"string"},"proveedorId":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":203,"tokensAfter":203}],"toolsChanged":86,"tokensSaved":0,"todo":[{"tool":"admin_create_service","params":["name","price","apiKey","orgSlug","currency","vertical","description","duration_minutes"]},{"tool":"admin_list_providers","params":["apiKey","orgSlug"]},{"tool":"admin_set_availability","params":["apiKey","orgSlug","schedule","providerId"]},{"tool":"admin_toggle_discoverable","params":["apiKey","orgSlug","discoverable"]},{"tool":"agendas_create","params":["slug","title","apiKey","orgSlug","isActive","isPublic","description","proveedorId","showSessions","showClientNames","bookingFlowOrder","defaultDurations","showProviderList","assignmentStrategy","requiresPrepayment","allowGroupSelection","serviceSelectionMode","providerSelectionMode","showProviderUtilization"]},{"tool":"agendas_delete","params":["apiKey","confirm","orgSlug","agendaId"]},{"tool":"agendas_get","params":["apiKey","orgSlug","agendaId"]},{"tool":"agendas_list","params":["apiKey","orgSlug"]},{"tool":"agendas_update","params":["slug","title","apiKey","orgSlug","agendaId","category","isActive","isPublic","expiresAt","isDefault","description","proveedorId","showSessions","showClientNames","bookingFlowOrder","defaultDurations","showProviderList","assignmentStrategy","requiresPrepayment","allowGroupSelection","serviceSelectionMode","providerSelectionMode","showProviderUtilization"]},{"tool":"availability_get_provider_schedule","params":["apiKey","orgSlug","providerId"]},{"tool":"availability_get_slots","params":["date","apiKey","dateTo","orgSlug","agendaId","clientId","dateFrom","duration","timezone","serviceId","providerId"]},{"tool":"booking_cancel","params":["apiKey","reason","confirm","orgSlug","sessionId","cancelledBy","applyCancellationPolicy"]},{"tool":"booking_create","params":["notes","apiKey","orgSlug","clientId","duration","modalidad","serviceId","autoCharge","providerId","retroactive","scheduledAt","idempotencyKey","publicAgendaId","retroactiveStatus"]},{"tool":"booking_create_recurring","params":["notes","apiKey","confirm","orgSlug","clientId","timezone","serviceId","providerId","recurrence","skipConflicts"]},{"tool":"booking_get","params":["apiKey","orgSlug","sessionId"]},{"tool":"booking_list","params":["limit","apiKey","cursor","dateTo","status","orderBy","orgSlug","clientId","dateFrom","serviceId","providerId"]},{"tool":"booking_list_requests","params":["limit","apiKey","cursor","status","orgSlug","clientId","sessionId","includePendingCount"]},{"tool":"booking_reschedule","params":["apiKey","reason","confirm","orgSlug","sessionId","newProviderId","newScheduledAt"]},{"tool":"booking_resolve_request","params":["apiKey","reason","orgSlug","outcome","requestId"]},{"tool":"booking_update_status","params":["notes","action","apiKey","orgSlug","sessionId","noShowType","deliveryType"]},{"tool":"cierre_cerrar_org","params":["apiKey","confirm","orgSlug","periodo"]},{"tool":"cierre_crear_cliente","params":["notas","apiKey","confirm","orgSlug","periodo","clientId"]},{"tool":"cierre_distribuir_utilidades","params":["apiKey","confirm","orgSlug","periodo","montoDistribuido"]},{"tool":"cierre_eliminar_cliente","params":["apiKey","confirm","orgSlug","cierreId"]},{"tool":"cierre_evaluar_org","params":["apiKey","orgSlug","periodo"]},{"tool":"cierre_listar_clientes","params":["apiKey","orgSlug","periodo","clientId"]},{"tool":"cierre_listar_utilidades","params":["apiKey","orgSlug"]},{"tool":"cierre_preview_cliente","params":["apiKey","orgSlug","periodo","clientId"]},{"tool":"client_create","params":["rut","name","email","notes","phone","apiKey","comuna","orgSlug","lastName","direccion","idempotencyKey","proveedorTitularId"]},{"tool":"client_get","params":["apiKey","orgSlug","clientId","includeHistory","includeFinancials"]},{"tool":"client_list","params":["limit","apiKey","cursor","search","hasDebt","orgSlug","providerId"]},{"tool":"client_update","params":["rut","name","notes","phone","apiKey","comuna","orgSlug","clientId","lastName","direccion","proveedorTitularId"]},{"tool":"comms_create_campaign","params":["name","type","apiKey","confirm","orgSlug","emailBody","audienceId","adHocFilters","audienceType","emailSubject"]},{"tool":"comms_get_campaign","params":["apiKey","orgSlug","logLimit","campaignId","includeLogs"]},{"tool":"comms_get_preferences","params":["apiKey","orgSlug"]},{"tool":"comms_list_audiences","params":["apiKey","orgSlug","includeCount","includePredefined"]},{"tool":"comms_list_campaigns","params":["limit","apiKey","cursor","status","orgSlug"]},{"tool":"comms_render_message","params":["data","width","action","apiKey","orgSlug","clientId","template","whatsappTo","whatsappBody"]},{"tool":"comms_send_campaign","params":["apiKey","confirm","orgSlug","campaignId"]},{"tool":"comms_send_message","params":["apiKey","channel","confirm","orgSlug","clientId","variables","templateKey","customMessage"]},{"tool":"comms_update_preferences","params":["apiKey","orgSlug","emailEnabled","phoneRequired","whatsappEnabled","emailReminderEnabled","phoneRequiredMessage","whatsappReminderEnabled","whatsappReminderMessage","emailConfirmationEnabled","whatsappConfirmationEnabled","whatsappConfirmationMessage"]},{"tool":"delivery_confirmations_list","params":["page","limit","state","apiKey","orgSlug","sessionId"]},{"tool":"disputes_list","params":["page","type","limit","apiKey","status","orgSlug"]},{"tool":"dunning_configure","params":["steps","enabled","blockOnStep5","gracePeriodDays","organizationSlug"]},{"tool":"dunning_get_config","params":["apiKey","organizationSlug"]},{"tool":"email_domain_delete","params":["apiKey","confirm","orgSlug"]},{"tool":"email_domain_get","params":["apiKey","orgSlug"]},{"tool":"email_domain_register","params":["apiKey","domain","orgSlug"]},{"tool":"email_domain_verify","params":["apiKey","orgSlug"]},{"tool":"finance_aging","params":["limit","apiKey","cursor","orgSlug"]},{"tool":"finance_client_balance","params":["apiKey","orgSlug","clientId"]},{"tool":"finance_create_cobro","params":["tipo","fecha","monto","apiKey","confirm","orgSlug","clientId","descripcion","idempotencyKey"]},{"tool":"finance_create_venta","params":["apiKey","estado","precio","confirm","orgSlug","cantidad","clientId","fechaRef","servicioId","proveedorId"]},{"tool":"finance_get_cobro","params":["apiKey","cobroId","orgSlug"]},{"tool":"finance_list_cobros","params":["limit","apiKey","cursor","dateTo","estado","orgSlug","clientId","dateFrom"]},{"tool":"finance_list_confirmations","params":["apiKey","status","orgSlug","clientId"]},{"tool":"finance_list_gastos","params":["tipo","limit","apiKey","dateTo","orgSlug","dateFrom","recurrente","categoriaId"]},{"tool":"finance_list_invoices","params":["limit","apiKey","estado","orgSlug","clientId"]},{"tool":"finance_list_payments","params":["tipo","limit","apiKey","cursor","dateTo","orgSlug","clientId","dateFrom"]},{"tool":"finance_list_ventas","params":["limit","apiKey","cursor","dateTo","estado","orgSlug","clientId","dateFrom","servicioId","proveedorId"]},{"tool":"finance_register_payment","params":["tipo","fecha","monto","apiKey","cobroId","confirm","orgSlug","descripcion","idempotencyKey"]},{"tool":"finance_send_confirmations","params":["apiKey","channel","confirm","orgSlug","clientId"]},{"tool":"lifecycle_get_state","params":["apiKey","orgSlug","session_id"]},{"tool":"lifecycle_history","params":["limit","apiKey","orgSlug","session_id","event_types","from_sequence"]},{"tool":"lifecycle_transition","params":["notes","action","apiKey","orgSlug","evidence","to_state","session_id","no_show_type","delivery_type"]},{"tool":"members_invite","params":["role","email","apiKey","confirm","orgSlug"]},{"tool":"members_list","params":["apiKey","orgSlug"]},{"tool":"org_summary","params":["apiKey","orgSlug"]},{"tool":"org_update","params":["name","apiKey","logoUrl","orgSlug","vertical","description"]},{"tool":"payroll_get_summary","params":["apiKey","orgSlug","periodo"]},{"tool":"payroll_list_records","params":["limit","apiKey","status","orgSlug","periodo","providerId"]},{"tool":"portal_cancel_reschedule_request","params":["apiKey","orgSlug","requestId"]},{"tool":"portal_confirm_delivery","params":["note","apiKey","rating","orgSlug","sessionId"]},{"tool":"portal_propose_reschedule","params":["apiKey","reason","orgSlug","sessionId","requestedScheduledAt"]},{"tool":"portal_report_session","params":["note","apiKey","reason","orgSlug","sessionId"]},{"tool":"portal_session_cancel","params":["apiKey","orgSlug","sessionId","cancellationReason"]},{"tool":"portal_session_confirm","params":["apiKey","orgSlug","sessionId"]},{"tool":"provider_create","params":["name","email","phone","apiKey","orgSlug","lastName","isInternal","serviceIds","idempotencyKey","comunasCobertura","defaultCommission"]},{"tool":"provider_get","params":["apiKey","orgSlug","providerId"]},{"tool":"provider_get_stats","params":["apiKey","dateTo","orgSlug","dateFrom","providerId"]},{"tool":"provider_update","params":["name","phone","apiKey","orgSlug","isActive","lastName","providerId","comunasCobertura","defaultCommission","canManageOwnServices","canManageOwnAvailability"]},{"tool":"public_availability_get_slots","params":["date","dateTo","orgSlug","dateFrom","timezone","serviceId"]},{"tool":"public_booking_cancel","params":["reason","orgSlug","bookingToken"]},{"tool":"public_booking_confirm","params":["orgSlug","confirmationToken"]},{"tool":"public_booking_create","params":["notes","orgSlug","startAt","requester","serviceId","submission","authorization","idempotencyKey"]},{"tool":"public_booking_get","params":["orgSlug","bookingToken"]},{"tool":"public_booking_reschedule","params":["orgSlug","newStartAt","bookingToken"]},{"tool":"public_service_list","params":["orgSlug"]},{"tool":"reminders_get_config","params":["apiKey","orgSlug"]},{"tool":"reminders_update_config","params":["apiKey","orgSlug","paymentOverdue","bookingReminder","paymentReminder","sessionReminder1h","sessionReminder24h","pendingConfirmation","notificationFollowup"]},{"tool":"report_dashboard","params":["date","apiKey","orgSlug"]},{"tool":"report_deuda_real","params":["apiKey","orgSlug"]},{"tool":"report_evidence_gates","params":["to","from","weeks","apiKey","format","orgSlug"]},{"tool":"report_no_shows","params":["limit","apiKey","dateTo","groupBy","orgSlug","dateFrom"]},{"tool":"report_occupancy","params":["apiKey","dateTo","groupBy","orgSlug","dateFrom","providerId"]},{"tool":"report_revenue","params":["apiKey","dateTo","groupBy","orgSlug","dateFrom"]},{"tool":"report_sc_summary","params":["apiKey","orgSlug","periodo"]},{"tool":"resources_list","params":["type","limit","apiKey","search","orgSlug","isActive"]},{"tool":"scheduling_book","params":["notes","orgSlug","datetime","requester","service_id","submission","provider_id","idempotencyKey"]},{"tool":"scheduling_cancel","params":["apiKey","reason","confirm","orgSlug","session_id"]},{"tool":"scheduling_confirm","params":["apiKey","orgSlug","booking_id","credential"]},{"tool":"scheduling_reschedule","params":["apiKey","confirm","orgSlug","session_id","new_datetime"]},{"tool":"service_assign_provider","params":["price","action","apiKey","confirm","orgSlug","serviceId","commission","providerId"]},{"tool":"service_create","params":["name","price","apiKey","orgSlug","category","currency","duration","modalidad","providerId","description","isDiscoverable","qualityCapture","verificationLevel"]},{"tool":"service_list","params":["apiKey","orgSlug","category","activeOnly","discoverableOnly"]},{"tool":"service_update","params":["name","price","apiKey","orgSlug","category","currency","duration","isActive","modalidad","serviceId","description","isDiscoverable","qualityCapture","publicDescription","verificationLevel"]},{"tool":"session_note_get","params":["apiKey","orgSlug","sessionId","includeRestricted"]},{"tool":"session_note_upsert","params":["type","apiKey","orgSlug","evolution","isPrivate","sessionId","dataSensitivity","nextSessionPlan","treatmentPerformed"]},{"tool":"settings_get","params":["keys","group","apiKey","chapter","orgSlug"]},{"tool":"settings_update","params":["apiKey","orgSlug","settings"]},{"tool":"treatment_plans_get","params":["apiKey","planId","orgSlug"]},{"tool":"treatment_plans_list","params":["page","limit","apiKey","status","orgSlug","clientId","proveedorId"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}