Hookova
Open Hookova
Developer documentation

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.

3
MCP servers: library, sound effects, music
30
tools across them, every one runnable from a shell
1
token shape: the same bearer for the apps, the extension and MCP
0
build steps — each server is TypeScript run directly by Bun

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.

Hookova MCP server →17 tools · v1.7.0

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

CLI guide →hookova login · status · projects

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

Sound effects MCP server →6 tools · v1.1.0

About a thousand short free sound effects, searchable and downloadable into a project folder.

AuthNone — no account, no token

Music MCP server →7 tools · v1.1.0

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

Agent install runbook →text/plain

The whole MCP install as plain text written for an agent with a shell, at one URL it can fetch and follow.

AuthPublic

HTTP API →JSON over HTTPS

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.

Auth

Sign in from inside a conversation, in the browser.

auth_statussign_inconnectsign_out
Library

Save, search, read, edit, delete and export saves.

save_linklist_savesget_saveupdate_savedelete_saveexport_saves
Projects

Find a board and export its hook guide.

list_projectsget_hook_guide
Publish

Post a video or photos, now or at a time.

list_publish_accountspublish_postlist_postsschedule_draftcancel_post

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 --help

If 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 login
Sign in. Opens the approval page in your browser and waits for you to approve.
hookova status
See your account, plan and remaining allowance.
hookova projects
List your inspiration projects.
hookova saves
Browse your saved references.
hookova accounts
List your connected publishing accounts.
hookova tools
List every available tool and its description.
hookova <command> '<json>'
Add options as one JSON object in single quotes. For example: hookova saves '{"limit":5}'.
hookova update
Download and install the latest CLI in place. Your saved sign-in is preserved.
hookova --help
See all shortcuts and examples. hookova --version prints the installed version.

Every 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 0

It 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 0
The tool answered. Its result is on stdout, usually as JSON.
exit 1
The tool refused or failed — not signed in, a project that isn't yours, an upstream error. Its message is on stderr.
exit 2
Bad usage — an unknown command, a missing tool name, arguments that aren't one JSON object. The usage line is on stderr.

Tool 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/mcp

The 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.

Sound effects · v1.1.0

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.

search_soundslist_soundslist_groupsget_sounddownload_sounddownload_sounds
Music · v1.1.0

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.

search_musiclist_musiclist_tagsrecommend_musicget_trackdownload_trackdownload_tracks

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/token
credentialsMints a 30-day bearer from email and password, a Google id_token or an Apple identity token. The door for every client.
GET /api/saves · POST /api/saves
bearerList the library, or enqueue a save. Saves are free and daily-capped; the queue does the fetching.
GET /api/jobs · POST /api/jobs
bearerList analyses, or enqueue one. A run charges a credit on success only — never on a download or model failure.
GET /api/projects/[id]/guide
bearerA board written out as a hook guide: markdown, references, patterns. An export of analyses already paid for; no model call.
GET /api/sfx · GET /api/sfx/[id]
publicRanked search over the sound-effects catalog, and the MP3.
GET /api/music · GET /api/music/[id]
publicRanked search over the music library, and the MP3. POST /api/music/recommend takes a brief and needs a bearer.

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 KB
Download · the library, projects and publish server, with the command line
hookova-sfx-mcp.zip · v1.1.0 · 6 KB
Download · the sound-effects server
hookova-music-mcp.zip · v1.1.0 · 8 KB
Download · the music server

The 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.

Four commands, and your library is something you can say.

Install the server, sign in from the browser, and every tool on this page answers from a client or from a shell.