Changelog
Everything we've shipped
Built in public. New infrastructure, features, and polish, week after week.
Agentic operating system — 20+ MCP verbs, two-axis pricing, public API docs
- FeatureTwo-axis pricing — usage credits
Every workspace gets a monthly credit allowance + top-up balance. Each agent call, tool run, and AI generation spends credits. Self-serve Stripe Checkout top-ups: Starter £10 / 1k cr, Growth £45 / 5k cr, Scale £200 / 25k cr.
- Feature20+ agent / MCP write capabilities
Calendar (add / reschedule / cancel event), CRM (notes, pipeline moves, lead deletion, lead → client conversion, client edits, portal messages), Operations (create + status + delete + update for deliverables, projects, contracts), Billing (mint payment link, mark paid, reschedule due date), Reporting (deterministic report draft). 9 read resources.
- FeatureFirst-party MCP transport
/api/mcp speaks JSON-RPC 2.0 over Streamable HTTP. Drop the URL + token into Claude Desktop, Cursor, or any MCP client — no mcp-remote bridge required. Same handlers as the dashboard tool palette.
- FeaturePublic API docs at /docs/api
Auto-generated from the capability catalogue — never drifts from the runtime. Install snippets for Claude Desktop / Cursor / n8n + curl smoke test.
- FeaturePer-org credit pricing overrides
Owner/admin can set per-capability rates that override the platform defaults (or set 0 to disable charging). Pricing flexibility for partnership rates, volume discounts, enterprise deals — pure JSONB on the org row.
- FeaturePer-token credit budgets
Mint a token with a monthly credit cap. Token gets its own 402 once spend exceeds the cap, even if the org still has balance. Contains the blast radius if a token leaks.
- FeatureCredit usage report + CSV export
/settings/billing now shows 30-day spend by capability, per-day sparkline, total spent / added, and a one-click CSV download of every credit_event for accounting.
- FeatureLive token activity feed
/settings/api-tokens shows the last 50 actions every token has taken, kind badge (mcp / ui), token-name filter dropdown, and links into the entity. Closes the trust loop: mint → see what it ran → revoke.
- FeatureMessages — server-side unread state
Dashboard Conversations stat goes amber when unread, per-thread badges in the Active Conversations list, count badge on the Messages tab in the client layout, per-row badge on the clients list. Bell-dropdown messages auto-mark-read when their timestamp predates the user's last_read_at.
- FeatureMessages — attachments
Paperclip on both agency and portal message pages uploads to the private client-files bucket (25 MB cap, 16 mime types). Images render inline, other files render as labelled link cards with signed URLs.
- FeatureInline 'Run via agent' shortcuts
Dashboard Today panel rows reveal a Zap-icon button on hover that opens the matching tool dialog pre-filled with the row's context — overdue invoice → mint link, pending approval → mark approved, hot lead → move stage.
- FeatureFirst-run activation checklist
Five-step onboarding card on the dashboard for fresh orgs. Auto-dismisses once a client exists — established workspaces never see it.
- FeatureStripe payout.failed Slack alert
Connect-onboarded orgs get a one-shot Slack message when Stripe couldn't deliver a payout, deduped per payout id so retries don't spam.
- InfrafireOnce alert primitive + retention
lib/alerts.ts — single sanctioned way to fire a one-shot-per-period alert via the new org_alerts table. Daily cron prunes rows older than 180 days.
- InfraNative MCP package, no shim
Refactored agent_read into a shared lib so the REST route and the MCP transport call the same code. Capability schemas surface in MCP tools/list with per-call credit annotations.
- Fixupdate_client status enum
Was rejecting every valid status because the capability hard-coded made-up names. Now matches the live client_status enum (onboarding / active / paused / past).
- InfraMobile sweep — invoices list
/invoices table now stacks as mobile-friendly cards under sm. Client name + invoice number + total + status pill stay visible. Desktop grid layout returns above sm.
- Security5 production migrations applied
usage_credits, token_budgets_and_alerts, org_credit_pricing, client_notes, conversation_reads. All with org-scoped RLS, indexed for the access patterns the dashboard actually uses.
Rebrand, SEO infrastructure, legal pages, landing polish
- FeatureRebrand to Manage Agency
New name, new Nanobanana-inspired M/A monogram, new domain at manageagency.app, and brand colour #7C3AED throughout.
- FeatureLegal pages live
/privacy, /terms, and /contact with a shared branded layout, sitemap entries, and unauthenticated access.
- FeatureLanding FAQ + trust row + roadmap
Eight FAQs with FAQPage schema, a tech-stack trust row, and a two-column roadmap section.
- FeatureIntegrations catalogue
/settings/integrations with 8 planned connectors (Gmail, Google Calendar, GA4, Stripe, Slack, Vercel, DocuSign, Zapier).
- FeatureKeyboard shortcuts cheat sheet
Press ? anywhere in the signed-in app to open the shortcuts modal.
- FeatureMobile-responsive sidebars
Agency + client sidebars collapse to a slide-in drawer with a hamburger in the header below the lg breakpoint.
- InfraSEO infrastructure
robots.txt, sitemap.xml, /.well-known/security.txt, manifest.webmanifest, and JSON-LD graph (Organization, WebSite, SoftwareApplication, FAQPage).
- InfraVercel Analytics + Speed Insights
Live traffic and Core Web Vitals reporting on manageagency.app.
- InfraNext.js error / loading / 404 UI
Branded not-found, error, global-error, and per-group loading skeletons.
- SecurityFix middleware blocking SEO routes
robots.txt, sitemap.xml, and /.well-known/security.txt were being 307'd to sign-in. Crawlers and security researchers now reach them unauthenticated.