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.

AI
AI Agents
After connecting, read hypertab://guide for operating instructions and hypertab://tables to see your workspace state.
npx @hypertabai/mcp install
npx @hypertabai/mcp install --client claude-code --scope project --api-key ht_sk_YOUR_KEY

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

.mcp.json (Claude Code)
{
  "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.

WebSocket
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
{
  "success": true,
  "data": { ... },
  "meta": {
    "table": "leads",
    "operation": "query_rows",
    "rows_affected": 25,
    "duration_ms": 12
  },
  "hints": [
    "More rows available. Next: offset=25"
  ]
}
Error
{
  "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."
  }
}