Changelog

What shipped.

Newest first. Every line is a capability that's live, not a promise. If it's on the roadmap and not in the box, it isn't here yet.

  1. Fixv0.16

    No tell in the verdict

    • Generated posts already had the em-dash and en-dash stripped, since that punctuation is the model's most-cited writing tell. Now the rest of the human-facing prose gets the same pass: the score verdict, the hook and format notes, and every signal's label and detail, plus rewrite change notes and the hook and angle on each planned post. The cleanup never touches ordinary hyphens, so 'build-in-public' and number ranges stay intact.
  2. Docsv0.15

    The credit wall is in the spec

    • Every credit-bearing endpoint (score, rewrite, generate, plan, both voice paths, and scoring a stored post) now documents the 402 quota_exceeded response in the OpenAPI spec, with a Retry-After header and the credit headers that report your standing. A code generator reading the spec now knows a model call can be refused when the monthly allotment runs out, instead of discovering it at runtime.
    • While auditing, two endpoints had incomplete response sets: creating a voice from samples and scoring a stored post can both fail on a rate limit or a misbehaving model, and now say so (429 and 502). The spec matches what the server actually returns.
  3. Featurev0.14

    Discover the cost before you spend it

    • GET /v1/meta (and the socialkit://meta MCP resource) now carry a billing block: the credit cost model an agent can read without a key. It spells out that a credit is one successful model-backed call, that only score, rewrite, generate, plan, and build_voice cost one, that nothing is charged unless the call succeeds, and the full plan ladder with each tier's monthly allowance. No more scraping /pricing to learn what a call costs.
  4. Featurev0.13

    Planning that says which rubric ran

    • POST /v1/plan (and the plan_week MCP tool) now echo the platform they planned for, so a caller can confirm which pillar set produced the calendar instead of inferring it. This matches the platform echo score has carried since 0.10.
    • The MCP prompts are platform-aware. draft_and_grade and improve_post no longer claim LinkedIn is the only supported platform, and plan_and_draft_week takes a platform argument ('linkedin' or 'x') that threads through every step of the workflow.
    • The OpenAPI spec version now tracks the shipped version automatically, so /docs, /openapi.json, and /openapi.yaml can never drift from what we actually shipped.
  5. Fixv0.12

    Credit headers tell the truth

    • The x-credits-used and x-credits-remaining headers on a successful model call now reflect the balance after that call is billed, not before. A score that leaves you with 99 credits now says 99, instead of the old off-by-one 100. A blocked (402) call still reports the pre-charge balance, since nothing was spent.
  6. Featurev0.11

    Retry-safe, and easy to watch

    • Idempotency-Key now covers the LLM endpoints (score, rewrite, generate, plan) and their MCP tools, not just post creation. A retried call replays the original result instead of charging a second credit.
    • Reusing an Idempotency-Key with a different body is now an error (409 idempotency_key_reused on REST, a clear tool error on MCP) instead of silently replaying a stale result, so a buggy retry can't quietly return the wrong answer.
    • Draft and schedule in one call: pass runAt to POST /v1/posts (or the create_post tool) to create an already-scheduled post.
    • GET /v1/health is a keyless readiness probe that checks the database and key-value store, returning 200 when healthy and 503 when degraded so an uptime monitor can page on it.
    • The API host root (api.socialkit.sh) now returns a machine-readable service index pointing at the docs, spec, discovery, and health, instead of marketing HTML.
  7. Featurev0.10

    A contract you can build on

    • Every response now carries an x-request-id, and every error envelope includes the same id as error.requestId. Log it, and quote it to support so we can pull the exact call from our logs.
    • Post creation is idempotent. Send an Idempotency-Key header and a retry returns the original response instead of creating a duplicate.
    • List endpoints (posts, media, webhook deliveries) are paginated with limit and offset and a hasMore flag, so large accounts stay fast.
    • Webhooks are signed with a timestamped HMAC and retried with backoff, so you can verify authenticity and survive a brief outage without dropping events.
    • Score responses now echo the platform they graded against, so a caller can confirm which rubric ran.
  8. Featurev0.9

    Pricing and credits

    • Plans are live. Free starts at 100 credits a month with no card; Pro lifts the ceiling. See the full breakdown at /pricing.
    • A credit is one successful LLM-backed call, charged only after the call succeeds, so a rate limit or quota error never costs you one.
    • Every response echoes your standing in x-credits headers, and the dashboard's billing tab shows your plan, usage, and reset date.
  9. Launchv0.8

    The dashboard

    • A logged-in home at app.socialkit.sh. Sign in with a magic link or with Google, no password to manage.
    • Create and revoke API keys, manage brands and voices, draft and schedule posts, and see your calendar, all from the browser.
    • Score, generate, and rewrite in-app, so you can feel the product before wiring a single line of code.
    • Everything the dashboard does is the same surface the API and MCP server expose. One capability, three ways in.
  10. Featurev0.7

    X planning

    • plan now builds X (Twitter) content calendars, not just LinkedIn. Set platform: "x" on /v1/plan or the plan_week MCP tool.
    • X calendars use reply-shaped pillars (sharp takes, build-in-public receipts, save-worthy tips, reframes), keep hooks punchy and reply-baiting, and never suggest a PDF carousel since X has no document format.
    • Honest scope: scoring, preflight, generation, rewrite, and planning are all multi-platform now. Publishing stays LinkedIn-only until the X channel path ships.
  11. Featurev0.6

    X rewrite

    • rewrite now sharpens X (Twitter) posts, not just LinkedIn. Set platform: "x" on /v1/rewrite or the rewrite_post MCP tool, or pick the platform in the dashboard's Rewrite page.
    • X rewrites pull toward the reply: tighter (default under 280 chars), a sharper reply-baiting hook, link moved out of the body, hashtags stripped. You still get the honest before/after score, graded against the live X rubric, and no facts are invented.
    • Honest scope: scoring, preflight, generation, and rewrite are all multi-platform now. Publishing stays LinkedIn-only until the X channel path ships.
  12. Featurev0.5

    X generation

    • generate now writes X (Twitter) posts, not just LinkedIn. Set platform: "x" on /v1/generate or the generate_post MCP tool, or pick the platform in the dashboard's Generate page.
    • X drafts are written for the ranker that matters: reply-optimized hooks, punchy by default (under 280 chars), no link in the body, no hashtag spam. Each candidate is auto-graded against the live X rubric and returned best-first.
    • Honest scope: scoring, preflight, and generation are multi-platform today. Rewrite and publishing stay LinkedIn-only until their X paths ship.
  13. Featurev0.4

    X scoring

    • score and validate now grade X (Twitter) posts, not just LinkedIn. Set platform: "x" on /v1/score or /v1/posts/validate, or on the score_post / validate_post MCP tools.
    • Each platform is graded against its own 2026 rubric. X weights the hook and reply-driving harder, knows the link deboost is brutal (move the link to a reply), and warns on hashtag spam at 3+ instead of 6+.
    • Per-platform contract everywhere: X allows long-form up to 25,000 characters and drops the PDF-carousel media kind. GET /v1/meta now returns a platformConfigs block with each live platform's cap, media set, and dimension weights.
  14. Docsv0.3

    Docs that can't drift, and copy that's true

    • /docs is now generated from the OpenAPI spec. Every endpoint, parameter, and schema on the page is the real surface, with a build-time check that fails if the page and the spec disagree.
    • Added /blog and this changelog.
    • Removed the last of the inflated copy. We grade with a Claude Sonnet judge, and the site now says exactly that.
  15. Featurev0.2

    Memory: brands and voices

    • Brands and voices are now first-class, account-scoped objects. Create one once, reference it by id from generate and plan.
    • build_voice distills a reusable voice from sample posts. Pass the returned id to condition every later draft.
    • Same memory works over REST and over MCP. One capability, two transports, never implemented twice.
  16. Launchv0.1

    The API and the MCP server

    • Authed JSON REST surface at /v1: score, rewrite, generate, and plan, plus accounts and API keys.
    • MCP server exposing the same capabilities as tools. Drop it into Claude, Cursor, or any MCP client with one bearer key.
    • OpenAPI spec published as the single source of truth for the whole surface.
    • Scoring eval harness with a held-out reference set, so we can measure the grader instead of guessing.
  17. Launchv0.0

    PostScore

    • Free, no-signup PostScore: paste a LinkedIn draft, get a 0-100 score with a per-dimension breakdown and ranked signals.
    • Shareable result pages with rendered OG cards.

Want this as a feed?

The API and MCP server move faster than this page. Get a key and watch the surface grow from the inside.

Read the docs