Ask Claude, ChatGPT or Gemini about your own spending

Create a read-only token in Pocket Clear and paste one prompt into your assistant. It reads your synced data to answer questions, build dashboards and make the custom views you've always wanted.

Read-only. Opt-in. Revocable any time. Pro with Cloud Sync.

What the assistant can and can't see

👁️

Read-only

Every endpoint is a GET. An assistant can never add, edit or delete anything in Pocket Clear.

✋

Opt-in

Nothing is shared until you create a token. No token, no access — that is the default for every account.

⛔

Revocable, with last used

Each token shows when it was last used and from which country. Revoke it and it stops working immediately.

⏳

Expires on its own

Pick 30, 90 or 365 days when you create it. Up to five active tokens, one per assistant if you like.

📝

Notes off by default

Your free-text notes stay out of every response unless you turn on Include notes for that token.

👤

Your data only

In Partner Mode the token reads your own transactions, including ones your partner logged for you. Your partner's own transactions are never shared.

What is shared

Amounts, dates, categories and subcategories, payees, payment types, tags, budgets, savings goals and account balances — the data you have synced with Cloud Sync, and nothing else. No email address, no name, no device details. Notes only if you include them.

Once your assistant has fetched an answer, what it does with that data is governed by that assistant provider's own terms and settings. Pocket Clear gives it read access through your token and nothing more.

Why it needs Pro and Cloud Sync

The assistant reads the copy of your data that Cloud Sync keeps on our server. On the free plan your data never leaves your phone, so there is nothing for an assistant to read. Anything you back up is encrypted with AES-256.

Four steps, about a minute

Open Settings → Connect an AI assistant

In the Pocket Clear app on iPhone or Android (Pro), or under Connect an AI assistant on web.pocketclear.app.

Choose an expiry and whether to include notes, then tap Create

90 days is the default; notes are off unless you switch them on. The token is shown once.

Tap Copy prompt

The prompt holds your token and a link to this API's reference, so the assistant knows how to read it.

Paste it into Claude, ChatGPT, Gemini or any assistant that can fetch URLs

Then ask your question. If your assistant can't browse, open the link in the prompt yourself and paste the JSON it returns into the chat.

Claude Code, Cursor and other MCP clients

Pocket Clear also runs a read-only remote MCP server with the same data as tools. For Claude Code:

claude mcp add --transport http pocket-clear https://api.pocketclear.app/api/ai/mcp --header "Authorization: Bearer <TOKEN>"

Tools: get_profile, get_summary, list_transactions, list_categories, get_budgets, list_goals, list_accounts. Clients that can't set a header can use https://api.pocketclear.app/api/ai/mcp/t/<TOKEN>.

Example prompts

"Build a dashboard of my spending by category this year"

The assistant pulls a year summary and charts spending by category and by month.

"Which subscriptions went up?"

It compares what each subscription actually charged, month by month.

"Am I on track with my budgets this month?"

Limit, spent and remaining for every budget, with the ones you're over called out.

"Where did my money go last month?"

Top categories first, then the transactions behind the biggest one.

"Make a table of every restaurant I went to in October"

Payee, date and amount for each visit, sorted however you like.

"How much do I have across my accounts?"

Balances for every payment type, using the same maths as the app.

Read-only API, v1

Machine-readable reference for assistants: pocketclear.app/developers/api.md · OpenAPI 3.1: openapi.json

Base URL and authentication

Base URL: https://api.pocketclear.app/api/ai/v1. Tokens start with pcai_. Two equivalent ways to send one:

  1. Token in the path — works with any tool that can fetch a URL:
    GET https://api.pocketclear.app/api/ai/v1/t/<TOKEN>/summary?month=2026-10
  2. Authorization header:
    GET https://api.pocketclear.app/api/ai/v1/summary?month=2026-10 with Authorization: Bearer <TOKEN>

All responses are JSON with Cache-Control: no-store. Start with /me, then /summary for the current month, then answer the question. Assistants should never show the token back to the user or put it in links.

Conventions

  • Amounts are plain positive numbers in the user's home currency (currency in /me, ISO 4217). type / kind gives the direction.
  • Dates: from and to are inclusive local dates YYYY-MM-DD in the user's time zone. month=YYYY-MM is a shortcut for a whole month. No dates means the current calendar month; only from runs to today. tz=<IANA zone> overrides the time zone.
  • Totals follow the app: moneyOut = expenses, moneyIn = income + refunds, net = in − out. Transfers between the user's own accounts, lend/borrow rows and savings-goal set-asides are never income or spending; each transaction carries kind and countsInTotals. Spending by category nets refunds against the category they refund.
  • Partner Mode: only the token owner's own data, including entries a partner logged on their behalf.
  • Notes appear only when the user turned on Include notes (notesIncluded in /me).
  • truncated: true means the account is very large and figures cover the most recently edited 50,000 transactions — partial numbers.

GET /me

Profile and token facts. No email or name. periodSettings are the app's view period and budget start day at the moment the token was created.

{
  "app": "Pocket Clear",
  "apiVersion": "v1",
  "currency": "EUR",
  "secondaryCurrency": null,
  "timeZone": "Europe/Berlin",
  "periodSettings": { "viewPeriod": "monthly", "periodStartDay": 1, "note": "..." },
  "hasPartner": false,
  "dataScope": "own",
  "notesIncluded": false,
  "readOnly": true,
  "tokenExpiresAt": "2027-01-24T10:00:00.000Z",
  "docs": "https://pocketclear.app/developers/api.md"
}

GET /summary?from&to (or ?month)

Totals for a range. share is the percentage of total spending. For a year view, pass from=2026-01-01&to=2026-12-31 and use byMonth.

{
  "currency": "EUR",
  "range": { "from": "2026-10-01", "to": "2026-10-31", "timeZone": "Europe/Berlin" },
  "totals": {
    "moneyIn": 3210.5, "moneyOut": 1874.2, "net": 1336.3,
    "refundsIncludedInMoneyIn": 10.5,
    "savingsSetAside": 200, "savingsWithdrawn": 0,
    "transactionCount": 64
  },
  "spendingByCategory": [ { "categoryId": "…", "category": "Groceries", "amount": 412.3, "share": 22 } ],
  "incomeByCategory":   [ { "categoryId": "…", "category": "Salary", "amount": 3200 } ],
  "byMonth": [ { "month": "2026-10", "moneyIn": 3210.5, "moneyOut": 1874.2, "net": 1336.3 } ],
  "excludedFromTotals": { "transfers": 3, "loanRows": 1 },
  "rules": "…",
  "truncated": false
}

GET /transactions

Individual entries, newest first, in keyset pages.

ParamMeaning
from, to, month, tzRange, as above.
categoryA category name (case-insensitive, e.g. Groceries) or id. A name that matches nothing returns an empty page with a notice.
typeincome, expense or transfer.
qText search over payee, category, subcategory, payment type, tags, loan person (and notes, only when notes are included).
limitPage size, 1–500, default 100.
cursornextCursor from the previous page; keep going until it is null.
{
  "currency": "EUR",
  "range": { "from": "2026-10-01", "to": "2026-10-31", "timeZone": "Europe/Berlin" },
  "count": 2,
  "transactions": [
    {
      "id": "…", "date": "2026-10-24", "dateTime": "2026-10-24T18:12:00.000Z",
      "amount": 42.9, "type": "expense", "kind": "expense", "countsInTotals": true,
      "category": "Eating out", "categoryId": "…", "subcategory": "Restaurants",
      "paymentType": "Visa", "payee": "Pizza Place", "tags": ["friends"]
    },
    {
      "id": "…", "date": "2026-10-20", "dateTime": "…",
      "amount": 300, "type": "expense", "kind": "transfer", "countsInTotals": false,
      "category": null, "categoryId": null, "subcategory": null,
      "paymentType": "Checking", "payee": null, "transferTo": "Savings account"
    }
  ],
  "nextCursor": "eyJzIjoi…",
  "truncated": false
}

kind is one of expense, income, refund, transfer, loan, loan_repayment, savings_set_aside, savings_withdrawal; only expense, income and refund count toward totals. Loan rows carry loan: { "kind": "loan" | "repayment", "person": "Sam", "dueDate"? }. note appears only when notes are included.

GET /categories

{ "categories": [
  { "id": "…", "name": "Groceries", "type": "expense", "icon": "🛒", "sharedByPartner": false,
    "subcategories": [ { "id": "…", "name": "Supermarket" } ] }
] }

GET /budgets?from&to (or ?month)

kind is overall, category or subcategory. spentInRange is spending over exactly the range you pass — a month for a monthly budget, a week for a weekly one. Monthly budgets with per-month amounts use the amount for the month of from. Rollover is not included.

{
  "currency": "EUR",
  "range": { "from": "2026-10-01", "to": "2026-10-31", "timeZone": "Europe/Berlin" },
  "budgets": [
    { "id": "…", "kind": "category", "category": "Groceries", "subcategory": null,
      "period": "monthly", "limit": 400, "spentInRange": 412.3, "remaining": -12.3, "percentUsed": 103.08 }
  ],
  "note": "…",
  "truncated": false
}

GET /goals

{ "currency": "EUR", "goals": [
  { "id": "…", "name": "Japan trip", "targetAmount": 3000, "currentAmount": 1250,
    "remaining": 1750, "percentComplete": 41.67, "deadline": "2027-04-01" }
] }

GET /accounts

Payment types with all-time balances: opening balance + money in − money out. Transfers count on both accounts; savings set-asides are not counted (the app's default). A row named "No payment method" collects entries without one.

{ "currency": "EUR", "accounts": [
  { "id": "…", "name": "Checking", "sharedByPartner": false, "openingBalance": 1000,
    "moneyInAllTime": 15400, "moneyOutAllTime": 13120.5, "balance": 3279.5 }
], "note": "…", "truncated": false }

Errors

Errors use HTTP status codes and a JSON body { "error": "<code>", "message": "…", "docs": "…" }.

StatuserrorMeaning
400bad_requestA parameter is wrong; the message says which.
401invalid_tokenThe token is wrong or incomplete. Copy the prompt again.
401token_expiredCreate a new token in Settings → Connect an AI assistant.
401token_revokedThe owner revoked this token.
403pro_requiredPro has lapsed; the token works again once Pro is renewed.
404not_foundUnknown endpoint; the message lists the available ones.
405method_not_allowedOnly GET is supported.
409cloud_sync_offCloud Sync is off, so there is no data on the server.
429rate_limitedWait Retry-After seconds.
500server_errorRetry once, then tell the user.

Rate limits

60 requests a minute and 2,000 a day per token. Answers past the limit are 429 with a Retry-After header.

Open the machine-readable reference (api.md)

Frequently Asked Questions

Can an AI assistant change or delete my transactions?

No. The API is read-only: every endpoint is a GET, and there is no way to add, edit or delete anything through it.

Which assistants work?

Any assistant that can fetch a web page: Claude, ChatGPT and Gemini with web access, and most agents. Claude Code, Cursor and other MCP clients can also add Pocket Clear as a remote MCP server. If your assistant cannot browse, open the API link yourself and paste the JSON into the chat.

Does my partner's data get shared?

No. The token reads only your own transactions, including entries your partner logged on your behalf. Your partner's own transactions are never shared through it.

Are my notes shared?

Not unless you turn on Include notes when you create the token. With it off, notes are left out of every response and search never matches note text.

How do I stop an assistant reading my data?

Revoke the token in Pocket Clear → Settings → Connect an AI assistant, in the app or on web.pocketclear.app. It stops working immediately. Every token also expires on its own after 30, 90 or 365 days.

Why does it need Pro and Cloud Sync?

The assistant reads the copy of your data that Cloud Sync keeps on the server. On the free plan your data never leaves your phone, so there is nothing for an assistant to read.

Your data, your questions, your assistant

Pocket Clear is free forever. Connecting an AI assistant is part of Pro.