Before you begin
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 version | Current status |
|---|---|
| International iOS shared backend | Connection testing · updated App required |
| Required native App feature | Settings → Agent connections. Requires a new native build; installed and App Store versions are not assumed to include it. |
| Separate international Android Play accounts | Not yet connected |
| Separate China, HarmonyOS, and other accounts | Not yet connected |
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.
Step 01
Copy your account number in the App
- 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.
- 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.
- 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 ↗Step 02 · ChatGPT
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.
- 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.
- 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
| Setting | Correct value |
|---|---|
| Name | squirrellyai |
| Server URL | https://mcp.squirrelly.ai/mcp |
| Authentication | OAuth |
| Registration method | Custom OAuth client |
| OAuth client ID | squirrelly-chatgpt |
| Client secret | Leave blank |
| Token endpoint authentication method | none |
| Registration URL | Leave blank |
| Enable OIDC | Unchecked |
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.
- 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.
- 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.
- 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.
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_redirectIf 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
| Setting | Correct value |
|---|---|
| Authorization URL | https://mcp.squirrelly.ai/oauth/authorize |
| Token URL | https://mcp.squirrelly.ai/oauth/token |
| Authorization server base URL | https://mcp.squirrelly.ai |
| Resource | https://mcp.squirrelly.ai/mcp |
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.
Bookkeeping shortcut skill
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.
/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/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-codeView installation script · macOS ↗
Windows
Windows: Run in PowerShell. Windows PowerShell 5.1 and PowerShell 7 are supported. Choose the command for your client.
& ([scriptblock]::Create((Invoke-RestMethod -Uri 'https://mcp.squirrelly.ai/downloads/install-windows.ps1'))) -Client codex& ([scriptblock]::Create((Invoke-RestMethod -Uri 'https://mcp.squirrelly.ai/downloads/install-windows.ps1'))) -Client claude-codeView 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.
- 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.
- Install it as your client requires.
In Codex, put the squirrelly folder in your personal skills directory, then use
$squirrellyin a new session. Clients that support the relevant skills directory can register/squirrellyfollowing 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.
/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.
Step 02 · Other agents
Connect different agents to the same service
Choose the steps for your client
| Client | Steps |
|---|---|
| ChatGPT on the web | Create 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. |
| Codex | Install 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 Code | Install 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.
- Find the host’s remote MCP or tool server settings.
Enter
https://mcp.squirrelly.ai/mcpand choose OAuth authentication. - 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-chatgptis reserved for the registered ChatGPT redirect URI and cannot be reused by other products. - 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.
Step 04
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.
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.
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.
Once connected
Handle everyday bookkeeping in chat
Record this with Squirrelly: I received my salary of 8000 Chinese yuan (CNY) today.
Use Squirrelly to find this week’s expense transactions. Show the latest 20 first.
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.
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.
You stay in control
Revoke access or switch accounts
- Open native App Settings → Agent connections.
Find the authorized client and review its ledger and permissions in the App.
- 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.
- 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.
When you need help
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.
For developers
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 tool | Capability |
|---|---|
get_account / list_books | View the authorized account and ledger |
create_transaction | Create one income or expense entry |
list_transactions | List transactions with pagination |
summarize_transactions | Summarize by currency |
get_operation | Check 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.
Start with your own account.
Get your number in the App, approve access there, and finish OAuth in the original browser.