Connect Six Thirty

ChatGPT or Claude is the conversation. Six Thirty is the household record: allergies, pantry, week, and hard rules. Copy your Six Thirty link from Account, paste it, and sign in. A key under Advanced is only for setups that cannot sign in. Help covers sign-in codes, disconnecting, and deleting a household.

Tools

ToolWhat it does
get_householdMembers, food rules, stores, budget, and recipe sources.
get_pantryWhat is in the kitchen: name, brand, quantity, and location.
list_week_planThis week's meals: day, slot, title, link, ingredients, and a vegetarian swap when there is one.
get_shopping_gapsMissing ingredients grouped by aisle. preferred_stores is the family's preferred stores, which a host may use to choose a store when sending the list to a delivery service.
mark_shopping_boughtCheck off what was bought and add those foods to the pantry.
apply_receiptReceipt line items become pantry rows. A line that cannot be read, or that breaks a household rule, comes back in rejected.
apply_pantry_photoShelf, fridge, or pantry items and quantities already read. The same line cleaning applies.
import_recipe_from_scanA cookbook or recipe card saved as a title and ingredients. A method is never stored. The scanned recipe's photo is saved for this household.
add_pantry_item update_pantry_item remove_pantry_itemChange one pantry item. Add and update reject foods that break an allergy, celiac, or school nut-free rule.
keep_recipe dismiss_recipe plan_mealSave a recipe card, hide it, or put it on a day. Keep and plan reject foods that break those rules.
discover_recipesFind recipes on the household's sites first, then the open web. Returns title, source, link, and ingredients. Stays inside the daily cap.
generate_week_planStart a new week. Meals that fail an allergy, celiac, or school nut-free rule are dropped. Six Thirty does not run its own cron.

Ordinary chat stays in Claude or ChatGPT. Six Thirty answers when one of these tools is used. A registered-dietitian console is not in this release. An RD-scoped key is rejected on purpose until that scope is wired.

Receipts, shelves, and recipe cards

Server-side reading of a card stays off unless ALLOW_SERVER_VISION=1. More on saving a recipe card is on Help.

Week and the list

generate_week_plan is how a chat starts the week. Six Thirty does not run a cron that plans on its own.

get_shopping_gaps lists what is still missing, grouped by aisle in by_aisle. preferred_stores is the family's preferred stores, which a host may use to choose a store when sending the list to a delivery service. An item's store stays empty unless that item was given a store. After the shop, mark_shopping_bought checks those lines off and puts them in the pantry.

Connect ChatGPT

Six Thirty is coming to the ChatGPT app directory soon. Use Claude today.

Have ChatGPT Business or Enterprise? Connect on chatgpt.com on a computer

ChatGPT only lets Business and Enterprise plans add a connector like this; that's OpenAI's rule, not ours.

Connect ChatGPT gives you a Copy link button for your Six Thirty link.

  1. On chatgpt.com on a computer, open Settings, then Plugins (or Apps).
  2. Click the plus, add a custom connector, name it Six Thirty, paste your Six Thirty link, choose OAuth sign-in, tick “I understand and want to continue”, then Create as a plugin.
  3. Sign in to Six Thirty (if asked, enter the code we email you), then click Allow.

Sign-in is the normal path. A key under Advanced on Account is only for setups that cannot sign in. ChatGPT callbacks under https://chatgpt.com/aip/, https://chat.openai.com/aip/, https://chatgpt.com/connector/oauth/, and https://chat.openai.com/connector/oauth/ are already allowed. If you are already signed in, login returns you to Allow.

Connect Claude

Connect Claude uses the same Six Thirty link.

  1. In Claude, open Customize, then Connectors.
  2. Choose Add, then Custom, then Web.
  3. Name it Six Thirty and paste your Six Thirty link.
  4. Sign in with the code we email you, then choose Allow.

Add to Claude appears on Account only when CLAUDE_CONNECT_URL is set. A local install that cannot sign in still uses a key from Advanced.

Claude Desktop or Cursor (stdio)

{
  "mcpServers": {
    "six-thirty": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-stdio.js"],
      "env": {
        "SIXTHIRTY_BASE_URL": "https://your-host",
        "SIXTHIRTY_API_KEY": "st_live_..."
      }
    }
  }
}

Omit SIXTHIRTY_BASE_URL only when this machine has the SQLite file in DATA_DIR. The usual install talks to the hosted POST /mcp endpoint.

Cursor remote MCP

{
  "mcpServers": {
    "six-thirty": {
      "url": "https://your-host/mcp",
      "headers": { "Authorization": "Bearer st_live_..." }
    }
  }
}

The header above is the API key path. A client that finishes OAuth puts the st_oat_ access token in that same header.

Membership

When a membership is needed, some tools return subscription_required and the text “Planning more weeks needs a Six Thirty membership. Details: sixthirty.app/membership.” get_household still works. discovery_daily_cap means the daily discovery limit was hit. It resets the next UTC day.

Environment

VariableRole
ANTHROPIC_API_KEYLive recipe search and week plans. Empty means practice data.
RECIPE_SEARCHanthropic (default), brave, tavily, or parallel.
BRAVE_SEARCH_API_KEY / TAVILY_API_KEY / PARALLEL_API_KEYOnly if that search provider is selected. Parallel falls back to Anthropic web search when the key is missing or the call fails.
PARALLEL_SEARCH_USD_PER_1KOptional. Parallel Search price per 1,000 requests. Default 5, matching basic mode. Counted in the metered cost and inside the daily discovery cap.
BASE_URLPublic HTTPS origin. Used for Checkout return URLs, sign-in links, and the OpenAPI server. No trailing slash.
RESEND_API_KEYResend API key. Production emails the sign-in link and does not put it in the response. If this or EMAIL_FROM is missing in production, no link is shown and no email goes out.
EMAIL_FROMFrom address, for example Six Thirty <[email protected]>. Verify the domain in Resend first. sixthirty.app DNS is on Cloudflare: add the records Resend shows, and leave the proxy off (grey cloud, DNS only).
GOOGLE_CLIENT_IDOptional. Off for the beta: leave this unset. With the secret also set, login and setup show Continue with Google. Only a verified Google email is accepted. If either value is missing, there is no Google button and /auth/google returns 404.
GOOGLE_CLIENT_SECRETOptional. Off for the beta: leave this unset. Secret for that web client. Authorized redirect URI is exactly BASE_URL/auth/google/callback. Production: https://sixthirty.app/auth/google/callback.
STRIPE_SECRET_KEYSecret key. If missing, billing is skipped for local dev.
STRIPE_WEBHOOK_SECRETSigns POST /api/stripe/webhook.
STRIPE_PRICE_IDRecurring price used by Checkout.
PUBLIC_PRICE_LABELSales-page text. Match it to the Stripe Price.
DISCOVERY_DAILY_CAPSoft cap on discover_recipes per household per UTC day. Default 12.
FOUNDER_EMAILSComma-separated emails that skip Checkout and stay active. Match is trimmed and case-insensitive. Example: [email protected],[email protected].
ALLOW_SERVER_VISIONOptional. Set to 1 to allow this server to read pantry or cookbook photos. Off by default. The happy path is structured JSON from the host.
MONTHLY_BUDGET_USDMetered model spend ceiling. Default 4. Mock mode does not block on it.
OAUTH_CLIENT_IDOptional. ChatGPT client id. Default sixthirty-chatgpt.
OAUTH_CLIENT_SECRETSecret for the confidential ChatGPT client. Claude sign-in does not use it.
OAUTH_REDIRECT_URISOptional extra allowlist. ChatGPT /aip/ and /connector/oauth/ callbacks, https://claude.ai/api/mcp/auth_callback, and loopback /callback are already allowed. A trailing / matches every redirect under that prefix.
CHATGPT_GPT_URLOptional. Not used by the Account connect steps. When it is a published https://chatgpt.com/g/g-… link, /api/connect still reports it.
CLAUDE_CONNECT_URLOptional https link. When set, Account shows Add to Claude. Leave unset until that link is checked on desktop, iOS, and Android.

Webhook events: checkout.session.completed, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted. Point Stripe at BASE_URL/api/stripe/webhook.

Sign-in for the beta is a one-time email link (15 minutes). Google is optional and stays off until both Google variables are set. The login response includes that link only when SHOW_DEV_LINKS=1. Unset NODE_ENV does not turn it on, and a failed or unconfigured send does not either. The message is the same whether or not that email already has a household. An existing household email signs in. A new Google email goes to setup and does not create a household until that form is finished.

Not medical advice. No recipe method is stored or returned. Recalls are never called clear.