Authentication
All API requests require an API key. Keys start with ht_sk_ and are passed as a Bearer token.
REST API
Include your API key in the Authorization header with every request. The base URL is https://api.hypertab.ai.
curl https://api.hypertab.ai/api/tables \
-H "Authorization: Bearer ht_sk_YOUR_KEY"MCP Connection
The MCP endpoint uses the same Bearer token. Agents connect via Streamable HTTP transport at /mcp. The recommended install path is the one-command installer, it writes the right config file for your agent and, for Claude Code, installs the Hypertab skill at ~/.claude/skills/hypertab/.
Raw JSON is still supported for hand editing, but npx @hypertabai/mcp install handles every client's config shape and skill location correctly. The skill file itself is available at hypertab.ai/skill.md.
hypertab://guide for operating instructions and hypertab://tables to see your workspace state.npx @hypertabai/mcp install --client claude-code --scope project --api-key ht_sk_YOUR_KEYRaw MCP config (reference)
If you prefer to hand-edit, this is what the installer writes. Drop it into .mcp.json in your project root for Claude Code, or into ~/.claude.json under themcpServers key for user-scope install. Cursor uses ~/.cursor/mcp.json, Windsurf uses ~/.codeium/windsurf/mcp_config.json with a serverUrl key instead of url.
{
"mcpServers": {
"hypertab": {
"type": "http",
"url": "https://api.hypertab.ai/mcp",
"headers": {
"Authorization": "Bearer ht_sk_YOUR_KEY"
}
}
}
}WebSocket
Real-time updates use WebSocket connections. Pass your API key as a query parameter.
const ws = new WebSocket(
'wss://api.hypertab.ai/ws/TABLE_ID?token=ht_sk_YOUR_KEY'
)
ws.onmessage = (event) => {
const data = JSON.parse(event.data)
console.log(data.type, data.payload)
}Response Format
Every API response follows the same envelope. Success responses include optionalmeta andhints fields.
{
"success": true,
"data": { ... },
"meta": {
"table": "leads",
"operation": "query_rows",
"rows_affected": 25,
"duration_ms": 12
},
"hints": [
"More rows available. Next: offset=25"
]
}{
"success": false,
"error": {
"code": "TABLE_NOT_FOUND",
"message": "Table 'laeds' not found. Did you mean 'leads'?",
"suggestion": "Call hypertab_list_tables to see available tables."
}
}