Squirrelly squirrel avatarSquirrellyAgent user guide
International iOS backend · App authorization

Let your agent
keep the books.

Connect your existing Squirrelly account to record income and expenses, find transactions, and view summaries in chat. Verify the account, client, and permissions in the native App and approve access. Your existing sole ledger is used automatically.

Requires a new native App version with Settings → Agent connections. If absent, upgrade or wait for that release; creating a Web account will not help.

01Get account number→02Add connection→03Approve in the App→04Start recording

Check the backend and App version first.

This flow targets the shared international iOS backend. app.squirrelly.ai remains the service domain and API; Web software and Web sign-in are not required. The same email can identify separate accounts on other backends.

Account versionCurrent status
International iOS shared backendConnection testing · updated App required
Required native App featureSettings → Agent connections. Requires a new native build; installed and App Store versions are not assumed to include it.
Separate international Android Play accountsNot yet connected
Separate China, HarmonyOS, and other accountsNot yet connected
Use your existing App account.

Only the shared international iOS backend is in scope. Independent Android Play, China, and HarmonyOS backends are not enabled. If Agent connections is absent, upgrade or wait for the compatible App release; do not create a replacement Web account.

Copy your account number in the App

  1. Open Settings → Agent connections in the native App.

    Use your existing signed-in account. App opening guidance ↗ only explains how to open the App; it does not provide Web sign-in or account management.

  2. Check that your App version supports this feature.

    This flow requires a new native App build with Agent connections. If the entry is missing, upgrade or wait for its release. Current installed or App Store builds are not assumed to support it.

  3. Copy the global account number from Agent connections.

    It begins with ZXM-. The same backend account keeps the same number. Enter it in the browser authorization request to identify the backend account.

Your account number identifies the right account; it is not a password. Access requires explicit approval in the native App signed in to the matching account.

View App opening guidance ↗

Add Squirrelly to ChatGPT

These steps connect a custom MCP server for testing. This is not a one-click installation from the plugin store. Availability depends on your ChatGPT account and workspace policies.

  1. Open the Plugins page in ChatGPT.

    Go to ChatGPT Plugins ↗, select the plus button, then choose Add custom MCP server. If this option is missing, see the FAQ below.

  2. Enter the connection details.

    Use “squirrellyai” as the name and choose a public HTTPS endpoint. Paste the full address, including the final /mcp.

ChatGPT configuration, including advanced OAuth settings

SettingCorrect value
Namesquirrellyai
Server URLhttps://mcp.squirrelly.ai/mcp
AuthenticationOAuth
Registration methodCustom OAuth client
OAuth client IDsquirrelly-chatgpt
Client secretLeave blank
Token endpoint authentication methodnone
Registration URLLeave blank
Enable OIDCUnchecked

Expand “Advanced OAuth settings” and fill in each field as shown above. The client ID must be squirrelly-chatgpt; do not substitute the plugin name or account number.

The DCR and CIMD unavailable notices mean the server does not offer those automatic registration methods. Select “Custom OAuth client” and use the table above; leave the registration URL blank and do not enable OIDC.

Keep the five default requested scopes: account:read, books:read, transactions:read, transactions:create, summaries:read. Leave the basic authorization scopes blank.

  1. Finish creating and install or enable the plugin, then connect your account.

    Create the personal plugin as ChatGPT instructs, then install or enable it and select “Connect account.” Creating the plugin does not grant account access; complete approval in the App. The service provides six tools for account details, ledgers, creating entries, transaction search, summaries, and write-operation status. Test calls after authorization.

  2. Start OAuth and authorize access as described below.

    When OAuth opens the Squirrelly request page, enter the account number copied from the App. Keep that browser open; you will approve access in the App.

  3. Start a new chat and enable the connection.

    Enable your Squirrelly plugin using ChatGPT’s current interface. Where supported, type @ to select it. Then run the read-only check below.

Personal plugin created — connect your account next

Seeing squirrellyai in your ChatGPT personal plugins means creation succeeded. Install or enable that plugin, connect your Squirrelly account, complete approval in the App, and then test tool calls. You do not need to create it again.

Advanced: Check OAuth endpoints and the redirect URI

This client currently has just one registered redirect URI, which must match exactly:

https://chatgpt.com/connector_platform_oauth_redirect

If the host shows another redirect URI, such as a connection-specific address, the service administrator must register that exact URI. Do not use wildcards or replace the domain. Other agents need separate client registrations and must not reuse this ChatGPT client. DCR and general CIMD registration are unavailable.

Check the automatically discovered OAuth endpoints

SettingCorrect value
Authorization URLhttps://mcp.squirrelly.ai/oauth/authorize
Token URLhttps://mcp.squirrelly.ai/oauth/token
Authorization server base URLhttps://mcp.squirrelly.ai
Resourcehttps://mcp.squirrelly.ai/mcp
Connection status

The live service has been verified with the official MCP SDK client, but final tool calls in a real ChatGPT account remain unverified. A created personal plugin does not mean account authorization or tool calls are complete, or imply a store listing or OpenAI approval.

References: OpenAI connection guide · OAuth authentication guide. Last checked: 2026-10-30.

Install the squirrelly bookkeeping skill with one command

Choose an installation command for your computer and client to download and install squirrelly automatically. Configure MCP and approve OAuth in the App separately; then use the skill shortcut to keep your books.

Download and install automatically

Copy the appropriate command into your computer’s terminal, or ask an agent with local command execution to run it. The command downloads, verifies, and installs the skill without manual extraction.

macOS

macOS: Run in Terminal using built-in system tools. No separate Python or Homebrew installation is required. Choose the command for your client.

Codex
/bin/bash -o pipefail -c 'curl -fsSL --proto =https --proto-redir =https https://mcp.squirrelly.ai/downloads/install-macos.sh | /bin/bash -s -- "$@"' -- --client codex
Claude Code
/bin/bash -o pipefail -c 'curl -fsSL --proto =https --proto-redir =https https://mcp.squirrelly.ai/downloads/install-macos.sh | /bin/bash -s -- "$@"' -- --client claude-code

View installation script · macOS ↗

Windows

Windows: Run in PowerShell. Windows PowerShell 5.1 and PowerShell 7 are supported. Choose the command for your client.

Codex
& ([scriptblock]::Create((Invoke-RestMethod -Uri 'https://mcp.squirrelly.ai/downloads/install-windows.ps1'))) -Client codex
Claude Code
& ([scriptblock]::Create((Invoke-RestMethod -Uri 'https://mcp.squirrelly.ai/downloads/install-windows.ps1'))) -Client claude-code

View installation script · Windows ↗

The installer verifies SHA-256 and installs only skill files. Existing different content is not overwritten by default. To update, append --update on macOS or -Update on Windows; the installer backs up the existing files first.

Reload your client or start a new session after installation. Use $squirrelly in Codex and /squirrelly in Claude Code. Installing the skill does not configure MCP or complete OAuth; connect the service and approve access in the App separately.

A web page cannot silently install local skills. ChatGPT on the web uses a plugin connection; these commands are for clients permitted to execute commands locally.

Download ZIP manually (fallback)

If your client cannot execute local commands, use the ZIP import option below where supported. Availability depends on the client.

  1. Download the skill ZIP manually as a fallback.

    Download the squirrelly skill ZIP, extract it manually, and read INSTALL.md. The package contains skill files, with no account passwords or tokens.

  2. Install it as your client requires.

    In Codex, put the squirrelly folder in your personal skills directory, then use $squirrelly in a new session. Clients that support the relevant skills directory can register /squirrelly following their own instructions. The client controls the command name; MCP does not add it automatically.

Connect MCP and complete OAuth authorization first. The skill guides the agent’s tool use; it does not grant account access. Without a connection, no entry is recorded. It will not write an entry if the date, currency, or ledger is unclear.

Skill invocation example

/squirrelly I bought an item of clothing today for 2000 Chinese yuan (CNY).

ChatGPT currently lets you select a plugin with @. Slash commands do not work in every client. Follow the package’s installation instructions for the correct way to invoke the skill.

Connect different agents to the same service

Choose the steps for your client

ClientSteps
ChatGPT on the webCreate or enable the plugin using the ChatGPT settings table above, then connect your account and approve access in the App. No local skill installation is required.
CodexInstall the skill using the macOS or Windows command below. Configure MCP separately and approve access in the App; reload the client and use $squirrelly.
Claude CodeInstall the skill using the macOS or Windows command below. Configure MCP separately and approve access in the App; reload the client and use /squirrelly.

The host must support remote MCP Streamable HTTP and OAuth authorization code / PKCE. Settings and support vary by product, so do not assume the ChatGPT interface steps apply elsewhere.

  1. Find the host’s remote MCP or tool server settings.

    Enter https://mcp.squirrelly.ai/mcp and choose OAuth authentication.

  2. Register a separate OAuth client for that agent.

    An administrator must register the application name, a separate client ID, and the exact redirect URI provided by the host. squirrelly-chatgpt is reserved for the registered ChatGPT redirect URI and cannot be reused by other products.

  3. Approve access in the native App.

    After client registration, use the same App approval flow below. Keep the originating browser open to finish OAuth. Hosts limited to local stdio, static API keys, or no OAuth cannot connect directly.

Developers can also connect their own agents using the HTTP API. Protocol support makes integration possible; it does not mean every product has been tested for compatibility.

Verify the account, client, and permissions

  1. Enter your account number in the browser request.

    Paste your ZXM account number to identify the backend. On a phone, use the browser’s “Open App” button. On a desktop, scan the displayed QR code with your phone to open the native App. Keep the original browser open.

  2. Check the account and client in the native App.

    The App must be signed in to the account shown in the request. If it differs, reject and reconnect with the correct App account. The account number alone grants no access; no Web password is required.

  3. Review permissions and explicitly approve or reject.

    The App automatically uses the current account’s existing sole ledger; no selection is needed. Each connection remains bound to one account and one ledger. Verify the account, client name, and requested permissions, then explicitly approve or reject in the App. Access is never approved automatically.

Read permissions

View the authorized account, its sole ledger, transactions, and income and expense summaries.

Create income and expenses

Allows ordinary income and expense entries. Editing, deleting, transfers, and loans are not included.

Phone approval only confirms the request in the App; it does not complete the agent’s OAuth connection. Keep the original browser open so it can continue and finish OAuth, then return to your agent. Rejection or expiry grants no access. Each client has separate authorization.

Check the connection before your first entry

We recommend checking in this order. Copy buttons only copy text; they do not submit requests or record entries.

Run a read-only check first

Use Squirrelly to show the currently authorized account and ledger. Do not create any entries yet.

Check that the returned account number and ledger match the current App account and its sole ledger. Once confirmed, submit an income or expense you actually want to record.

Explicitly request an entry

Record this with Squirrelly: I spent 35 Chinese yuan (CNY) on lunch today. Use the currently authorized ledger.

An entry is recorded only when the service explicitly confirms success. Then open the corresponding ledger in your original Squirrelly account and check the amount, date, and currency.

Handle everyday bookkeeping in chat

Income

Record this with Squirrelly: I received my salary of 8000 Chinese yuan (CNY) today.

Transactions

Use Squirrelly to find this week’s expense transactions. Show the latest 20 first.

Summaries

Use Squirrelly to summarize this month’s income, expenses, and net balance. Show each currency separately.

Specify the amount, currency, and date clearly and use the currently authorized ledger. This first release does not support agent-based editing or deletion of old entries, transfers, loans, or bulk imports.

A timeout confirms neither failure nor success.

If the agent reports an unknown result, ask it to check the original operation or retry with the original request ID. Do not repeatedly record the same entry with new IDs. The backend uses deduplication records to prevent network retries from creating duplicate entries.

Revoke access or switch accounts

  1. Open native App Settings → Agent connections.

    Find the authorized client and review its ledger and permissions in the App.

  2. Revoke that client’s access in the App.

    The app will lose access. Existing entries remain, and your original app sign-in and other authorizations stay valid. Signing out of the app does not revoke agent access.

  3. Reconnect and authorize to change accounts.

    Before reconnecting, sign in to the intended account in the native App and verify the request and permissions. The connection automatically uses that account’s sole ledger. Reauthorizing does not move entries or merge accounts across backends.

View App opening guidance ↗

FAQ and connection troubleshooting

Why can I not record transactions after installation?

A successful installation only puts the skill files in place. Check that this client has its own registered OAuth client and exact callback, is connected to MCP, and has your explicit approval after you verify the account, client, and permissions in the App. The sole account ledger is used automatically. After phone approval, keep the original browser open to finish OAuth. Reload the client and first query the authorized account and ledger. Record real income or expenses after verifying they match.

An error page appears after entering your account number?

Return to the existing squirrellyai plugin and start “Connect account” again. Enter your account number on the newly opened authorization page; do not just refresh the old error page. This web fix does not require reinstalling the phone App. If it still fails, keep the error code shown on the page.

No “Add custom MCP server” option in ChatGPT?

Availability depends on your ChatGPT account, organization, and workspace policies. Check the current official instructions first. In business or team workspaces, ask your administrator whether custom connections are allowed. A reachable service URL does not guarantee that the host offers this option.

Does a 401 response mean the service is broken?

Opening /mcp directly without authorization normally returns 401. This agent endpoint is not a sign-in page. Copy your account number in native App Settings → Agent connections, then start OAuth from your agent and approve in the App.

Seeing invalid_client or a redirect URI mismatch?

Check that you entered the client ID for the correct app and are using the exact registered redirect URI. The pre-registered ChatGPT ID is squirrelly-chatgpt. Other products need separate registrations. If the host’s connection-specific redirect URI differs, an administrator must update the configuration. Do not repeatedly switch accounts or disable authentication.

Missing Agent connections, wrong account, or browser still waiting?

Use a new App build with Settings → Agent connections; if absent, upgrade or wait. Check the original account and backend in the App. Keep the original browser open while your phone approves, then return there to complete OAuth. If rejected or expired, start a new request. Do not create a Web account or enter a Web password.

Connected, but unable to create entries?

Check that your granted permissions include creating income and expenses, that the ledger is still accessible, and that the request is ordinary income or expense with an amount, currency, and date. Reconnect to explicitly grant the required permissions if needed.

The agent reported success, but the entry is missing in the app?

Check the version, account, ledger, and date and currency filters. Ask the agent to look up the original operation. Success requires the service to return committed. If the result is unknown, do not create another entry with a new ID.

Does disconnecting delete entries? What are deduplication records?

Disconnecting only revokes app access; it does not delete entries. Deduplication records map a request to its recorded entry to prevent duplicates. Normal use, sign-out, and revocation do not clear them. Related operation records are removed with personal data only when the entire account is deleted.

What happens if I change phones or servers?

The same backend account keeps its number. Separate accounts on different backends have their own numbers and are not currently merged across versions. During a server migration, the platform must maintain account mappings; matching email addresses alone cannot link accounts automatically.

Request expired, access revoked, or service unavailable?

An expired or rejected request cannot grant access; start OAuth again and approve a new request in the App. If access is revoked, reconnect. Retry temporary service failures later. Keep the original browser open; never send passwords, codes, or tokens in chat, or disable HTTPS verification.

Add bookkeeping to your own agent

Register your own OAuth client and exact redirect URI. The browser identifies the backend with account_code; native App consent approves the request, and the original browser completes authorization code / PKCE S256. Then call MCP or HTTP API. Anonymous dynamic registration, shared account tokens, and access using only an account number are not supported.

MCP toolCapability
get_account / list_booksView the authorized account and ledger
create_transactionCreate one income or expense entry
list_transactionsList transactions with pagination
summarize_transactionsSummarize by currency
get_operationCheck a write operation’s result

Amounts use minor currency units. Create operations require a stable requestId (or Idempotency-Key over HTTP). Report success only for committed; for unknown, retain the original ID and check the result.

Squirrelly squirrel avatar

Start with your own account.

Get your number in the App, approve access there, and finish OAuth in the original browser.

View App opening guidance ↗