AI agent hosting, built for agents from day one.
MCP · REST v1 · API keys
Register, create a key, then test access. No deposit is required.
Create your API key before paying.
Register, create a key, then test access. No deposit is required.
cURL
Use the access token from signup or login to create a scoped API key. The key is returned once in plaintext.
# bash + curl + jq
# Set NB_EMAIL and NB_PASSWORD in your environment.
set -eu
: "${NB_EMAIL:?Set NB_EMAIL}" "${NB_PASSWORD:?Set NB_PASSWORD}"
API=https://nordbastion.com/v1
TOKEN=$(jq -n '{email:env.NB_EMAIL,password:env.NB_PASSWORD}' |
curl --fail-with-body -sS "$API/auth/register" \
-H 'Content-Type: application/json' --data-binary @- |
jq -er '.tokens.access_token')
KEY=$(curl --fail-with-body -sS "$API/auth/api-keys" \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"name":"agent-read","scope":"read"}' |
jq -er '.plaintext')
curl --fail-with-body -sS "$API/account/balance" \
-H "Authorization: Bearer $KEY"
# Store KEY in your secret store. Do not print it.
unset TOKEN KEY
Python
Create your API key before paying.
import os
import requests
api = "https://nordbastion.com/v1"
with requests.Session() as client:
signup = client.post(api + "/auth/register", json={
"email": os.environ["NB_EMAIL"],
"password": os.environ["NB_PASSWORD"],
}, timeout=30)
signup.raise_for_status()
token = signup.json()["tokens"]["access_token"]
created = client.post(api + "/auth/api-keys",
headers={"Authorization": f"Bearer {token}"},
json={"name": "agent-read", "scope": "read"},
timeout=30)
created.raise_for_status()
key = created.json()["plaintext"]
# Store key in your secret store; never log it.
balance = client.get(api + "/account/balance",
headers={"Authorization": f"Bearer {key}"},
timeout=30)
balance.raise_for_status()
print(balance.json())
API key access is independent of payments. Maximum 10 active keys per account; revoke unused keys.
Compatibility and releases
The hosted MCP endpoint is updated here. Versioned stdio downloads include source code and SHA-256 checksums.
Hosted MCP
https://nordbastion.com/mcp
- Version
- 1.1.0
- Protocol versions
- 2026-07-28 · 2025-11-25 · 2025-06-18 · 2025-03-26
- Last verified
- 2026-09-15
Send credentials in the Authorization header, or in the access_token argument when your MCP host cannot set headers.
Browser OAuth authorization is not available. Use a Bearer token or the explicit access_token argument.
MCP · register_account → create_api_key
{"name":"register_account","arguments":{
"email":"agent@example.com",
"password":"YOUR_STRONG_PASSWORD"
}}
{"name":"create_api_key","arguments":{
"name":"agent-read",
"scope":"read",
"access_token":"ACCESS_TOKEN_FROM_SIGNUP"
}}
{"name":"get_balance","arguments":{
"access_token":"PLAINTEXT_FROM_CREATE_API_KEY"
}}
Generate SSH keys locally. Upload only the public key; keep the private key on your device.
ssh-keygen -t ed25519 -f ~/.ssh/nordbastion_agent
# add_ssh_key: public_key = contents of the .pub file
Download MCP 0.2.0
Python ≥ 3.10 · MCP SDK 2.2.0 · MIT
Wheel · Source code · SHA-256 · Changelog
pip install https://nordbastion.com/downloads/nordbastion_mcp-0.2.0-py3-none-any.whl
nordbastion-mcp
Payment
Browse and test before funding. Crypto top-ups are only needed for paid services.
POST /v1/billing/topups · {"amount_usd":50,"crypto":"XMR"} · USD 30–10,000
x402 is available for signed USDC payments on Base through the top-up endpoint. Wait for confirmed balance before ordering.
x402: POST /v1/billing/topups · X-Payment-Mode: x402 · {"amount_usd":50}
Rate limits
API key: 120 / min · 3,000 / hour · public: 30 / min · HTTP 429 + Retry-After
Account activity is recorded in the API audit log. Credentials and request bodies are not included.
Get API key