Changelog

What changed in the API, the MCP connector and this support portal.

2026-06-28 — Campaigns live in the connector ✅

  • Campaigns are now reachable. The full /campaigns family works end-to-end through the MCP connector (esperto_list_campaigns → JSend status: OK). New tools cover listing, creating, updating, members, and invitations/reminders. See MCP Tools.
  • Scope must be requested, not just enabled. With client_credentials the token only carries the scopes named in the request. A scope that's enabled on the client but missing from the request returns 403 on those endpoints. Add every family you call to the requested scope string. See Authentication and FAQ & Troubleshooting.
  • Campaign data model documented from live data, including how a campaign's variant and language reference a report-variant and its supported languages. See Endpoints and the new Campaigns guide.
  • ⚠️ invite and remind send real emails. Only run them against a campaign whose members are addresses you control.

2026-06-25

  • Group creation works: added esperto_create_group (POST /groups) to the connector. Confirms group-write access.
  • Add-member-to-group resolved: the earlier 404 was a singular/plural route typo, not a permission issue. Both POST /groups/{id}/member/{memberid} (legacy) and …/members/{memberid} (plural) are now registered.
  • Dupecheck best practice: always dupecheck before creating — the API rejects duplicate member emails and group names/aliases. Added connector tools esperto_members_dupecheck and esperto_groups_dupecheck. See FAQ & Troubleshooting.

2026-06-24 — MCP connector live end-to-end ✅

  • The connector now authenticates and returns data (esperto_list_groups → JSend status: OK). The fix had three parts: call /auth/access_token (not /auth/authorize); send the body form-urlencoded (not JSON); include grant_type=client_credentials.
  • Correction: client_credentials is supported — it's the grant headless clients use. See Authentication.
  • Auth bug fixed: a stale .htaccess on the host was stripping the Authorization header before it reached PHP, so bearer tokens read as empty. Forwarding rules added; bearer auth works again.
  • Documented token rules (1h lifetime, refresh blocked) and the JSend response contract (HTTP 200 always; read status, not the HTTP code).

2026-06-02

  • Knowledge base initialised. Captured the first customer onboarding: base URL, enabled /members & /groups scopes (22 total), full endpoint list, and the OAuth2 auth flow.

Was this helpful? Get in touch if something is missing or unclear.