Claude connector

MCP server changelog

Breaking changes are flagged. Tool additions are non-breaking.

0.18.0 — August 21, 2026

Breaking: the campaign, contact and audience tools are removed, and the campaigns:read / campaigns:write scopes no longer exist.

  • * Why: email campaigns were removed from ezInputs. The feature competed in a market the product has no advantage in, while consuming maintenance budget that the approval, accrual and attendance engines earn. This is a product decision, not a deprecation cycle — the tools have no replacement because the capability behind them is gone.
  • Removed (28 tools): list_campaigns, get_campaign, create_campaign, set_campaign_blocks, apply_tool_call, schedule_campaign, cancel_campaign, duplicate_campaign, list_campaign_snapshots, restore_campaign_snapshot, save_as_template, apply_template_to_campaign, list_templates, get_template, render_email, lint_email, screenshot_email, list_block_types, list_contacts, get_contact, add_contact, update_contact, tag_contact, list_audiences, get_audience, create_audience, add_to_audience, remove_from_audience.
  • Removed resources: campaign://<id>, campaign://<id>/preview.html and campaign://<id>/lint.
  • Removed prompts: /new-newsletter, /audit-deliverability, /refresh-template and /promote-form. /build-form and /triage-submissions are unaffected.
  • * Rescoped, not removed: list_email_templates, get_email_template_full and update_email_template moved from campaigns:* to forms:read / forms:write. They manage the workflow notification templates, which are transactional and still part of the product. The template://<id> resource moved to forms:read for the same reason.
  • set_campaign_mode is gone from apply_form_tool_call, and get_form no longer returns campaignMode. It configured list auto-enrolment and campaign-link prefill, both of which no longer happen. Forms that still carry the key keep it — nothing strips it on save.
  • * What breaks: a connector holding campaigns:read or campaigns:write keeps working for every other tool; the grant is simply ignored. Calls to any removed tool return unknown_tool. Re-consenting drops the dead scopes from the token.
  • * Correction to earlier docs:the connector page advertised "destructive writes auto-snapshot with a 30-day TTL" and a restore_snapshot tool. That snapshotting only ever covered campaigns, and went with them. Form edits are guarded by the propose/accept queue instead — pass propose: true, then list_pending_changes and accept_pending_change / reject_pending_change.

0.17.0 — August 12, 2026

Booking fields gained a shared weekly assignment grid.

  • + booking field bookingConfig.weeklyGrid: set enabled: true (plus startHour, endHour, slotMinutes, days) to render a shared per-room schedule sheet — the same grid as scheduleV2— instead of the single date picker. Respondents DRAG to claim stretches of time and may hold several; other people's bookings render as locked blocks showing who has the room. See list_field_typesbooking.
  • * Stored value depends on the mode: the date picker still stores { roomId, date }; the grid stores { claims: [{ roomId, day, start, end }] }, where day is an ABSOLUTE weekday index (Mon=0..Sun=6) and start/end are minutes from midnight. Adding or removing a column never moves an existing claim.
  • * Conflicts are interval overlap, not cell equality:a claim overlapping held time at all is rejected whole, never silently trimmed. Intervals are half-open, so 9–12 and 12–2 don't conflict.
  • * Occupancy stays derived: both shapes are read from submissions at request time (cancelled/rejected submissions release their cells automatically), and the submissions route rejects conflicting claims with a 409 on both first submit and resubmission.

0.17.0 — August 19, 2026

Breaking: advance_submission_status now requires the new submissions:write scope.

  • * Why: it was gated on submissions:recommend, a scope whose whole purpose is to let a connector SUGGEST an approval without being able to perform one. The consent screen told users the connector "cannot actually approve — a human still clicks the button" while that same grant permitted a real workflow status change. Suggesting an approval and performing one are different decisions, so they are now different scopes.
  • * What breaks: an existing connector holding only submissions:recommend now gets an insufficient_scope error from advance_submission_status. Reconnect it and approve the new scope to restore that tool. Every other tool is unaffected — including recommend_submission, bulk_recommend_submissionsand clear_recommendation, which stay on submissions:recommend.
  • * Not a silent widening: nothing gains a capability here. A connector that was never re-consented can do strictly less than before, which is the point.

0.16.1 — July 27, 2026

Fix: the write-path context hint no longer goes silent on unlinked forms.

  • * apply_form_tool_call / apply_form_tool_calls: when the target form has no linked AI Context documents but the tenant has some (often build guides sitting on the sibling form a new build is modeled on), the response note now says so and points at list_context_documents — previously the hint only fired for docs linked to the form being edited, so an agent rebuilding a documented form type elsewhere proceeded unguided.

0.16.0 — July 27, 2026

Batch edits, compact responses, and a loud no-op guard.

  • + apply_form_tool_calls: apply a sequence of granular ops in ONE request — ops validate against the running result in order, everything writes atomically with a single revision bump, and the response is a compact summary with per-op notes. All-or-nothing: the first failing op aborts the batch with nothing written. A 15-op build is one round-trip instead of 15 full-document echoes.
  • + apply_form_tool_call compact option: return a small { revision, pageCount, fieldCount, … } summary instead of the full form document — fetch the doc once at the end with get_form.
  • * update_field no longer silently no-ops: a call whose patch is not under data (e.g. sent as patch:) previously returned success while changing nothing; it now errors with the expected shape and the keys it received, and nothing is written.

0.15.1 — July 27, 2026

Fix: repeater fields now repeat by default.

  • * add_field: field_type: "repeater" now mints the container with repeatable: true (plus repeatMin: 1, repeatMax: 5) — previously the type alone produced a plain non-repeating container unless the call also passed data.repeatable explicitly. Explicit data values still override the defaults.

0.15.0 — July 27, 2026

Staleness signal on AI Context enrichment.

  • * get_form / get_submission: form-scoped documents in buildContext / reviewContext now carry stale: truewhen the form was updated after the document's last edit, and the response note says how many are stale — verify against the current form (or refresh the doc) before relying on flagged guidance. The admin AI Context tab shows a matching "Form updated since" chip.

0.14.0 — July 26, 2026

AI Context guidance now reaches the write path.

  • * apply_form_tool_call: when the target form has AI Context documents, the response note now carries a heads-up with the doc count and where to fetch them (get_form's buildContext / get_context_document) — so an agent that edits without reading first is pointed at the tenant's guidance instead of mutating blind.
  • * create_context_document: same-kind, same-scope near-duplicates are now refused by default — the call returns the existing documents with created: false and asks you to fold additions in via update_context_document. Pass the new optional allow_duplicate: true to create anyway. Prevents repeated write-backs from crowding real guidance out of the enrichment cap.

0.13.0 — July 11, 2026

New field type: estimateWorksheet — construction estimate worksheet.

  • + estimateWorksheet field type:a self-contained cost sheet with line items grouped by division (CSI-style sections), live qty × unit-cost math per row, division subtotals, a sequential markup cascade (e.g. Overhead then Profit), and a bid total + margin readout. Configure via estimateConfig (divisions, units, rowTypes, markups, marginFloor); omit it for sensible defaults. Value shape: { version: 1, rows: [{ division, description, rowType, qty, unit, unitCost }], markups }.
  • + totalsV2 estimate source: { kind: "estimate", field, measure: "directCost"|"bidTotal"|"margin"|"division"|"rowType", key? } — reads computed worksheet measures, so compliance rules can hard-block a submission (e.g. margin below a floor) using the same engine as every other source.
  • * list_field_types now returns the estimateWorksheet schema.

0.12.0 — June 12, 2026

Removed: add_submission_comment (submission comments deprecated).

  • - add_submission_comment is removed. Submission comments have been deprecated and taken out of the product; the tool no longer exists. Use recommend_submission (advisory review) or advance_submission_status for review actions.

0.11.0 — June 12, 2026

Withdrew the experimental preview_form MCP Apps widget.

  • * A short-lived experimental preview_form tool + MCP Apps UI resource (io.modelcontextprotocol/ui) was trialed and removed the same day — inline MCP Apps rendering is still unreliable in current hosts. Form previews remain available via the existing tools and the form’s /share/<slug> link. No stable tools were affected.

0.10.0 — June 12, 2026

AI Context documents — shared guidance for humans and agents.

  • + AI Context tools: list_context_documents, get_context_document, create_context_document, update_context_document, delete_context_document — tenant-scoped markdown guidance documents (kinds: review_guide, form_purpose, field_glossary, general), each optionally linked to a form. Shown to human reviewers in the admin AI Contexttab and the submission-review panel, and read by agents as build guides and review rubrics — write a “how to build X” doc once and the next agent can repeat the build.
  • * get_submission attaches reviewContext andget_form attaches buildContext— the form’s context documents plus tenant-wide ones, delivered with the data so agents don’t need a separate lookup. Bounded (12 docs, 6,000 chars per body) with truncation reported, never silent: oversized docs carry truncated/fullLength and the response note says to fetch the full body via get_context_document.
  • * Server instructions on initialize — connected agents are steered to consult context documents before building or reviewing a form, and to prefer duplicate_formfor same-form-new-term requests (e.g. “make a new inload form for spring”).

0.9.1 — June 11, 2026

Fix: update_form_settings no longer wipes grouped settings.

  • * update_form_settings now deep-merges the groupedrenderSettings keys (signup, booking,auditTrail, reviewSettings). Previously a patch touching one nested key replaced the whole group — e.g.{ reviewSettings: { labelBadges: true } } silently erasedrequireReviewNoteOnReturn and showActivityTimeline. Top-level scalars still replace; unknown keys still pass through.

0.9.0 — June 11, 2026

Safe field renames: rename_field cascades references.

  • + New op rename_field on apply_form_tool_call({ field_name, new_name }) — renames a field and updates every reference to the old name in the same write: totalsV2 metric sources (field / schedule / repeater + sub-field, incl. hoursPair__base/__derived), page logicRules conditions,visibleWhen visibility rules, and submission-tabledisplayFields. The result note lists exactly which references were updated. Previously names were immutable via MCP because a rename silently orphaned these references (totals read 0).
  • * delete_field now warns about orphaned references — deleting a field that totals, logic, visibility, or submission columns still point at returns a warning naming each dangling reference. References are flagged, never auto-removed.
  • * Builder warning banner — opening a form whose config references missing fields (e.g. after an external edit) now shows a non-blocking warning listing each dangling reference, instead of letting totals silently render 0.

0.8.0 — June 9, 2026

Totals v2: cross-referential validation + a dry-run evaluator.

  • * Cross-ref validation on add_field/update_field: a totalsV2 source that points at a field, schedule, or repeater/sub-field that doesn’t exist on the form is now rejected with the list of valid names — instead of being written and silently rendering 0(the most common formula mistake). Builds on the structural validation from 0.7.x.
  • + New tool evaluate_totals_v2 — dry-run a dashboard config (inline, or an existing field via form_slug + field_name) against sample_dataand get each metric’s computed value + target. Runs the exact engine the renderer uses (rounding, repeater sums, schedule exclusions), so you can verify formulas without rendering the form.

0.7.0 — June 8, 2026

Totals v2 formulas + per-event-type schedule policy — documented in list_field_types.

  • * totalsV2 metrics now document the full surface: the{ kind: "repeater", repeater, subField } source (sum a sub-field across repeater rows, incl. hoursPair __base/__derivedhalves), per-metric rounding (half/quarter/whole/ceil/floor), a target goal source, named parameters(param: true constants) and aliases(alias: true named computed values). Formulas now note+ − × ÷ support and the key rule: evaluatedleft-to-right with no operator precedence.
  • * scheduleV2 event types (titleOptions) gain excludeFromTotals(block type doesn’t count toward hours) and respondentHidden(template-only boundary — submitters can’t pick it, e.g. “Non Service”).

0.6.0 — June 7, 2026

Totals Dashboard v2 field type.

  • + New field type totalsV2 — a self-contained metric-tile dashboard configured on the canvas (no separate workspace). Available via create_form/add_field. Config istotalsV2Config = { version: 2, columns, metrics }; each metric sources from a form field, a scheduleV2 total (overall/per-title/per-day), a static value, or a simple +/− formula.

0.5.0 — June 7, 2026

Schedule Grid v2 field type.

  • + New field type scheduleV2 — a self-contained, timezone-safe weekly availability grid that needs no CalendarTemplate. Available via create_form/add_field and listed inlist_field_types. Submitted value is{ version: 2, events: [{ day, start, end, title, color }] }where day is 0=Mon…6=Sun and start/endare minutes-from-midnight. Configure days,startHour/endHour, slotMinutes,titleOptions, and a pre-filled locked template.
  • + Reusable templates: list_schedule_v2_templates,get_schedule_v2_template, create_schedule_v2_template,update_schedule_v2_template, delete_schedule_v2_template— save and reuse a grid’s config + locked blocks across forms.

0.4.0 — May 28, 2026

Form-linked CTA buttons.

  • * Button blocks can now link to one of your forms instead of a URL: set { linkType: "form", formId, formSlug }(get both from list_forms) and omit href. The send path rewrites it into a tracked, name/email-prefilled form link. Reflected in list_block_types schemas.
  • * lint_email now flags form-linked buttons whose target is missing/deleted (form-link-missing), archived (form-link-archived), or unpublished (form-link-unpublished), and no longer false-positives a form button as having “no link.” The form catalog is resolved from your tenant automatically.

0.3.0 — May 26, 2026

Major batch — full tool surface.

  • + Diagnostics: whoami.
  • + Forms admin: archive_form, publish_form, duplicate_form, add_page, update_page, delete_page, reorder_pages, update_form_settings, assign_workflow_to_form.
  • + Reads: list_calendar_templates, get_calendar_template, list_contacts, get_contact, list_audiences, get_audience, list_workflow_templates, get_workflow_template, get_form_stats.
  • + Submissions: bulk_recommend_submissions(HMAC confirm when matching > 25), add_submission_comment, advance_submission_status (HMAC confirm).
  • + Campaigns: create_campaign, schedule_campaign, cancel_campaign, duplicate_campaign, save_as_template.
  • + Contacts & audiences: add_contact, update_contact, tag_contact, create_audience, add_to_audience, remove_from_audience.
  • + Workflow & calendar template writes: create_workflow_template, update_workflow_template, create_calendar_template, update_calendar_template.
  • + Variables: list_variables, get_variable, set_variable_value.
  • + Email templates: list_email_templates, get_email_template_full, update_email_template.
  • + Tenant, media, audit: get_tenant, update_tenant_branding, list_media, delete_media, get_audit_log.
  • * All write tools now carry MCP destructiveHint annotations. All reads carry readOnlyHint.
  • * recommend_submission gains structured signals (concerns[], highlights[],fieldsReferenced[], suggestedAction) for richer review-panel rendering.
  • * Forms now carry a revision counter for optimistic-concurrency protection across multi-tab + MCP + UI edits.
  • * Every write response includes clickable deep links to the affected form / campaign / submission for in-chat hand-off.

0.2.0 — May 2026

  • + Form builder tools (V2 schema): list_forms, get_form, create_form(single- and multi-page with logicRules), apply_form_tool_call, list_field_types.
  • + Submissions soft-approval tools: list_submissions, get_submission, recommend_submission, clear_recommendation. recommend_submission is advisory only — never changes workflow status.
  • + JSON Schemas for every form field type incl. totals(dashboard widgets + formula DSL) and rich select options.

0.1.0 — Initial release

  • + MCP OAuth provider: PKCE S256 + Dynamic Client Registration + Authorization Server Metadata.
  • + Campaigns tools: list_campaigns, get_campaign, set_campaign_blocks, apply_tool_call, render_email, screenshot_email, lint_email.
  • + Email block templates: list_templates, get_template, apply_template_to_campaign.
  • + Auto-snapshots before destructive campaign writes (list_campaign_snapshots, restore_campaign_snapshot, 30-day TTL).
  • + upload_image for the media library.
  • + Slash-command prompts via prompts/list.

Versioning policy

The server's MAJOR.MINOR.PATCH version is exposed at GET /api/mcp in the version field.

  • Patch (0.x.Y): bug fixes, doc updates, internal refactors. No client-visible changes.
  • Minor (0.X.0): new tools, new optional fields on existing tool inputs/outputs, new prompts. Backwards-compatible.
  • Major (X.0.0): breaking schema changes, tool removals, scope renames. Announced ≥ 30 days in advance via this changelog and an email to active OAuth clients' registered contacts where available.