Skip to content
mcpai-agentshow-tocookbook

The MCP tool cookbook: 12 recipes for AI agents in Hypertab

Copy-paste patterns that turn natural-language requests into real Hypertab Tables, records, and pipelines. Every recipe is a single MCP tool call or a short chain.

Suleman Ahmed ·

TL;DR. Hypertab exposes 86 MCP tools. Most tasks only touch three or four of them. This cookbook is the short list: 12 recipes that cover what real users ask their agent to do, in the exact order the tools should be called. Each one is a pattern you can paste into a Claude Code, Cursor, or Windsurf prompt.

How the tools are organized

Every tool name starts with hypertab_. The generated inventory groups them by Project organization, Table and View operations, legacy row-named record operations, smart columns, Sources, webhooks, imports and exports, workspace reads, provider configuration, and agent work activity.

You do not need to memorize any of this. Your agent calls list_tools once and keeps the schemas in context. The recipes below show the high frequency chains, with the exact tool name for each step.

Setup: connect the MCP server

{
  "mcpServers": {
    "Hypertab": {
      "url": "https://api.hypertab.ai/mcp",
      "headers": { "Authorization": "Bearer ht_sk_YOUR_KEY" }
    }
  }
}

Paste that into your agent’s config, restart, and hypertab_* tools appear in the tool list. Every recipe below assumes the agent has this config loaded.

Recipe 1: create a table from a natural language spec

Prompt to agent. “Make a leads table with name, company, domain, email, status, and created_at.”

Tool chain.

  1. hypertab_list_projects to select the owning Project.
  2. hypertab_create_project only if no suitable Project exists.
  3. hypertab_create_table with that Project’s project_id, name, and columns.
{
  "tool": "hypertab_list_projects",
  "arguments": {}
}
{
  "tool": "hypertab_create_table",
  "arguments": {
    "project_id": "pg_project_123",
    "name": "leads",
    "description": "Inbound leads from website form",
    "columns": [
      { "name": "name", "type": "text" },
      { "name": "company", "type": "text" },
      { "name": "domain", "type": "url" },
      { "name": "email", "type": "email" },
      { "name": "status", "type": "select", "config": { "options": ["new", "qualified", "contacted", "won", "lost"] } }
    ],
    "idempotency_key": "create-leads-table-v1"
  }
}

_ht_id, _ht_created_at, _ht_updated_at, _ht_status, and _ht_error are added automatically. You never create system columns yourself.

Recipe 2: add an HTTP enrichment column

Prompt to agent. “For each lead call my saved company-data API and store the company summary.”

Tool chain.

  1. hypertab_save_api_account once for the external service credential.
  2. hypertab_add_smart_column with kind: "http" to fetch and extract the summary.
{
  "table": "leads",
	"name": "company_summary",
  "type": "text",
  "kind": "http",
  "config": {
    "method": "GET",
	"url": "https://api.example.com/companies?domain={{domain}}",
	"account_id": "acct_company_data",
	"extract": "data.summary"
  },
  "rate_limit": "conservative",
  "auto_run": true
}

When you insert records, company_summary runs automatically for rows with a domain. The saved API account supplies authentication without placing credentials in the column config.

Recipe 3: insert records and watch them process

Prompt to agent. “Insert these three leads and show me when they’re done.”

Tool chain.

  1. hypertab_insert_rows with the record data.
  2. hypertab_get_cell_states for each smart column to inspect cell progress.
{
  "table": "leads",
  "rows": [
    { "name": "Ada Lovelace", "company": "Analytical Engines", "domain": "analyticalengines.com", "email": "[email protected]", "status": "new" },
    { "name": "Grace Hopper", "company": "Compiler Co", "domain": "compilerco.com", "email": "[email protected]", "status": "new" },
    { "name": "Alan Turing", "company": "Cryptanalytics", "domain": "cryptanalytics.com", "email": "[email protected]", "status": "qualified" }
  ],
  "idempotency_key": "insert-demo-leads-v1"
}

The response includes rows_inserted and row_ids. Auto-run work is queued for columns configured with auto_run: true; inspect it with hypertab_get_cell_states({ table: "leads", column: "company_summary" }).

Recipe 4: pull structured fields out of an HTTP result for free

Prompt to agent. “Add a column that pulls the company name out of the Clearbit response without calling the API again.”

Tool chain.

  1. hypertab_add_extract_column against the existing HTTP column.
{
  "table": "leads",
  "name": "clearbit_name",
  "source_column": "clearbit_enrich",
  "field_path": "data.company.name"
}

Extract columns cost zero API calls. They read the stored JSON blob from the source column and pull one field. You can have twenty extracts on one HTTP column and still only pay for the one HTTP request per record.

Recipe 5: a waterfall that tries three HTTP sources in order

Prompt to agent. “Enrich each company. Try our three configured HTTP providers in order.”

Tool chain.

  1. hypertab_add_smart_column with kind: "waterfall".
{
  "table": "leads",
  "name": "company_data",
  "type": "json",
  "kind": "waterfall",
  "config": {
    "steps": [
      { "kind": "http", "config": { "url": "https://enrichment.example.com/primary?domain={{domain}}", "method": "GET" } },
      { "kind": "http", "config": { "url": "https://enrichment.example.com/secondary?domain={{domain}}", "method": "GET" } },
      { "kind": "http", "config": { "url": "https://enrichment.example.com/fallback?domain={{domain}}", "method": "GET" } }
    ]
  },
  "rate_limit": "moderate",
  "auto_run": true
}

The current waterfall processor supports HTTP steps. It tries them in order and stops on the first non-empty result.

Recipe 6: cursor paginate records without loading them all

Prompt to agent. “Page through the full leads table and count how many are from .edu domains.”

Tool chain.

  1. hypertab_query_rows with a cursor, in a loop.
{
  "table": "leads",
  "where": { "domain": { "ends_with": ".edu" } },
  "limit": 1000,
  "include_total": false
}

The response includes next_cursor. Pass it as after_id on the next call and loop until it is null. The maximum page size is 1,000. If you only need the count, call hypertab_count_rows with the same where filter.

Recipe 7: dedupe by email on every insert

Prompt to agent. “Make sure we never have two leads with the same email.”

Tool chain.

  1. hypertab_dedupe_column with auto_dedupe: true.
{
  "table": "leads",
  "column": "email",
  "auto_dedupe": true,
  "idempotency_key": "enable-lead-email-dedupe-v1"
}

This runs a one-time dedupe pass (keeping the oldest record per non-null email) and enables auto-dedupe. Future duplicate records are skipped on insert, and the insert response reports how many were skipped.

Recipe 8: cascade a retry on only the failed cells

Prompt to agent. “Retry the records where company_summary failed. Don’t rerun the rest.”

Tool chain.

  1. hypertab_get_cell_states with status: "error" to list failures.
  2. hypertab_retry_failed_cells to re enqueue.
{ "table": "leads", "column": "company_summary", "status": "error" }
{ "table": "leads", "column": "company_summary" }

The retry only touches error cells. Completed cells are left alone. The retry also logs a new run_id so you can compare before and after.

Recipe 9: push lead status changes to an HTTPS handler

Prompt to agent. “Send lead status changes to our public HTTPS handler so it can route qualified leads.”

Tool chain.

  1. hypertab_create_webhook as an outgoing webhook watching the status column.
{
  "table": "leads",
  "direction": "outgoing",
  "name": "lead_status_changes",
  "target_url": "https://automation.example.com/hypertab/lead-status",
  "trigger_on": "field_change",
  "trigger_column": "status"
}

Hypertab posts the record when status changes; the receiving handler decides whether the new value is qualified. Private, local, metadata, redirecting, and Hypertab-owned destinations are blocked. Inspect delivery history with hypertab_get_webhook_logs.

Recipe 10: import CSV data into an existing Table

Prompt to agent. “Import this CSV into the leads Table, then run the enrichment DAG.”

Tool chain.

  1. Read the CSV file and pass its raw text to hypertab_import_csv.
  2. Call hypertab_run_dag explicitly if the imported records should be processed immediately.
{
  "table": "leads",
  "data": "Company Name,Website,Email\nAcme,https://acme.example,[email protected]",
  "has_headers": true,
  "mapping": {
    "Company Name": "company",
    "Website": "domain",
    "Email": "email"
  }
}

The import response reports rows_imported, rows_skipped, detected columns, and the applied mapping. CSV import does not return a smart-column run ID; call hypertab_run_dag or hypertab_run_column when processing is required.

Recipe 11: run a single column across all records without touching others

Prompt to agent. “I updated the company-data endpoint. Rerun just company_data on everything.”

Tool chain.

  1. hypertab_update_column_config to change the HTTP URL.
  2. hypertab_run_column to fire it for all records.
{
  "table": "leads",
  "column": "company_data",
  "config": { "url": "https://api.example.com/companies/{{domain}}" }
}
{ "table": "leads", "column": "company_data" }

Omitting row_ids means all records. Only company_data is queued, so unrelated columns are not rerun. Successful selected smart-column cells consume operations according to the published pricing rules.

Recipe 12: connect a filtered subset to a data tab

Prompt to agent. “Create a data tab called ‘enterprise deals’ for leads from companies over 1,000 headcount.”

Tool chain.

  1. hypertab_create_tab with the parent table, a data-tab name, and a filter.
{
  "table": "leads",
  "name": "enterprise_deals",
  "filter": { "company_size": { "gt": 1000 } },
  "description": "Large-company pipeline stage",
  "idempotency_key": "create-enterprise-deals-tab-v1"
}

This creates a data tab: a separate tbl_... resource with its own records, columns, and plan record limit. It is not a View. Use hypertab_sync_tab to synchronize matching records. Use hypertab_create_view only when you want a Grid, Board, Calendar, Form, Gallery, or Timeline presentation over the same data-tab records.

How to prompt your agent

A few patterns that work well in our own testing.

  • Be specific about column names. “Add a column called company_summary that…” beats “add a summary column”. The agent will invent a name otherwise, and you may end up with summary, company, or desc depending on the phase of the moon.
  • Say “smart column” when you want a smart column. Otherwise the agent may add a static text column and then try to populate it manually.
  • Let the agent pick the rate limit preset. aggressive, moderate, conservative, gentle. The agent reads the API docs or guesses based on the domain. You can override with hypertab_update_column_config if you need to.

When things go wrong

Every Hypertab error is structured. The agent does not have to parse human text to recover. A typical error looks like

{
  "success": false,
  "error": {
    "code": "COLUMN_NOT_FOUND",
    "message": "Column 'emial' not found on table 'leads'. Did you mean 'email'? (distance 1)",
    "suggestion": "Call hypertab_get_table_schema to see all columns.",
    "details": { "available_columns": ["name", "company", "domain", "email", "status"] }
  }
}

The agent can use code, suggestion, and details to correct the request or ask for help without parsing an unstructured error string.

What to build next

These 12 recipes cover common Hypertab tasks. The longer tail includes formulas with complex expressions, lookup columns that join across Tables, integration columns, and webhook authentication. Full API reference is at hypertab.ai/docs.

If you have a recipe you wish existed, email it to [email protected] and we will add it. The active table is as useful as the patterns we share, and the agent ecosystem grows fastest when the recipes are public.

Ready to try it? Open app, paste the MCP config into Claude Code, and run Recipe 1. Thirty seconds to your first pipeline.