# Oakstack > One API key for the infrastructure every app needs: scheduled jobs (clock) and a webhook relay (hook) today; PDFs (print) and email (post) coming. Built for coding agents: install the `oakstack` npm package or connect the MCP server, set OAKSTACK_API_KEY, and go. Key facts for agents: - SDK: `npm install oakstack`, then `new Oakstack()` (reads OAKSTACK_API_KEY). Zero dependencies; Node 18+, Bun, Deno, edge runtimes. - MCP: hosted at https://oakstack.dev/mcp (Streamable HTTP, header `Authorization: Bearer `), or `npx -y oakstack-mcp` over stdio. - REST: https://oakstack.dev/api/v1/..., `Authorization: Bearer ok_live_...`. Send `Idempotency-Key` on writes. - Oakstack calls only public https:// URLs, never localhost. Requests it sends are signed; verify `Oakstack-Signature` with `verifySignature` from the SDK. - Errors are JSON `{ statusCode, name, message }`; the message says what to fix. `usage_limit_reached` means the plan's limit is full: don't retry. ## Docs - [Oakstack overview](https://oakstack.dev/docs/overview.md): Setup (API key, SDK, MCP), errors, retries and idempotency, plans and limits. - [Oakclock: scheduled jobs](https://oakstack.dev/docs/clock.md): Scheduled jobs: call a URL on a cron schedule with retries and a run log. - [Oakhook: webhook relay](https://oakstack.dev/docs/hook.md): Webhook relay: a permanent inbound URL that stores, forwards, retries, and replays events. - [Verifying Oakstack signatures](https://oakstack.dev/docs/signatures.md): Verifying the Oakstack-Signature header on requests Oakstack sends your app. ## Optional - [All docs in one file](https://oakstack.dev/llms-full.txt) - [Claude Code skill](https://oakstack.dev/SKILL.md): save as ~/.claude/skills/oakstack/SKILL.md - [npm: oakstack](https://www.npmjs.com/package/oakstack): the SDK - [npm: oakstack-mcp](https://www.npmjs.com/package/oakstack-mcp): the MCP server