Kinrows
The app Everything inside Compare Blog Concierge
Join the waitlist

For developers

Bring your own agent

Kinrows Concierge already runs the app for you. With the Developer API, your agent can too — Claude, ChatGPT, Cursor, a cron'd script, anything that can call an HTTP tool. Same actions, same household-level privacy, your model.

Requires: an active Concierge subscription (Lite or Premium) Protocols: REST & MCP
The short version

How it works

  • Open the app → Settings → Account → Developer API → Create key. Copy it — it is shown once.
  • Send it as Authorization: Bearer kr_live_… to the /v1 endpoints below, or point any MCP-capable agent at /v1/mcp.
  • Your agent gets focused MCP tools covering 160+ Concierge actions — tasks, lists, calendar, budget, pantry, polls, trips, messages, baby sleep, and more.
  • A key only ever acts on your household. Choose read-only if you just want your agent to see, not touch.
  • Revoke a key any time; lapsed subscriptions switch keys off instantly.

On this page

  1. Getting a key
  2. Endpoints
  3. The tool catalog
  4. Connect via MCP
  5. Connect via REST
  6. Limits & errors
  7. Security & privacy

1Getting a key

API keys are created in the iPhone app under Settings → Account → Developer API. You can hold up to ten active keys, each with a name and a scope:

  • Read & write (default) — everything the Concierge can do.
  • Read-only — listing and lookups only. Any call that would change data is refused with 403.

The full key is displayed exactly once. We store only a hash, so if you lose it, revoke it and create another.

2Endpoints

Base URL: https://kinrows.com. Every request needs Authorization: Bearer <your key>.

MethodPathWhat it does
GET/v1/meWho the key belongs to: user, household, scope, tier, today's date.
GET/v1/snapshotA digest of the household right now (today's tasks and appointments, open polls, expiring pantry items, budget, live trips, kids' chores still open today…). Ideal context to hand your model before it acts.
GET/v1/toolsThe tool catalog as JSON-schema definitions. Anthropic shape by default; add ?format=openai for OpenAI function-calling shape.
POST/v1/tools/{name}Call one tool. The body is the tool's input, e.g. {"action":"add","title":"Book dentist"}.
POST/v1/mcpFull Model Context Protocol server: tools, resources, prompts, structured results, and modern OAuth connection.

3The tool catalog

Tools are grouped by area of the app, and each takes an action:

ToolActions
historysearch · dated records, receipt items, archived routines and other retained history
homeget · set ordered personal Home cards and iPhone widget priorities
calendarlookup_place · list · add · update · delete (including recurrence)
taskslist · add · complete · update · delete
listslist_all · get · add · check_off · create · rename · delete · update_item · delete_item · move_item
budgetget · list_expenses · log_expense · delete_expense · add/update/delete_category
pantrylist · add · update · delete
decisionslist · create · vote · comment · delete
trips / itinerarieslive ETA trips; multi-day itineraries with stays and expenses
routinesarchive · restore · list · get · log_sleep · start_sleep · end_sleep · set_start · stats · analyze · log_entry · chores · setup_chores · update_chores · log_chore · chore_bonus · chore_payout
people, gifts, special_events, coverage, notes, contacts, rivalries, projects, recurring_payments, feedthe rest of the app
send_message, remember, get_addresses, update_my_namestandalone tools

Don't memorise this — fetch /v1/tools and hand the result to your model as its tools. Every parameter and its description is in the schema, and the catalog is generated from the same source our own Concierge runs on, so it never drifts.

4Connect via MCP

If your agent host supports MCP OAuth, give it just the URL. Kinrows will open a secure browser consent screen:

{
  "mcpServers": {
    "kinrows": { "url": "https://kinrows.com/v1/mcp" }
  }
}

For hosts that need a manual bearer header, create a key in Settings and use:

{
  "mcpServers": {
    "kinrows": {
      "url": "https://kinrows.com/v1/mcp",
      "headers": { "Authorization": "Bearer kr_live_…" }
    }
  }
}

OAuth clients can request kinrows:read or kinrows:read kinrows:write. Kinrows uses authorization code flow with S256 PKCE, short-lived access tokens, rotating refresh tokens, and standard protected-resource discovery. Manual keys use the read-only or read/write scope selected when the key is created.

What the MCP server exposes

CapabilityAvailable through Kinrows MCP
Toolsdomain tools covering 160+ internal Concierge actions. Related operations are grouped behind a required action field.
Resourceskinrows://account/me, kinrows://household/snapshot, kinrows://developer/audit, and kinrows://household/snapshot/{section}.
Promptsmorning-brief, plan-week, household-check-in, trip-readiness, and chores-review.
ResultsEvery tool returns human-readable content plus structured JSON in structuredContent.result.
SafetyRead-only credentials cannot write. Delete and cancel actions require confirm: true before the underlying action runs.

The server supports the current MCP protocol and older stateless clients. Household resources are private and should not be cached across users. Every call rechecks the credential, household boundary, scope, and active Concierge entitlement; the private activity audit stores operation metadata and outcomes, never household inputs or results.

5Connect via REST

Any language, any model. Sanity-check the key:

curl https://kinrows.com/v1/me \
  -H "Authorization: Bearer $KINROWS_KEY"

Add a task and log an expense:

curl https://kinrows.com/v1/tools/tasks \
  -H "Authorization: Bearer $KINROWS_KEY" -H "Content-Type: application/json" \
  -d '{"action":"add","title":"Book dentist","due_date":"2026-09-02"}'

curl https://kinrows.com/v1/tools/budget \
  -H "Authorization: Bearer $KINROWS_KEY" -H "Content-Type: application/json" \
  -d '{"action":"log_expense","amount":42.10,"merchant":"Costco","category":"Groceries"}'

# Kids' chores: set up, tick, read the week, pay
curl https://kinrows.com/v1/tools/routines \
  -H "Authorization: Bearer $KINROWS_KEY" -H "Content-Type: application/json" \
  -d '{"action":"setup_chores","child":"Jude","chores":[{"title":"Feed the dog","slots":["morning","evening"]}],"weekly_allowance":2,"bonuses":[{"title":"Good bedtime","amount":1}]}'

curl https://kinrows.com/v1/tools/routines \
  -H "Authorization: Bearer $KINROWS_KEY" -H "Content-Type: application/json" \
  -d '{"action":"log_chore","child":"Jude","chore_id":"feed the dog","slot":"evening"}'

curl https://kinrows.com/v1/tools/routines \
  -H "Authorization: Bearer $KINROWS_KEY" -H "Content-Type: application/json" \
  -d '{"action":"chores","child":"Jude"}'   # week grid, streak, earnings, owed, age guidance

A minimal agent loop with the Anthropic SDK — fetch the catalog, let the model pick tools, execute them against /v1/tools, repeat:

const BASE = 'https://kinrows.com';
const H = { Authorization: `Bearer ${process.env.KINROWS_KEY}`, 'Content-Type': 'application/json' };
const { tools } = await (await fetch(`${BASE}/v1/tools`, { headers: H })).json();

let messages = [{ role: 'user', content: 'Move the dentist task to Friday and add milk to Groceries.' }];
for (;;) {
  const r = await anthropic.messages.create({ model: 'claude-sonnet-5', max_tokens: 1024, tools, messages });
  messages.push({ role: 'assistant', content: r.content });
  if (r.stop_reason !== 'tool_use') break;
  const results = [];
  for (const b of r.content.filter(c => c.type === 'tool_use')) {
    const out = await (await fetch(`${BASE}/v1/tools/${b.name}`, { method: 'POST', headers: H, body: JSON.stringify(b.input) })).json();
    results.push({ type: 'tool_result', tool_use_id: b.id, content: JSON.stringify(out) });
  }
  messages.push({ role: 'user', content: results });
}

6Limits & errors

  • 120 requests per minute per key. Over that you get 429.
  • 10 active keys per user.
  • 401 — missing, malformed, or revoked key. 402 — the household's Concierge subscription is not active. 403 — a read-only key tried to write. 400 — bad action or missing fields (the message tells you which).
  • Tool-level problems ("no list named Costco") come back as 400 {"error": "…"} so your model can recover and try again.

7Security & privacy

  • A key is bound to one person and one household. It cannot see or touch any other household — the same database-level isolation that protects every Kinrows family applies to every API call.
  • Keys are 256-bit random values, stored only as a hash. Revoke from the app at any time; it takes effect immediately.
  • OAuth clients use authorization code + S256 PKCE. Access and rotating refresh tokens are opaque, hashed at rest, and revocable.
  • The agent audit records which tool/action ran and its outcome, never a copy of the household input or result.
  • A key can never log in, change your password or email, or delete your account. Those stay behind sign-in and two-factor in the app.
  • Whatever your agent does with your data happens on your model and your provider under your terms. Kinrows still never sells data or uses it to train AI.
  • Treat the key like a password. Anyone holding it can act as you inside your household.

Questions or ideas for the API? kinrows@atlasatlantic.co.

Privacy Policy Terms of Use
Kinrows — kin that rows together

One calm place for the whole household.

App

The appEverything insideConcierge

Explore

CompareBlogDevelopersHow-to guidesAlternativesComparisonsWho it's forQuestions

Company

Join the waitlistContact

Legal

Privacy PolicyTerms of Use
© 2026 Atlas Atlantic. Made for families. iPhone · iOS 18+ · September 2026