Connect an agent (MCP)
Two ways to give an assistant your Marina account. Sign in to the hosted server, or run one on your own machine.
An assistant that speaks MCP can run Marina directly, rather than shelling out to the CLI and reading its output. There are two ways to connect one.
Sign in to the hosted server
https://mcp.marinahost.app/mcp Nothing to install. Your client opens a browser, you sign in and approve what the assistant may do, and its tools appear. Use this in any client that connects to a server over the network, including one running in a browser rather than on your machine.
In Claude Code:
claude mcp add --transport http marina https://mcp.marinahost.app/mcp Then run /mcp and sign in. No token is minted, pasted into a file, or left on disk: you approve the access on Marina’s own screen, and you can withdraw it there.
What the screen asks for
The set an assistant needs to build: read and create apps, sites and databases, set config vars, manage domains and email, read your wallet and spend it.
Four things are never on it, because each is a secret rather than a larger version of the same permission: reading config vars back, database passwords, mailbox passwords, and running a command inside your app. A tool that needs one is refused and asks for it on its own, naming what it wants, so you approve it knowing why.
Or run one yourself
marina mcp This speaks over stdio, so your client starts it as a subprocess. Use it when you want the assistant confined to your own machine, or holding a credential you minted rather than access you granted in a browser.
Here the tool list is filtered by the credential. An assistant holding a readonly token is not offered create_app at all, rather than being offered it and refused on use.
That cuts both ways, and two are worth knowing before you pick a preset. Reading the wallet balance needs wallet:read, which agent does not carry, so an assistant on that preset cannot look up the balance; it still learns the shortfall from the refusal when a purchase fails. Running a one-off command needs vessel:exec, which no preset carries at all. Add either deliberately:
marina tokens create assistant --preset agent --scope wallet:read delete_resource is offered to anything holding vessel:write, which includes deploy. It takes the data with it, so the tool requires an explicit confirm flag, but the credential is what actually bounds it.
Claude is the browser, desktop and phone app, and needs no install at all. Claude Code, Cursor and Codex cover both ways.
Give it its own credential
This is for the server you run yourself. Do not hand an assistant the token your terminal uses; mint one scoped to the job:
marina tokens create assistant --preset agent agent can build, deploy, manage config vars and databases, and spend your wallet, which is what makes it useful. If you want a tighter bound than your balance, add a lifetime cap:
marina tokens create assistant --preset agent --spend 200 Two hundred cedis across that credential’s entire life, then it stops. Worth setting for anything running unattended: a loop that keeps calling create is the one failure a balance alone does not stop, if you keep the balance topped up.
For an assistant that should only ship code to what already exists, --preset deploy cannot create anything and so cannot grow your bill at all.
Buying a domain asks first
Every other tool acts. buy_domain confirms, because it is the one purchase that cannot be undone: a registration is a year of a name, and no refund brings it back. Resizing an app or creating a database is spending too, but both are reversible in a way a registration is not.
The confirmation goes through your assistant, so what you see depends on which one you use.
Not every MCP client can relay a question. On one that cannot, the purchase goes ahead without asking, bounded by your balance and by any spend cap, and the tool says plainly that a registration is annual and cannot be refunded. If you are pointing an assistant you do not control at a funded wallet, cap it.
marina tokens create assistant --preset agent --spend 200 Fund the wallet first
Marina is prepaid, and an assistant working at two in the morning has nobody to ask for a card. Put the money in before you start:
marina wallet topup If it does run out mid-task, the refusal carries the shortfall, your payment code, and the number to send Mobile Money to, so the assistant can tell you exactly what it needs instead of only that it failed. Nothing is queued: top up, and it runs the same tool again.
