Developers
MCP

Model Context Protocol

AI connection

Connect Claude, ChatGPT, Claude Code, or Codex to NoCFO without creating an API key.

https://mcp.nocfo.io

Pick a client, add https://mcp.nocfo.io, and approve access in the browser. You do not create a personal access token for this, and you do not paste a password into the chat.

The MCP server is the site root, not a /mcp path on that host. Protected resource metadata is published at mcp.nocfo.io/.well-known/oauth-protected-resource. The authorization server is https://login.nocfo.io. The scopes that metadata advertises are openid, profile, and email.

Choose your application

Claude Code

claude mcp add --scope user --transport http \
  nocfo https://mcp.nocfo.io

User scope makes the server available in every Claude Code project on that machine. Then run claude mcp login nocfo, or open /mcp inside Claude Code and start authentication.

Codex

codex mcp add nocfo --url https://mcp.nocfo.io

Restart Codex if the server does not appear. Choose Authenticate, or run codex mcp login nocfo.

Claude or ChatGPT

Paste this URL when the product asks for a remote MCP server or custom connector:

https://mcp.nocfo.io

Leave OAuth client id and client secret empty. NoCFO's authorization server supports the discovery flow those clients start. In Claude, add a custom connector and choose Connect. In ChatGPT, create an app, choose OAuth, and scan tools. Both steps open a browser window on an official NoCFO host.

Keep authentication in the browser

Never paste a NoCFO password, one-time code, access token, or authorization code into an AI chat. If the client does not open a browser, copy the authorization URL it prints and open that URL yourself.

Approve access

  1. Sign in on the NoCFO page the client opened, if you are not already signed in.
  2. Review the businesses and permissions the page shows.
  3. Approve or deny.
  4. Return to the client.

What the connection can do

Start by reading the MCP resource docs_bootstrap, then follow the steps it gives you. If a term is unclear, read docs_glossary.

The table is generated from openapi-mcp. Write is x-mcp-mutates-state. Confirm is x-mcp-requires-confirmation. When Confirm is yes, the client must ask the user immediately before it runs the tool. External effect is x-mcp-has-external-side-effects (for example sending an invoice).

Businesses

ToolWhat it doesWriteConfirmExternal effect
common_business_permissions_retrieveBusiness permissions - Retrievenonono
constants_einvoice_operators_retrieveConstants - E-invoice operatorsnonono
constants_vat_codes_retrieveConstants - VAT codesnonono
constants_vat_rates_retrieveConstants - VAT rates by datenonono

Documents

ToolWhat it doesWriteConfirmExternal effect
bookkeeping_document_finalize_active_suggestionDocument - Finalize active suggestionyesyesno
bookkeeping_document_relation_createDocument Relation - Createyesyesno
bookkeeping_document_relation_deleteDocument Relation - Deleteyesyesno
bookkeeping_document_relation_retrieveDocument Relation - Retrievenonono
bookkeeping_document_relation_suggestions_listDocument Relation Suggestions - Listnonono
bookkeeping_document_relation_suggestions_previewDocument relation suggestions — previewnonono
bookkeeping_document_relation_updateDocument Relation - Updateyesyesno
bookkeeping_document_relations_listDocument Relations - Listnonono
bookkeeping_document_retrieveDocument - Retrievenonono
bookkeeping_document_updateDocument - Updateyesyesno
bookkeeping_documents_listDocuments - Listnonono
bookkeeping_entries_listEntries - Listnonono

Accounts

ToolWhat it doesWriteConfirmExternal effect
bookkeeping_account_createAccount - Createyesyesno
bookkeeping_account_deleteAccount - Deleteyesyesno
bookkeeping_account_hideAccount - Hideyesyesno
bookkeeping_account_retrieveAccount - Retrievenonono
bookkeeping_account_showAccount - Showyesyesno
bookkeeping_account_updateAccount - Updateyesyesno
bookkeeping_accounts_listAccounts - Listnonono
bookkeeping_header_createHeader - Createyesyesno
bookkeeping_header_retrieveHeader - Retrievenonono
bookkeeping_headers_listHeaders - Listnonono

Invoices

ToolWhat it doesWriteConfirmExternal effect
invoicing_purchase_invoice_deletePurchase Invoice - Deleteyesyesno
invoicing_purchase_invoice_retrievePurchase Invoice - Retrievenonoyes
invoicing_purchase_invoice_updatePurchase Invoice - Updateyesyesno
invoicing_purchase_invoices_listPurchase Invoices - Listnonono
invoicing_sales_invoice_acceptSales Invoice - Acceptyesyesno
invoicing_sales_invoice_createSales Invoice - Createyesyesno
invoicing_sales_invoice_deleteSales Invoice - Deleteyesyesno
invoicing_sales_invoice_delivery_methodsSales Invoice - Get Delivery Methodsnonono
invoicing_sales_invoice_mark_credit_lossSales Invoice - Set as Credit Lossyesyesno
invoicing_sales_invoice_mark_paidSales Invoice - Set as Paidyesyesno
invoicing_sales_invoice_mark_unpaidSales Invoice - Set as Unpaidyesyesno
invoicing_sales_invoice_recurrence_disableSales Invoice - Disable Recurrenceyesyesno
invoicing_sales_invoice_retrieveSales Invoice - Retrievenonono
invoicing_sales_invoice_sendSales Invoice - Sendyesyesyes
invoicing_sales_invoice_status_message_createSales Invoice - Create external status messageyesyesno
invoicing_sales_invoice_status_message_deleteSales Invoice - Delete External Status Messageyesyesno
invoicing_sales_invoice_updateSales Invoice - Updateyesyesno
invoicing_sales_invoices_listSales Invoices - Listnonono

Reports

ToolWhat it doesWriteConfirmExternal effect
reporting_accounting_period_deleteAccounting period - Deleteyesyesno
reporting_accounting_period_retrieveAccounting period - Retrievenonono
reporting_accounting_period_updateAccounting period - Updateyesyesno
reporting_accounting_periods_listAccounting Periods - Listnonono
reporting_balance_sheet_reconciliation_retrieveBalance sheet specificationsnonono
reporting_balance_sheet_retrieveBalance sheetnonono
reporting_equity_changes_retrieveEquity changesnonono
reporting_eu_vat_contact_report_retrieveEU VAT reportnonono
reporting_income_statement_retrieveIncome statementnonono
reporting_journal_retrieveJournalnonono
reporting_ledger_retrieveLedgernonono
reporting_vat_period_deleteVAT period - Deleteyesyesno
reporting_vat_period_retrieveVAT period - Retrievenonono
reporting_vat_period_updateVAT period - Updateyesyesno
reporting_vat_periods_listVAT Periods - Listnonono
reporting_vat_retrieveVAT statementnonono

Contacts

ToolWhat it doesWriteConfirmExternal effect
invoicing_contact_createContact - Createyesyesno
invoicing_contact_deleteContact - Deleteyesyesno
invoicing_contact_retrieveContact - Retrievenonono
invoicing_contact_updateContact - Updateyesyesno
invoicing_contacts_listContacts - Listnonono

Files

ToolWhat it doesWriteConfirmExternal effect
bookkeeping_file_deleteFile - Deleteyesyesno
bookkeeping_file_retrieveFile - Retrievenonono
bookkeeping_file_updateFile - Updateyesyesno
bookkeeping_file_uploadFiles - Uploadyesyesno
bookkeeping_files_listFiles - Listnonono

Products

ToolWhat it doesWriteConfirmExternal effect
invoicing_product_createProduct - Createyesyesno
invoicing_product_deleteProduct - Deleteyesyesno
invoicing_product_retrieveProduct - Retrievenonono
invoicing_product_updateProduct - Updateyesyesno
invoicing_products_listProducts - Listnonono

Tags

ToolWhat it doesWriteConfirmExternal effect
bookkeeping_tag_createTag - Createyesyesno
bookkeeping_tag_deleteTag - Deleteyesyesno
bookkeeping_tag_retrieveTag - Retrievenonono
bookkeeping_tag_updateTag - Updateyesyesno
bookkeeping_tags_listTags - Listnonono

User

ToolWhat it doesWriteConfirmExternal effect
common_user_retrieveCurrent User - Retrievenonono
common_user_updateCurrent User - Updateyesyesno

Other

ToolWhat it doesWriteConfirmExternal effect
common_accessible_businesses_listAccessible businesses - Listnonono
docs_blueprintBlueprint guide - Retrievenonono
docs_bootstrapBootstrap - Retrievenonono
docs_glossaryGlossary - Retrievenonono

Tool names in the client are the operation ids with dots turned into underscores when the server instructions say so. Compare required_permissions on a tool with the permissions in docs_bootstrap. If they are missing, call common_business_permissions_retrieve.

Check that it worked

Ask the client:

Use NoCFO. Read the docs_bootstrap resource, then tell me which businesses I can access.

You are connected when the client reads that resource and lists businesses from the account you approved. If it asks you to paste a token, stop and use the browser flow instead.

Remove access

Revoke the grant in the NoCFO account you approved, then remove the server in the client:

claude mcp remove nocfo
codex mcp remove nocfo

In Claude or ChatGPT, disconnect or delete the connector. Reconnect by running the login or Connect step again. A removed client configuration does not by itself revoke a grant that NoCFO still stores.

MCP and the REST API

REST APIMCP
Hosthttps://api.nocfo.io or https://api-tst.nocfo.iohttps://mcp.nocfo.io
CredentialPersonal access token or JWTBrowser OAuth
Contractopenapi.jsonopenapi-mcp

Do not send a personal access token to the MCP host. Do not send an MCP access token to api.nocfo.io.

Client troubleshooting

  • Authentication required. Run the login command, or use Connect in Claude or ChatGPT.
  • The browser did not open. Open the URL the client printed.
  • The wrong business is connected. Revoke the grant and approve again.
  • The connector cannot be added. The product plan or workspace admin may have disabled custom MCP servers. That is a client setting, not a NoCFO token.

On this page