Skip to content

Fresh Jots for developers

A notebook your code can write to. Give every script, cron job, deploy hook, and agent its own append-only note — one curl per event, no setup, no id to look up — then read all of them from your phone.

# First call creates the note "cron-jobs-prod". Every call after appends a line.
curl -X POST https://freshjots.com/api/v1/notes/by-filename/cron-jobs-prod/append \
  -H "Authorization: Bearer $FRESHJOTS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text":"backup ok 2026-06-02 03:00"}'
{"filename":"cron-jobs-prod","created":true,"byte_size":26,
 "bytes_remaining":3145702,"storage_used":26,"storage_cap":16106127360,
 "updated_at":"2026-06-02T03:00:01Z"}

The idea: the note is the channel

Most notes apps want you to file things into a hierarchy. Fresh Jots' Dev tier inverts that for the engineering use case: the note is the channel. Closer to "Slack channels for bots" than "fancy notes app" — a flat set of append-only streams your systems write to and you skim on your phone. A few examples of what people actually wire up:

  • claude-code — sublimate AI coding sessions via a slash command at the end of each run
  • cron-jobs-prod — hourly cron one-liner with the result
  • payments-product-X — point Stripe's webhook straight at the note's inbox; no handler to write
  • failed-deploys — GitHub Action on red writes a one-liner
  • engineering-journal — shell alias j "fixed the auth bug"
  • agent-scratchpad — autonomous-agent working memory between runs

Prefer not to hand-roll curl?

There's a CLI, a JS package, and a Ruby gem — same endpoints, less boilerplate: Homebrew tap (Linux & macOS), npm install freshjots (freshjots-js, also PowerShell/no-install), and gem "freshjots" (rubygems).

What Fresh Jots is — and isn't

It's the place for the digest outputs of your jobs — successful payments one after another, errors, failed deploys, daily summaries, AI session transcripts — anything you'd actually want to read on your phone. Raw firehose server output? Pipe that into a log aggregator (Datadog, BetterStack). Fresh Jots is the everyday highlights layer above that, plus any note you'd like to write by hand. We won't pretend to be your log search; we're the thing you glance at over coffee.

Two patterns, both one request

Append-only for log-style streams (the example above); standard CRUD for editable notes. Both authenticate with a bearer token — export FRESHJOTS_TOKEN=mn_… once, then reference $FRESHJOTS_TOKEN in every call. (Leave the $ in — it's a shell variable, not part of the token. Full auth notes in the docs.)

Standard CRUD note — POST to create, PATCH to edit, DELETE to remove:

curl -X POST https://freshjots.com/api/v1/notes \
  -H "Authorization: Bearer $FRESHJOTS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"note":{"title":"Q4 plan","plain_body":"Top priorities..."}}'

Need to ship a batch? The bulk endpoint takes up to 50 notes in one atomic request. Retrying a flaky write? Send an Idempotency-Key header and the same call replays the original response instead of double-writing. Copy-paste examples for every endpoint →

Webhooks — both directions

The append-only note is a hub: events flow in from your other services, and back out to wherever you watch. Both directions are on the Dev and Team plans, no add-on.

Inbound — the webhook inbox. Give any append-only note its own inbox URL and point someone else's webhook straight at it — Stripe, GitHub, a monitoring tool, your POS, anything that can POST. Each event arrives sanitised into one clean, timestamped line in the note. No handler to write, no server to run: you paste the URL into their dashboard and events start landing.

POST https://freshjots.com/h/<inbox-token>

The token is the credential — no auth header — so treat the URL like a secret. Rotate it from the note's settings if it leaks and the old URL dies instantly. Payloads are buffered durably and retried, so a momentary blip never drops an event; anything that ultimately fails lands in a dead-letter view you can replay with one click.

Outbound — fan every append out. Set a webhook_url on an append-only note and every successful append POSTs a JSON payload to your endpoint, signed with HMAC-SHA256 (X-FreshJots-Signature) so you can verify it came from us. Keep the signed generic envelope, or have Fresh Jots reshape the body for Slack or Discord incoming webhooks — so a note quietly mirrors itself into a channel as it fills.

A dead endpoint auto-disables after repeated failures (and says so on the settings page) so it never silently drains the queue; save the note to re-arm it.

Use it from Claude, Cursor, and any AI client

Fresh Jots speaks the Model Context Protocol, so your AI assistant can read and write your notes directly — no copy-paste. Ask it to "append today's summary to ai-sessions.txt" or "what did I note about the deploy bug?" and it calls the API for you. The star tool is append‑to‑note: it appends to a note addressed by an exact filename and creates it on first write — the same logging primitive as the curl above, driven by your agent.

Hosted — no install

Add https://freshjots.com/mcp as a connector in claude.ai, Claude Desktop, or Cursor, authorize in your browser, and your notes show up as tools. Reading is free for every account; agent writes (create, edit, organise) come with the Personal plan ($24/yr), and Dev / Team add the token-driven REST surface this page is about.

Local — for Claude Code or any stdio client

# remote, via Claude Code (OAuth in the browser on first use):
claude mcp add --transport http freshjots https://freshjots.com/mcp

# or the zero-dependency local server, with an API token:
FRESHJOTS_TOKEN=mn_… npx -y freshjots-mcp

Eleven tools cover the notebook — list, read, create, append, update, delete, and move notes, plus list / create / rename / delete folders — with the same plain-text, owner-scoped model as the REST API.

Dead-man's-switch — included, not an add-on

Set an expected interval on any append-only note. If a write doesn't land in time — your cron died, the deploy hook stopped firing, the agent stalled — Fresh Jots emails you (or your alert_email). It's the "tell me when the thing stops happening" alert that's annoying to build yourself.

It's part of the developer (Dev) plan at no extra charge — not a paid add-on, not a metered upsell. The same $149/yr that gets you the API gets you the dead-man's-switch and the webhooks above. Set it from the note's settings or via the API; details in the watchdog docs — or read the full pitch on the dead-man's switch page.

Built like an API you'll trust

The endpoints are the easy part. These are the details that decide whether you'll actually point production at it:

Scoped bearer tokens

mn_… tokens, stored only as a hash and shown once. Mint them read-only, write-only, append-only, or pinned to a single note; 90-day default expiry, one year max.

Stable error envelope

Every error is {"error":{"code","message"}} with a documented, stable codenote_locked, cap_exceeded, rate_limited. Switch on the code, not the prose.

Idempotent writes

Send an Idempotency-Key on any write; for 24 hours a retry replays the original response (Idempotent-Replay: true) instead of writing twice.

Honest rate limits

Every response carries X-RateLimit-*; 429s carry Retry-After. Your own 4xx history is in a per-account API error log.

Bulk & pagination

Ship up to 50 notes in one all-or-nothing request, with per-note errors when something's off. List with limit/offset, X-Total-Count, and RFC 5988 Link headers.

Owner-scoped by construction

A token only ever sees its own notes; a wrong-owner id is a plain 404. Personal and team tokens can't reach across into each other's workspaces.

Backed up, and status-paged

Encrypted daily off-host Postgres backups, and a public status page — the full security posture is documented, not implied. Point production at it with eyes open.

What you get on Dev / Team

Resource Dev — $15/mo Team — $179/seat/yr (2-seat min)
Seats 1 2 to 25 (per-seat billing)
Plain notes (team-wide) 10,000 50,000
Per-note plain size 3 MB 3 MB
Storage (team-wide) 15 GB 50 GB
Active API tokens (team-wide) 3 30
Reads / writes / appends per minute (per token) 600 / 60 / 300 2,000 / 200 / 1,000
Bulk endpoint (50 notes/req) Yes Yes
Dead-man's-switch alerts + outbound webhooks Yes Yes (team-wide routing + per-member ack)
Inbound webhook inbox (Slack/Discord out) Yes Yes
Shared notes + roles + audit log Yes

New accounts that pick code mode get a 14-day Dev API trial token — enough to wire up everything on this page before you pay a cent. Full caps and rate limits at /limits.

Wire your first script to a notebook in 5 minutes

10 notes free. No card, no trial clock — just sign up and write.