Build with Hookova
Everything in Hookova that an assistant, a script or your own code can reach, on one page: three MCP servers, a command line that runs any of their tools from a shell, an install runbook written for agents, and the HTTP API underneath all of it. Each section says what the surface is for and links at the page that owns its setup.
Or say install www.hookova.com/install/mcp to an assistant with a terminal and let it do the setup.
What you can build on
Six surfaces, in the order most people meet them. The MCP server is the supported one; the command line is that server run differently; the API is what both stand on.
Your save library, inspiration boards and publishing as tools an assistant calls. Four modules: auth, library, projects, publish.
AuthYour account — browser sign-in through the connect tool, or a token
The same server, one tool per process, from any shell. No client, no registration, no restart.
AuthSame sign-in as the server — it reads the same saved token
About a thousand short free sound effects, searchable and downloadable into a project folder.
AuthNone — no account, no token
1,442 royalty-free Kevin MacLeod tracks, tagged by mood and use, with a recommender that reads a brief.
AuthNone to search and download; recommend_music uses your sign-in
The whole MCP install as plain text written for an agent with a shell, at one URL it can fetch and follow.
AuthPublic
What every client is built on: the iOS and macOS apps, the Chrome extension and the MCP server all speak to the same routes.
AuthBearer JWE from POST /api/auth/token, or the session cookie
The Hookova MCP server
A local server over stdio that turns your account into 17 tools: the save library, the inspiration boards and their hook guides, and publishing to your connected accounts. It runs from one TypeScript file under Bun and talks to the same routes the apps do. Setup, every tool with its arguments, other clients, environment variables and troubleshooting are all on the setup guide; this is the shape of it.
Sign in from inside a conversation, in the browser.
Save, search, read, edit, delete and export saves.
Find a board and export its hook guide.
Post a video or photos, now or at a time.
The install is three steps and lives in one place: the setup guide for a person, the runbook for an agent. The commands are the same on both, and they are not repeated here so they cannot drift.
It reads, it does not run the pipeline. The server cannot start an analysis or a transcription; those happen in the app. It reads what exists, saves links, exports a board and publishes finished media.
CLI guide
Use hookova from your terminal to sign in, browse saved references, export a project guide or publish finished media. hokovaworks too — both names run the same commands. No AI client is required.
Install once
Download and unpack the Hookova zip, then run these commands inside its folder. Existing users: unpack the latest zip over your installed folder first. The CLI shortcuts require v1.7.0 or later.
bun install
bun link
hookova --helpIf your terminal says command not found, add the directory printed by bun pm bin -gto your PATH. On macOS or Linux, run export PATH="$(bun pm bin -g):$PATH"and add that line to your shell profile for future terminals. On Windows, add that directory to your user Path and open a new terminal. Keep the unzipped folder: the commands link to it. Run hookova update whenever you want the latest release. Your next command uses the update; restart any running MCP client to load it.
Commands
hookova loginhookova statushookova projectshookova saveshookova accountshookova toolshookova <command> '<json>'hookova updatehookova --helpEvery example also works with hokova. For advanced use,hookova call <tool> '<json>' runs a tool by its MCP name. Existing MCP client configurations continue to work.
Some real calls, in the order a first session tends to make them:
# who am I, what plan, what's left today
hookova status
# the boards, then one board's hook guide written to a folder with its stills
hookova projects
hookova guide '{"projectId":"<id>","dir":"./hook"}'
# save a link, then search for it
hookova save '{"url":"https://www.youtube.com/shorts/…"}'
hookova saves '{"q":"sourdough","limit":5}'
# what a post can go to, then a draft
hookova accounts
hookova publish '{"files":["./final.mp4"],"caption":"…","draft":true}'Signing in from the shell
Run hookova login and approve the account in your browser. It waits up to five minutes and saves your sign-in for future commands and MCP clients.
hookova login
# Open this URL to approve (Chrome or Edge): https://www.hookova.com/connect/mcp?port=…&state=…
# …waits, up to five minutes, then prints {"connected":true, …account, "savedTo":…} and exits 0It opens the URL itself on macOS, Windows and Linux; the printed line is the fallback. Chrome or Edge, because Safari will not let an https page reach a loopback port. Approve in a browser already signed into Hookova — Google-linked accounts included — and the token lands in ~/.hookova/mcp.json at mode 0600, where the MCP server and every later shell call find it. The token is never printed. An assistant running this should give it a long timeout or run it in the background.
Exit codes and output
exit 0exit 1exit 2Tool calls print their answers as JSON, so | jqworks. Login also prints the approval URL; help and tools print text. The environment is the server’s: HOOKOVA_TOKEN wins over the saved sign-in,HOOKOVA_API points it at another origin, and HOOKOVA_TOKEN_FILE moves the saved token.
Let an agent install it
www.hookova.com/install/mcp is the entire install as text/plain, written for whatever is holding the shell rather than for a reader: the zip to fetch, where to put it, the registration line with the path already absolute, the JSON block for other clients, and the shell-mode commands to use until the client restarts. An assistant told “install www.hookova.com/install/mcp” fetches it and follows it, and hands browser sign-in to you at the end. It is deliberately outside /api/ so a fetcher that honours robots.txt may read it.
curl -s https://www.hookova.com/install/mcpThe board pages use the same route: AI prompton any inspiration project is a one-paste block that installs the server, signs in, exports that board’s hook guide and keeps going in the same session.
Sound effects and music
Two more servers, each its own zip, neither needing an account. They exist so the agent building a video can fetch its own audio: “find me a boom and put it in./sfx,” “calm piano under a minute in ./music.” Both answer with the absolute path of the MP3 they wrote, which is what ffmpeg or an editor wants next.
About a thousand short clips in sixteen groups, each tagged by a model that listened to it. Public routes /api/sfx and /api/sfx/[id] underneath.
Kevin MacLeod’s 1,442 tracks, tagged by mood, use and feel. Public routes /api/music and /api/music/[id]; recommend_music reads a brief and is the one tool that asks for your sign-in.
Each is one claude mcp add line with no token; the setup pages linked above carry the exact commands and the JSON block for other clients.
The HTTP API
One backend serves the web app, the iOS and macOS apps, the Chrome extension and the MCP server, and they all authenticate the same way: a NextAuth session cookie in the browser, or an Authorization: Bearer header carrying the JWE that POST /api/auth/token mints. A bearer says who, never what— there is no per-client scope. The MCP server is the supported client and the shape every route is designed around; these are the routes it wraps, for when you are writing your own.
# mint a bearer (30 days)
curl -s https://www.hookova.com/api/auth/token \
-H 'content-type: application/json' \
-d '{"email":"you@example.com","password":"…"}'
# → {"token":"…", …}
# use it
curl -s https://www.hookova.com/api/saves -H "authorization: Bearer $TOKEN"POST /api/auth/tokenGET /api/saves · POST /api/savesGET /api/jobs · POST /api/jobsGET /api/projects/[id]/guideGET /api/sfx · GET /api/sfx/[id]GET /api/music · GET /api/music/[id]Two routes take the session cookie only, never a bearer: POST /api/mcp/connect and POST /api/mac/connect, the ones that mint credentials. A route that minted a bearer for a bearer would be a refresh oracle, so they live behind a browser you are signed into. Credits follow the product rules everywhere: an analysis charges on success only, saves are free, and nothing in the MCP server or the hook guide spends one.
Versions and downloads
Each server is a zip of plain TypeScript with two dependencies fetched by bun install. The number on the zip is the number in its package.json, and a rebuilt zip is not shipped until the two agree.
hookova-mcp.zip · v1.7.0 · 40 KBhookova-sfx-mcp.zip · v1.1.0 · 6 KBhookova-music-mcp.zip · v1.1.0 · 8 KBThe apps — iOS, macOS and the Chrome extension — are on Downloads.
Frequently asked questions
Which should I start with — the MCP server, the CLI, or the API?
The MCP server, unless you know otherwise. It is the supported surface: every tool is schema-checked, the answers are shaped for an assistant to read, and sign-in happens in your browser. The CLI is the same server run one tool at a time, for a shell script or for the session that just installed it. The HTTP API is what both are built on; reach for it when you are writing your own client.
Do the CLI and the MCP client share a sign-in?
Yes. Both read the token the connect or sign_in tool saved to ~/.hookova/mcp.json (mode 0600), and both honour HOOKOVA_TOKEN in the environment first. Sign in once from either and the other is signed in.
Can any of this start an analysis, transcribe, or render a video?
The MCP server and CLI cannot start an analysis or transcribe — those run in the app, and the tools only read what already exists. The HTTP API can enqueue an analysis (POST /api/jobs), which spends a credit when it succeeds. Nothing here renders video; the hook guide is an export that hands your own tooling the brief and the stills.
Is there a token I can paste instead of browser sign-in?
Yes. Settings → MCP server (Connect to My AI) has Copy prompt, which mints a token and writes it into an install block, and a plain token generator for JSON configs. Pass it as HOOKOVA_TOKEN. Browser sign-in through connect is still the route that keeps the token out of the conversation.
Are the sound-effects and music servers really free, with no account?
Yes. Both search and download over public routes and carry no token. The one exception is recommend_music, which spends a model call to read your brief and so asks for your Hookova sign-in.
Where is the source?
Each server ships as a zip of plain TypeScript run directly by Bun — no build step, nothing compiled — so the source is what you install. Unzip it and read index.ts.
Install the server, sign in from the browser, and every tool on this page answers from a client or from a shell.