Good fit for freelancers and tradespeople who already bill in the Pocket Invoice app and would rather type a sentence into Codex or Claude than fill in a form. It replaces the form, not your accounting software or card processor. Emailing stays off until you allow it, and PDF links expire after one hour.
What changed
Pocket Invoice MCP is a vendor-run Model Context Protocol (MCP) server with 87 documented tools that lets an AI assistant create, edit, export and email invoices, estimates and purchase orders in a Pocket Invoice account. It differs from self-hosted invoicing connectors by running on the vendor's backend, with OAuth sign-in and permissions granted per company.
Maker: Pocket Invoice · Protocol: MCP · Auth: oauth
Compatible agents: OpenAI Codex (tested by the vendor), Claude (custom connector), ChatGPT (developer mode), Cursor, Windsurf (Cascade), Other MCP clients with Streamable HTTP and OAuth
Required runtime: Nothing local: the server is hosted by the vendor, An MCP client with Streamable HTTP and OAuth support, Node.js only if you install the optional Codex workflow skill
About Pocket Invoice MCP
Pocket Invoice MCP is the server through which AI assistants reach Pocket Invoice, an invoicing app for freelancers, contractors and small businesses on the Web, iOS and Android. The app itself has no AI model of its own. The Model Context Protocol (MCP) connection is the AI part: it lets an assistant you already use work on the same invoices, customers and stock as the apps. The iOS app is sold on the App Store by Northline Technology Co., Ltd., its version history runs back to 2021, and a rebrand with a new design shipped in May 2026.
How it works: you add the server URL to your assistant as a Streamable HTTP connector, sign in to Pocket Invoice, pick one company and approve permissions. There is no npm package or local server to install; the tools run on the vendor's own backend. When HokAI queried the endpoint in October 2026, it answered with a standard OAuth challenge and published metadata advertising authorization-code sign-in with PKCE, dynamic client registration and token revocation, plus 8 permission scopes (read, documents, sending, customers, items, payment records, expenses, settings). A connection is tied to one company, so a second business means a second authorization.
Who can use it: the vendor lists OpenAI Codex, from OpenAI, as the client it has tested, and gives setup steps for Anthropic's Claude, ChatGPT developer mode, Cursor and Windsurf. Coding agents such as Claude Code can register any remote server that speaks Streamable HTTP with OAuth. An optional Codex workflow skill explains the invoice, PDF and sending steps but is not needed for the connection.
Where it fits: it is a paperwork connector, not a payments rail or a bookkeeping system; accounts-payable automation for finance teams is a separate category, covered by tools such as Vic.ai. Teams that run sales in a CRM may want Pipedrive MCP Server next to it, and anyone wiring many business apps into one agent can weigh it against Composio. More connectors of this kind sit in the productivity skills directory, part of the wider skills directory.
Key Features
- 87 documented tools: The vendor's tool reference lists every tool with its permission scope and required inputs, covering documents, customers, items, payments, expenses, reports, CSV import and export, and company settings.
- Read-only reporting: 46 tools need only the read scope, including sales by customer, item and date, customer aging, tax totals, profit and loss, and the sales journal, all computed by the same service as the app.
- Preview, confirm, then send: Emailing a document is two calls: preview_send_document shows recipients and attachment, and send_document runs only with a token from that confirmed preview, after which get_send_status reports provider delivery events.
- PDFs with your saved branding: get_document_pdf renders an invoice, estimate or purchase order with the company logo and template and returns a download link that expires after one hour, plus a View invoice link into the Web app.
- Catalog matching by partial name: When creating a document, one matching customer or item is reused, several matches are offered as a choice, and no match creates a new catalog record without overwriting existing details.
- Staged CSV imports: Customer and item imports go through prepare, preview and commit steps, and committing the same batch twice does not import its rows again.
- Payment records, not payments: record_payment, record_deposit_payment and pay_invoices_in_full update balances and payment history; the tool descriptions state they do not charge a card or transfer money.
Use Cases
- Bill a job from a chat window: A plumber finishing a call-out asks Codex to invoice the customer for parts and labour; the server finds the saved customer, numbers the invoice and returns a PDF link.
- Weekly receivables check: A freelancer asks which clients are more than 30 days overdue and gets the aging report, then has the assistant prepare invoice emails that are sent only after a yes.
- Estimate to invoice after approval: A contractor marks an estimate approved and converts it, so the invoice keeps a link back to the quote the client signed off.
- Move a client list in from a spreadsheet: A new user pastes a customer CSV, checks the column mapping preview, then commits the batch without risk of double-importing if the request is repeated.
Install
codex mcp add pocket-invoice --url https://api.freedominvoice.com/mcp
Requirements
- A Pocket Invoice account (sign up on the Web app at app.freedominvoice.com)
- An MCP client that supports remote Streamable HTTP servers with OAuth (Codex is the vendor-tested client)
- Authorize one company and choose its permissions during sign-in
- Tick the Send documents permission explicitly if the assistant should email documents; it is off by default
Actions
Add document attachment
Attach an uploaded image or file to a document.
# add_document_attachment (documents:write)
"Attach the site photo I just uploaded to invoice 1042."document_id— required: Add document attachment: saved document ID.url— required: Add document attachment: address of the uploaded file to attach.title— required: Add document attachment: title shown for the attachment.request_id— required: Add document attachment: retry key.
Adjust inventory
Add or subtract stock and record the reason. Use a positive quantity to add stock and a negative quantity to remove it.
# adjust_inventory (items:write)
"Remove 4 office chairs from stock: damaged in delivery."item_id— required: Adjust inventory: catalog item ID.quantity— required: Adjust inventory: stock change: positive adds stock, negative removes it.note— required: Adjust inventory: reason recorded with the stock movement.request_id— required: Adjust inventory: retry key.
Cancel customer reminder
Cancel a pending customer reminder.
# cancel_customer_reminder (customers:write)
"Cancel the follow-up reminder for Acme."reminder_id— required: Cancel customer reminder: pending reminder ID.request_id— required: Cancel customer reminder: retry key.
Commit customers import
Create saved customers from a prepared CSV import. Reusing the same batch does not import its rows again.
# commit_customers_import (customers:write)
"The preview looks right, import those customers."batch_id— required: Commit customers import: import batch ID.columns— required: Commit customers import: column mapping.request_id— required: Commit customers import: retry key.
Commit items import
Create saved items from a prepared CSV import.
# commit_items_import (items:write)
"Go ahead and import the items from that CSV."batch_id— required: Commit items import: import batch ID.columns— required: Commit items import: column mapping.request_id— required: Commit items import: retry key.
Convert to invoice
Create an invoice from an estimate or purchase order, preserving the source and linking the conversion.
# convert_to_invoice (documents:write)
"Turn the Acme estimate into an invoice."document_id— required: Convert to invoice: saved document ID.request_id— required: Convert to invoice: retry key.
Copy document
Copy an existing document into a new unsent document with a new number. Payment records are not copied.
# copy_document (documents:write)
"Copy invoice 1042 as a new invoice."document_id— required: Copy document: saved document ID.request_id— required: Copy document: retry key.
Create customer
Add a customer to the saved customer catalog.
# create_customer (customers:write)
"Add Jane Doe to my customers: jane@example.com."name— required: Create customer: customer name to save.request_id— required: Create customer: retry key.
Create customer reminder
Schedule a customer follow-up reminder for the account owner.
# create_customer_reminder (customers:write)
"Remind me to call Acme about the deposit next Monday at 9am."customer_id— required: Create customer reminder: saved customer ID.message— required: Create customer reminder: text of the reminder.remind_at— required: Create customer reminder: when the reminder should fire.request_id— required: Create customer reminder: retry key.
Create customer tag
Create a tag for organizing saved customers.
# create_customer_tag (customers:write)
"Create a green customer tag called Retainer."name— required: Create customer tag: tag name.color— required: Create customer tag: tag colour.request_id— required: Create customer tag: retry key.
Create estimate
Create an estimate or quote in the connected company's currency, using the saved template.
# create_estimate (documents:write)
"Create an estimate for Acme: 10 hours at 80."items— required: Create estimate: line items.request_id— required: Create estimate: retry key.
Create expense
Record a business expense; total is calculated from amount, tax and tip.
# create_expense (expenses:write)
"Record a 40 transport expense today."merchant— required: Create expense: who the expense was paid to.amount— required: Create expense: amount.date— required: Create expense: date.request_id— required: Create expense: retry key.
Create expense category
Add an account-wide expense category. Only the company owner can change shared categories.
# create_expense_category (expenses:write)
"Add an expense category called Fuel."name— required: Create expense category: category name.request_id— required: Create expense category: retry key.
Create invoice
Create an unsent invoice in the connected account using its company currency and PDF template. Calculates amounts and numbering on the server. Reuses a single partial-name customer or item match; asks the user to choose when there are multiple matches. Saves missing ones to the catalogs with their write permissions. Does not send email or overwrite existing catalog details.
# create_invoice (documents:write)
"Use Pocket Invoice to create an invoice for Joe: 3 tables at 10 each and 5 chairs at 20 each. Generate the PDF."items— required: Create invoice: line items.request_id— required: Create invoice: retry key.
Create item
Create an item in the saved catalog, optionally with opening stock.
# create_item (items:write)
"Add an item called Site visit at 120."name— required: Create item: item name as it appears on documents.unit_price— required: Create item: price per unit for the item.request_id— required: Create item: retry key.
Create purchase order
Create a purchase order for the connected company. Reuses saved customers and items by partial name when there is one match; asks the user to choose between multiple matches. Saves missing ones with their write permissions.
# create_purchase_order (documents:write)
"Create a purchase order to Timber Co for 20 pine boards at 12."items— required: Create purchase order: line items.request_id— required: Create purchase order: retry key.
Create tax
Create a saved company tax with named rates.
# create_tax (settings:write)
"Create a 9% GST tax, exclusive of prices."label— required: Create tax: name of the tax as it appears on documents.inclusive— required: Create tax: whether prices already include this tax.rates— required: Create tax: the named rates that make up this tax.request_id— required: Create tax: retry key.
Export customers csv
Export a page of saved customers as a downloadable CSV file.
# export_customers_csv (business:read)
"Give me a CSV of all my customers."offset— required: Export customers csv: page start.limit— required: Export customers csv: page size.
Export documents csv
Export a page of invoices, estimates or purchase orders as a downloadable CSV file.
# export_documents_csv (business:read)
"Export my invoices as CSV."document_type— required: Export documents csv: invoices, estimates or purchase orders.offset— required: Export documents csv: page start.limit— required: Export documents csv: page size.
Export expenses csv
Export a page of company expenses as a downloadable CSV file.
# export_expenses_csv (business:read)
"Download this company's expenses as a spreadsheet file."offset— required: Export expenses csv: page start.limit— required: Export expenses csv: page size.
Export items csv
Export a page of saved items and stock quantities as a CSV file.
# export_items_csv (business:read)
"I need my items and stock levels in CSV."offset— required: Export items csv: page start.limit— required: Export items csv: page size.
Get account membership
Read the signed-in user's account email and subscription information. This does not change a subscription or initiate payment.
# get_account_membership (business:read)
"Show my membership information."Get account settings link
Open account settings to change sign-in details or confirm account deletion in the browser. Account deletion cannot be executed in chat.
# get_account_settings_link (business:read)
"Where do I change my sign-in email?"Get business summary
Read sales, received payments and unpaid balances. Uses the same calculation service as the app, within the connected company and team access.
# get_business_summary (business:read)
"How much have I invoiced and collected, and what is still unpaid?"Get company settings
Read the connected company's business details, currency, numbering, payment instructions and PDF template settings.
# get_company_settings (business:read)
"Show my invoice numbering and PDF settings."Get customer
Read a saved customer's details and tags.
# get_customer (business:read)
"Show Acme's saved details."customer_id— required: Get customer: saved customer ID.
Get customer aging report
Read outstanding customer balances by overdue age.
# get_customer_aging_report (business:read)
"Which customers have balances more than 30 days overdue?"Get customer statement
Read an invoice statement for a saved customer, with an optional downloadable CSV. Requires document read access as well as customer read access.
# get_customer_statement (business:read)
"Prepare a statement for Acme."customer_id— required: Get customer statement: saved customer ID.
Get detailed customer sales report
Read detailed customer sales.
# get_detailed_customer_sales_report (business:read)
"Give me a detailed sales report for Acme."Get document
Read a saved invoice, estimate or purchase order, including its line items, customer snapshot and attachments. Payment records are included only with business:read permission.
# get_document (business:read)
"Open invoice 1042 and list its line items."document_id— required: Get document: saved document ID.
Get document email history
Read email status history for a saved document.
# get_document_email_history (business:read)
"Was invoice 1042 emailed, and when?"document_id— required: Get document email history: saved document ID.
Get document pdf
Generate a PDF of an existing document with the company's saved logo and template. Returns a download link valid for one hour. Retry this tool with the existing document ID if PDF generation failed after creation.
# get_document_pdf (business:read)
"Generate the PDF for invoice 1042."document_id— required: Get document pdf: saved document ID.
Get expense
Read an expense and its linked projects.
# get_expense (business:read)
"Show the details of yesterday's fuel expense."expense_id— required: Get expense: saved expense ID.
Get expense pdf
Generate a PDF for a saved expense.
# get_expense_pdf (business:read)
"Make a PDF of the transport expense."expense_id— required: Get expense pdf: saved expense ID.
Get expense report
Read expenses as a journal or grouped by category.
# get_expense_report (business:read)
"Show my expenses grouped by category this quarter."Get file upload url
Get a temporary upload URL for a logo, attachment or receipt. Upload the file bytes with HTTP PUT, then use file_url in the relevant business tool.
# get_file_upload_url (settings:write)
"I want to upload my new logo."filename— required: Get file upload url: name of the file you are about to upload.content_type— required: Get file upload url: content type of the file being uploaded.request_id— required: Get file upload url: retry key.
Get help
Explain how to use Pocket Invoice, list enabled tools for this connection's granted scopes, and provide the setup and user manual links. Use when asked for help, supported features or example invoice requests. Company team permissions still apply to each business action.
# get_help (business:read)
"Pocket Invoice help: what features can I use with this connection?"Get inventory history
Read stock movements for a saved item.
# get_inventory_history (business:read)
"Show the stock history for office chairs."item_id— required: Get inventory history: catalog item ID.
Get invoice overview
Read the invoice overview and balances.
# get_invoice_overview (business:read)
"Give me an overview of my invoices and balances."Get invoice reminder settings
Read the company owner's account-wide invoice reminder settings. Owner only; these settings apply across their companies.
# get_invoice_reminder_settings (business:read)
"What are my automatic invoice reminder settings?"Get invoices by month report
Read invoice totals by month.
# get_invoices_by_month_report (business:read)
"Show invoice totals by month this year."Get item
Read a saved item and its stock settings.
# get_item (business:read)
"How is stock tracked on the desk lamp item?"item_id— required: Get item: catalog item ID.
Get payment report
Read the payment journal or grouped payment breakdown.
# get_payment_report (business:read)
"Show the payment journal for September."Get payments by customer report
Read payments grouped by customer.
# get_payments_by_customer_report (business:read)
"Show payments grouped by customer."Get payments by date report
Read payments grouped by payment date.
# get_payments_by_date_report (business:read)
"Show payments received by date this month."Get profit and loss report
Read income, expenses and profit.
# get_profit_and_loss_report (business:read)
"Show my profit and loss for last quarter."Get sales by customer report
Read sales and balances grouped by customer.
# get_sales_by_customer_report (business:read)
"Which customers did I sell the most to this year?"Get sales by date report
Read sales grouped by date.
# get_sales_by_date_report (business:read)
"Show my sales by date for October."Get sales by item report
Read invoice sales grouped by item.
# get_sales_by_item_report (business:read)
"Which items sold the most this month?"Get sales journal
Read the sales journal and tax calculations.
# get_sales_journal (business:read)
"Show the sales journal with tax for September."Get send status
Read the status of a queued document email and its provider delivery events. A delivery_unknown result requires checking the provider before deciding whether to send again.
# get_send_status (business:read)
"Did the invoice email to Acme go through?"send_id— required: Get send status: queued email ID.
Get subscription link
Open official pricing and access information. Subscription purchases, when available, require browser confirmation.
# get_subscription_link (business:read)
"Where can I see Pocket Invoice pricing?"Get tax report
Read invoice tax totals and taxable sales.
# get_tax_report (business:read)
"Show my tax totals and taxable sales for Q3."List customer reminders
Read reminders for a saved customer.
# list_customer_reminders (business:read)
"What reminders do I have for Acme?"customer_id— required: List customer reminders: saved customer ID.
List customer tags
List the company's saved customer tags.
# list_customer_tags (business:read)
"List my customer tags."List expense categories
Read the account owner's expense categories, which are shared across their companies.
# list_expense_categories (business:read)
"List my expense categories."List expenses
Read expenses in the connected company.
# list_expenses (business:read)
"List this company's expenses."List notifications
Read notifications addressed to the signed-in user for the connected company.
# list_notifications (business:read)
"Do I have any notifications?"List payment records
Read payment records for an invoice. These records describe payments; this tool does not move money.
# list_payment_records (business:read)
"Show the payments recorded on invoice 1042."document_id— required: List payment records: saved document ID.
List pdf templates
List the existing PDF designs available to this account.
# list_pdf_templates (business:read)
"Which PDF designs can I use?"List taxes
Read saved company taxes and rates.
# list_taxes (business:read)
"List my saved taxes."Mark notification read
Mark a notification as read.
# mark_notification_read (settings:write)
"Mark that notification as read."notification_id— required: Mark notification read: notification ID.request_id— required: Mark notification read: retry key.
Pay invoices in full
Record payments for the outstanding balances of selected invoices. This does not charge customers or move money.
# pay_invoices_in_full (payments:write)
"Mark invoices 1042 and 1043 as paid in full."document_ids— required: Pay invoices in full: invoices to settle.request_id— required: Pay invoices in full: retry key.
Prepare customers import
Upload CSV text for a saved customers import. Returns a batch ID, column mapping and preview; does not create catalog entries.
# prepare_customers_import (customers:write)
"Import the customers in this CSV."csv— required: Prepare customers import: CSV text.request_id— required: Prepare customers import: retry key.
Prepare items import
Upload CSV text for a saved items import.
# prepare_items_import (items:write)
"Import the items in this CSV."csv— required: Prepare items import: CSV text.request_id— required: Prepare items import: retry key.
Preview customers import
Preview a prepared import using the specified column mapping.
# preview_customers_import (customers:write)
"Map the second column to email and preview the import again."batch_id— required: Preview customers import: import batch ID.columns— required: Preview customers import: column mapping.
Preview items import
Shows how a prepared items batch will import under a new column mapping.
# preview_items_import (items:write)
"Use the Price column for unit price and preview again."batch_id— required: Preview items import: import batch ID.columns— required: Preview items import: column mapping.
Preview send document
Prepare a review of this operation without performing it. Email a document PDF to the explicitly specified recipients. Show the preview and obtain confirmation first. Returns a send_id; use get_send_status to check delivery. Retry the same request_id after a connection failure.
# preview_send_document (documents:send)
"Prepare invoice 1042 for emailing to the saved customer."document_id— required: Preview send document: saved document ID.to— required: Preview send document: recipient email addresses, stated explicitly.subject— required: Preview send document: subject line of the email.message— required: Preview send document: body text of the email that carries the PDF.
Record deposit payment
Record a received invoice deposit and update both deposit paid and the invoice balance. Does not transfer money.
# record_deposit_payment (payments:write)
"Record a 300 deposit received today on invoice 1042."document_id— required: Record deposit payment: saved document ID.amount— required: Record deposit payment: amount.date— required: Record deposit payment: date.request_id— required: Record deposit payment: retry key.
Record payment
Record a payment received for an invoice and update its paid amount and balance. Does not charge a card or move money.
# record_payment (payments:write)
"Record a payment of 250 received today for invoice 1042."document_id— required: Record payment: saved document ID.amount— required: Record payment: amount.date— required: Record payment: date.request_id— required: Record payment: retry key.
Search customers
Find saved customers in the connected company.
# search_customers (business:read)
"Find Acme."Search documents
Find invoices, estimates or purchase orders in the connected company. Results are paginated and respect the team member's data access.
# search_documents (business:read)
"Which invoices still have an unpaid balance?"document_type— required: Search documents: invoices, estimates or purchase orders.
Search items
Search the saved item catalog and current stock quantities.
# search_items (business:read)
"Show the stock for office chairs."Send document
After the user confirms the exact preview in the conversation, execute that preview.
# send_document (documents:send)
"Yes, send it."confirmation_token— required: Send document: token tied to the preview the user confirmed in the conversation.request_id— required: Send document: retry key.
Set customer tag
Assign one customer tag, or remove the assignment by omitting tag_id.
# set_customer_tag (customers:write)
"Tag Acme as Retainer."customer_id— required: Set customer tag: saved customer ID.request_id— required: Set customer tag: retry key.
Set document status
Change an estimate or purchase order's business status, applying the existing inventory rules. Invoice payment status is determined by its payment records.
# set_document_status (documents:write)
"Mark the Acme estimate as approved."document_id— required: Set document status: saved document ID.status— required: Set document status: new business status for the estimate or purchase order.request_id— required: Set document status: retry key.
Set invoice deposit
Configure the deposit requested on an invoice. This does not record a payment or charge the customer.
# set_invoice_deposit (documents:write)
"Ask for a 30% deposit on invoice 1042."document_id— required: Set invoice deposit: saved document ID.deposit_type— required: Set invoice deposit: how the requested deposit is expressed.deposit_value— required: Set invoice deposit: the deposit amount or share to request.request_id— required: Set invoice deposit: retry key.
Update company settings
Update only supplied company settings. Currency changes affect how existing documents are displayed; do not change currency just to create one invoice in another currency. Number counters are the next numbers to allocate.
# update_company_settings (settings:write)
"Change my payment instructions to the new bank account."request_id— required: Update company settings: retry key.
Update customer
Edit a saved customer. Omitted fields remain unchanged; existing invoice customer snapshots remain unchanged.
# update_customer (customers:write)
"Update Acme's billing address."customer_id— required: Update customer: saved customer ID.request_id— required: Update customer: retry key.
Update customer reminder
Edit a pending customer reminder.
# update_customer_reminder (customers:write)
"Move the Acme reminder to Friday at 10am."reminder_id— required: Update customer reminder: pending reminder ID.message— required: Update customer reminder: new reminder text.remind_at— required: Update customer reminder: new reminder time.request_id— required: Update customer reminder: retry key.
Update customer tag
Rename a customer tag or change its color.
# update_customer_tag (customers:write)
"Rename the Retainer tag to Monthly."tag_id— required: Update customer tag: customer tag ID.name— required: Update customer tag: new tag name.color— required: Update customer tag: tag colour.request_id— required: Update customer tag: retry key.
Update document
Edit a document. Omitted fields retain their existing values. When supplying items, include every retained line and its line_id; omitted lines are removed. Catalog records and payment records are not edited by this tool.
# update_document (documents:write)
"Change the due date on invoice 1042 to the end of the month."document_id— required: Update document: saved document ID.request_id— required: Update document: retry key.
Update expense
Edit an expense; omitted fields remain unchanged and the total is recalculated.
# update_expense (expenses:write)
"Change the transport expense to 45."expense_id— required: Update expense: saved expense ID.request_id— required: Update expense: retry key.
Update expense category
Rename an account-wide expense category.
# update_expense_category (expenses:write)
"Rename Fuel to Vehicle costs."category_id— required: Update expense category: expense category ID.name— required: Update expense category: new category name.request_id— required: Update expense category: retry key.
Update invoice reminder settings
Set account-wide due and overdue invoice reminders. Owner only; settings apply across their companies.
# update_invoice_reminder_settings (settings:write)
"Remind clients 3 days before due and 2 days after, at 9am."due_enabled— required: Turn the before-due reminder on or off.due_days— required: Days before the due date to send the reminder.due_time— required: Clock time for the before-due reminder.overdue_enabled— required: Turn the overdue reminder on or off.overdue_days— required: Days after the due date to send the overdue reminder.overdue_time— required: Clock time for overdue reminders.request_id— required: Update invoice reminder settings: retry key.
Update item
Update a saved catalog item. This does not change historical document line snapshots. Stock changes create inventory movement records.
# update_item (items:write)
"Raise the price of Site visit to 140."item_id— required: Update item: catalog item ID.request_id— required: Update item: retry key.
Update tax
Edit a saved company tax. Existing document tax snapshots are unchanged.
# update_tax (settings:write)
"Change the GST rate to 10%."tax_id— required: Update tax: saved tax ID.request_id— required: Update tax: retry key.
How to Invoke
Exposed as named MCP tools on a hosted Streamable HTTP endpoint. After OAuth authorization the assistant picks the tool from your plain-language request; you never type tool names.
Pricing
Free. Pocket Invoice publishes a price of $0 for the app and the MCP connection, with no paid plan listed on its pricing pages as of 2026-10-12. The real cost sits with your assistant: ChatGPT, Claude or Codex usage is billed by OpenAI or Anthropic under their own plans. Two documents point the other way, so treat the free status as current rather than permanent: the vendor's privacy policy names Paddle as merchant of record for subscriptions, and the Google Play listing carries an in-app purchases label. The MCP page also says account document, storage and membership limits apply, without publishing what they are.
Strengths
- Unusually transparent for a hosted server: the full tool list with scopes is public before you create an account, so you can judge the blast radius up front.
- Write calls carry a request key that the vendor says to reuse when retrying after a dropped connection, which matters for invoices, where a duplicate after a dropped connection is a real cost.
- Records made through the connection keep the entry point and client name, so chat-made documents can be told apart from app-made ones later; the vendor notes a client-reported name is not a verified identity.
- Expenses, stock and reports sit behind the same connection as invoicing, so a small business does not need a second connector for its basic numbers.
Weaknesses
- Codex is the only client the vendor lists as tested; Claude, ChatGPT, Cursor and Windsurf have setup notes but no tested label.
- No deleting records through MCP, and teams, projects, appointments, schedules and recurring tasks are unavailable, so recurring billing still means opening the app.
- It cannot take money: there is no card checkout or payment link, so clients who pay online need a separate processor.
- A small, young user base: the Android app showed 10+ downloads and the iOS app 4.8 stars from 24 ratings when read on 2026-10-12, while the vendor homepage advertises 4.9.
- The Android app is published under a different developer account name (Crab2Door) from the iOS seller, which makes the company behind the product harder to verify.
Frequently Asked Questions
How much do you pay for Pocket Invoice MCP?
Nothing to Pocket Invoice: the vendor lists $0 for the app and the hosted connection, with no plan, trial or card step. What you do pay for is the assistant on the other end, since Codex, Claude and ChatGPT access is billed by OpenAI or Anthropic. Budget for that, and recheck Pocket Invoice before committing your whole billing history, because its own legal pages still describe subscriptions.
Is Pocket Invoice MCP free to use?
Yes, but the MCP route needs a signed-in account, unlike the public Web invoice generator, which works with no registration. The vendor also runs an anonymous MCP preview page whose generated PDFs are stored for 24 hours and are not emailed to anyone. Account caps on documents and storage apply to MCP use, and the vendor does not publish the numbers.
What should you use instead of Pocket Invoice MCP?
Stripe's hosted MCP server is the stronger choice if clients pay online, because Stripe processes the payment itself. Composio suits an agent that must reach many of the apps you already use through one endpoint. If invoices are simply rows you track, the Google Sheets skill from Orthogonal is lighter, though you lose numbering, templates and balances.
Is Pocket Invoice MCP better than the Stripe MCP server?
They solve different problems. Stripe's server at mcp.stripe.com exposes much of the Stripe API through generic read and write tools and sits on the platform that actually processes card payments. Pocket Invoice offers named invoicing tools, saved templates and stock tracking, and only records money you received elsewhere. Choose Stripe if online collection matters; choose Pocket Invoice for paperwork without a payments account.
How long does it take to get going with Pocket Invoice MCP?
Create the account on the Web app first, since the setup steps assume you already have one. In your client add a server named Pocket Invoice of type Streamable HTTP, then sign in when prompted, pick a company and untick any permissions you do not want. Your first request can be as plain as naming the customer, items and prices; asking for help makes the assistant call get_help and list the tools your grant allows.
Top Alternatives
- Pipedrive MCP Server: Pick Pipedrive MCP Server if the agent should work deals and pipelines in a paid CRM; pick Pocket Invoice MCP for the invoice after the deal closes.
- Composio: Pick Composio if one agent must reach hundreds of apps through a single endpoint; pick Pocket Invoice MCP for purpose-built invoice tools with no usage billing.
- Google Sheets: Pick the Google Sheets skill if invoices are rows in a spreadsheet you maintain; pick Pocket Invoice MCP when you want numbered, branded PDFs and tracked balances.