Oakstack
Cron jobs with retries, webhook relay, HTML-to-PDF, and transactional email for your app.
Connector by oakstack.devOfficial · Domain verified by the MCP Registry
Install
Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/oakstack-dev-oakstack
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://oakstack.dev/mcpRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 25 read · 17 write · 2 delete
- Secrets
- 2 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 44
Read from the source code; the running server may list different tools.
Read 25 · Look things up without changing anything.
bell_get_notificationbell_list_appsbell_list_devicesbell_list_notificationsclock_get_jobclock_list_jobsclock_list_runshook_get_endpointhook_get_eventhook_list_endpointshook_list_eventslens_list_templates
Show 13 more tools
oakstack_docsoakstack_usagepost_get_emailpost_list_domainspost_list_emailspost_statusprint_get_pdfprint_list_pdfsprint_list_templatesring_get_textring_list_numbersring_list_textsring_status
Write 17 · Create, change, send or run things.
bell_create_web_appbell_send_notificationclock_create_jobclock_run_jobclock_update_jobhook_create_endpointhook_replay_eventhook_update_endpointlens_extractpost_add_domainpost_create_inbound_addresspost_send_email
Show 5 more tools
post_verify_domainprint_create_pdfring_add_opt_outring_send_textring_set_reply_hook
Delete 2 · Delete, drop, revoke or wipe things.
clock_delete_jobhook_delete_endpoint
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
AuthorizationOAKSTACK_API_KEY
Network hosts it talks to 1
oakstack.dev· found in remote endpoint, install command
Tools (44)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
bell_create_web_appCreate a web push appCreate a web push app for a website. Oakstack generates the VAPID keys; the result's config.vapidPublicKey goes to the browser (applicationServerKey). iOS (APNs) and Android (FCM) apps need the user's own keys: they add those in the Oakstack dashboard (Push page).
bell_get_notificationGet a push notificationread-onlyOne notification with a delivery per device (status, platform response, error).
bell_list_appsList push appsread-onlyThe workspace's push apps: web (vapidPublicKey for the browser's pushManager.subscribe), apns (iOS), fcm (Android), with any credential error. Call this before wiring push into an app.
bell_list_devicesList push devicesread-onlyRegistered devices (filter by userId or appId). Devices the platform reported gone are 'invalid' and skipped automatically.
bell_list_notificationsList push notificationsread-onlyRecent notifications, newest first: status (queued, sending, sent, partial, failed, no_devices, canceled) and delivered/failed counts.
bell_send_notificationSend a push notificationSend a push notification to a user's devices (userId as registered) or specific devices. With an ok_test_ key nothing reaches a device: delivery is simulated (a device token containing 'invalid' simulates an expired device). Returns status 'queued' (or 'no_devices' when the user has none, which isn't counted); check bell_get_notification for per-device results.
clock_create_jobCreate a scheduled jobSchedule Oakstack to call a URL in the user's app on a cron schedule (like a cron job or Vercel Cron, but with retries and a run log). Returns the job, including `signingSecret`: tell the user to store it (e.g. OAKSTACK_SIGNING_SECRET) and verify the Oakstack-Signature header with `verifySignature` from the `oakstack` npm package. The target route must answer 2xx within 15 seconds. After creating, call clock_run_job to test it immediately.
clock_delete_jobDelete a scheduled jobcan change or delete dataDelete a job and its run history. This cannot be undone; prefer pausing if unsure.
clock_get_jobGet a scheduled jobread-onlyGet one job, including its schedule, status, pausedReason, and signingSecret.
clock_list_jobsList scheduled jobsread-onlyList the workspace's scheduled jobs with status, next run time, and last result.
clock_list_runsList a job's runsread-onlyRecent runs of a job, newest first: status (pending, running, succeeded, failed), attempt, responseStatus, the first 2 KB of the response, and the error. Use this to debug a failing job.
clock_run_jobRun a job nowCall the job's URL right now, outside its schedule (at most once every 10 seconds per job). Use it to test a new job. Then check clock_list_runs for the result (status, responseStatus, error).
clock_update_jobUpdate a scheduled jobChange a job's fields, or pause/resume it with status 'paused' or 'active'. A job that auto-paused after repeated failures shows why in pausedReason; fix the URL, then set status 'active'.
hook_create_endpointCreate a webhook endpointCreate a permanent inbound webhook URL that stores every event and forwards it to the user's app with the original headers and body, retrying for about 11 hours if the app is down. Returns `url` (give it to the sender, e.g. paste into Stripe's or GitHub's webhook settings) and `signingSecret` (optional: verify the Oakstack-Signature header). The app should keep verifying the sender's own signature, which still works because headers and body bytes are forwarded unchanged.
hook_delete_endpointDelete a webhook endpointcan change or delete dataDelete an endpoint and its events. Its inbound URL stops accepting immediately, so senders will start failing. Cannot be undone; prefer pausing if unsure.
Show 29 more tools
hook_get_endpointGet a webhook endpointread-onlyGet one endpoint, including its inbound URL and signingSecret.
hook_get_eventGet a webhook eventread-onlyOne event with its original headers, body, and every delivery attempt (status code, response snippet, error, duration). Use this to debug why the user's app rejected an event.
hook_list_endpointsList webhook endpointsread-onlyList the workspace's webhook endpoints with their inbound URL, forward URL, and status.
hook_list_eventsList webhook eventsread-onlyRecent events received by an endpoint, newest first, with delivery status (pending, delivering, delivered, failed), attempts, last response status, and last error. Filter with status 'failed' to find what needs attention.
hook_replay_eventReplay a webhook eventForward an event to the endpoint again (for example after fixing a bug in the user's webhook handler). Creates a new event linked by replayOf. Each replay counts as one event toward the plan's monthly limit.
hook_update_endpointUpdate a webhook endpointChange the name or forwardUrl, or pause/resume forwarding with status 'paused' or 'active'. Pausing holds events (they are still accepted and stored) and forwards them all on resume.
lens_extractRead images, PDFs, or text into structured dataRead photos, screenshots, PDFs (by public URL or base64) or pasted text and return structured data. Use template 'product-list' (products, quantities, condition, prices, pre-orders), 'receipt', or 'contacts', or pass your own JSON Schema. Returns data plus warnings for anything unclear. Counts pages against the monthly limit.
lens_list_templatesList Oaklens templatesread-onlyThe hosted extraction templates with their JSON Schema.
oakstack_docsOakstack docsread-onlyFull documentation as markdown: 'overview' (setup, errors, limits), 'clock' (scheduled jobs), 'hook' (webhook relay), 'print' (PDFs and templates), 'post' (email), 'lens' (reading images and documents), 'ring' (text messages), 'bell' (push notifications), 'signatures' (verifying Oakstack-Signature).
oakstack_usagePlan and usageread-onlyThe workspace's plan and this month's usage against each limit (jobs, webhook events, PDFs, emails, texts, push notifications, pages read). Check this before creating things if a limit might be close.
post_add_domainAdd a sending domainAdd a domain to send from. Returns DNS records: the user must add the required ones (3 DKIM CNAMEs) at their DNS provider; the recommended ones improve deliverability. The domain verifies by itself once the records are live (minutes to hours).
post_create_inbound_addressCreate an inbound email addressCreate an email address whose incoming mail is parsed (from, subject, text, html, attachments) and delivered as JSON to a webhook endpoint (create one with hook_create_endpoint first). Use it for support inboxes, reply handling, or email-to-app features.
post_get_emailGet an emailread-onlyOne email with its body and every event: sent, delivered, bounced (with the receiving server's reason), complained, suppressed.
post_list_domainsList sending domainsread-onlyThe workspace's sending domains with status (pending, verified, failed) and their DNS records.
post_list_emailsList emailsread-onlyRecent emails, newest first, with status (queued, sent, delivered, bounced, complained, failed, suppressed). Filter by status to debug.
post_send_emailSend an emailSend a transactional email. `from` must use a verified domain (see post_add_domain). With an ok_test_ key nothing is delivered: delivery is simulated and logged (send to bounced@test.oakstack.dev or complained@test.oakstack.dev to simulate those). Attach a PDF with attachments: [{ filename, print: { template, data } }]. Returns the email with status 'queued'; check post_get_email for delivery.
post_statusEmail sending statusread-onlyCheck whether live email can be sent from this workspace: whether sending is enabled, paused (after bounces or complaints), limited to workspace members (Free plan), and the current daily cap. Call this before setting up email.
post_verify_domainCheck a domain nowCheck a pending domain's DNS records right away instead of waiting for the automatic check.
print_create_pdfCreate a PDFRender a PDF from a full HTML document (`html`) or a hosted template (`template` + `data`). Returns the PDF with a private download `url` valid for an hour, page count, and size. Images and fonts in the HTML can be data: URLs or public https URLs. Counts against the monthly PDF limit.
print_get_pdfGet a PDFread-onlyOne PDF with a fresh download url (valid an hour), its error if it failed, and any resources the page tried to load that were blocked.
print_list_pdfsList PDFsread-onlyRecent PDFs, newest first, with status (rendering, succeeded, failed), error, page count, and a fresh download url. Filter with status 'failed' to debug.
print_list_templatesList PDF templatesread-onlyList the hosted PDF templates (invoice, proposal, report). Each has a JSON Schema for its data and a working example. Call this before print_create_pdf with a template.
ring_add_opt_outOpt a phone out of textsNever text this phone again from this workspace (for example, someone who asked by email). STOP replies are added automatically.
ring_get_textGet a textread-onlyOne text with every event (sent, delivered, undelivered with Twilio's error code).
ring_list_numbersList phone numbersread-onlyThe workspace's toll-free numbers with their verification status (verifying, active, rejected with the reason) and the Oakhook endpoint replies go to.
ring_list_textsList textsread-onlyRecent texts, newest first, sent and received (direction 'inbound' are replies). Status: queued, sent, delivered, undelivered, failed, opted_out, canceled, received.
ring_send_textSend a text messageSend an SMS to a US or Canadian phone. Comes from the workspace's approved toll-free number (or, before it's approved, the sandbox number to verified phones only). Include opt-out wording like 'Reply STOP to opt out.' in the first text to someone. With an ok_test_ key nothing is sent: delivery is simulated (+12025550180 simulates undelivered, +12025550181 carrier-filtered). Returns the text with status 'queued'; check ring_get_text for delivery.
ring_set_reply_hookSend replies to a webhook endpointDeliver texts people send to a number as JSON (object 'ring.inbound_message': from, to, body, media, optOut) to an Oakhook endpoint (create one with hook_create_endpoint). Pass hookEndpointId null to stop.
ring_statusTexting statusread-onlyCheck whether live texts (SMS) can go out from this workspace: whether texting is enabled, the plan allows it (not on Free), numbers and their toll-free verification, verified sandbox phones, and the next step. Call this before setting up texting.
Signals
- Last release
- Oct 11, 2026 (18 days ago)
Details
- Registry name
dev.oakstack/oakstack- Version
- 0.6.0
- Auth
- Bearer token, API key
- Packages
- npm oakstack-mcp
- License
- License unknown
- Website
- oakstack.dev
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- Official MCP Registry
Cite this page
Oakstack MCP server. Agent Mart. https://agentmart.dev/connectors/oakstack-dev-oakstack (last updated 2026-10-24)