Model Context Protocol
AI connection
Connect Claude, ChatGPT, Claude Code, or Codex to NoCFO without creating an API key.
https://mcp.nocfo.ioPick 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.ioUser 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.ioRestart 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.ioLeave 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
- Sign in on the NoCFO page the client opened, if you are not already signed in.
- Review the businesses and permissions the page shows.
- Approve or deny.
- 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
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
common_business_permissions_retrieve | Business permissions - Retrieve | no | no | no |
constants_einvoice_operators_retrieve | Constants - E-invoice operators | no | no | no |
constants_vat_codes_retrieve | Constants - VAT codes | no | no | no |
constants_vat_rates_retrieve | Constants - VAT rates by date | no | no | no |
Documents
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
bookkeeping_document_finalize_active_suggestion | Document - Finalize active suggestion | yes | yes | no |
bookkeeping_document_relation_create | Document Relation - Create | yes | yes | no |
bookkeeping_document_relation_delete | Document Relation - Delete | yes | yes | no |
bookkeeping_document_relation_retrieve | Document Relation - Retrieve | no | no | no |
bookkeeping_document_relation_suggestions_list | Document Relation Suggestions - List | no | no | no |
bookkeeping_document_relation_suggestions_preview | Document relation suggestions — preview | no | no | no |
bookkeeping_document_relation_update | Document Relation - Update | yes | yes | no |
bookkeeping_document_relations_list | Document Relations - List | no | no | no |
bookkeeping_document_retrieve | Document - Retrieve | no | no | no |
bookkeeping_document_update | Document - Update | yes | yes | no |
bookkeeping_documents_list | Documents - List | no | no | no |
bookkeeping_entries_list | Entries - List | no | no | no |
Accounts
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
bookkeeping_account_create | Account - Create | yes | yes | no |
bookkeeping_account_delete | Account - Delete | yes | yes | no |
bookkeeping_account_hide | Account - Hide | yes | yes | no |
bookkeeping_account_retrieve | Account - Retrieve | no | no | no |
bookkeeping_account_show | Account - Show | yes | yes | no |
bookkeeping_account_update | Account - Update | yes | yes | no |
bookkeeping_accounts_list | Accounts - List | no | no | no |
bookkeeping_header_create | Header - Create | yes | yes | no |
bookkeeping_header_retrieve | Header - Retrieve | no | no | no |
bookkeeping_headers_list | Headers - List | no | no | no |
Invoices
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
invoicing_purchase_invoice_delete | Purchase Invoice - Delete | yes | yes | no |
invoicing_purchase_invoice_retrieve | Purchase Invoice - Retrieve | no | no | yes |
invoicing_purchase_invoice_update | Purchase Invoice - Update | yes | yes | no |
invoicing_purchase_invoices_list | Purchase Invoices - List | no | no | no |
invoicing_sales_invoice_accept | Sales Invoice - Accept | yes | yes | no |
invoicing_sales_invoice_create | Sales Invoice - Create | yes | yes | no |
invoicing_sales_invoice_delete | Sales Invoice - Delete | yes | yes | no |
invoicing_sales_invoice_delivery_methods | Sales Invoice - Get Delivery Methods | no | no | no |
invoicing_sales_invoice_mark_credit_loss | Sales Invoice - Set as Credit Loss | yes | yes | no |
invoicing_sales_invoice_mark_paid | Sales Invoice - Set as Paid | yes | yes | no |
invoicing_sales_invoice_mark_unpaid | Sales Invoice - Set as Unpaid | yes | yes | no |
invoicing_sales_invoice_recurrence_disable | Sales Invoice - Disable Recurrence | yes | yes | no |
invoicing_sales_invoice_retrieve | Sales Invoice - Retrieve | no | no | no |
invoicing_sales_invoice_send | Sales Invoice - Send | yes | yes | yes |
invoicing_sales_invoice_status_message_create | Sales Invoice - Create external status message | yes | yes | no |
invoicing_sales_invoice_status_message_delete | Sales Invoice - Delete External Status Message | yes | yes | no |
invoicing_sales_invoice_update | Sales Invoice - Update | yes | yes | no |
invoicing_sales_invoices_list | Sales Invoices - List | no | no | no |
Reports
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
reporting_accounting_period_delete | Accounting period - Delete | yes | yes | no |
reporting_accounting_period_retrieve | Accounting period - Retrieve | no | no | no |
reporting_accounting_period_update | Accounting period - Update | yes | yes | no |
reporting_accounting_periods_list | Accounting Periods - List | no | no | no |
reporting_balance_sheet_reconciliation_retrieve | Balance sheet specifications | no | no | no |
reporting_balance_sheet_retrieve | Balance sheet | no | no | no |
reporting_equity_changes_retrieve | Equity changes | no | no | no |
reporting_eu_vat_contact_report_retrieve | EU VAT report | no | no | no |
reporting_income_statement_retrieve | Income statement | no | no | no |
reporting_journal_retrieve | Journal | no | no | no |
reporting_ledger_retrieve | Ledger | no | no | no |
reporting_vat_period_delete | VAT period - Delete | yes | yes | no |
reporting_vat_period_retrieve | VAT period - Retrieve | no | no | no |
reporting_vat_period_update | VAT period - Update | yes | yes | no |
reporting_vat_periods_list | VAT Periods - List | no | no | no |
reporting_vat_retrieve | VAT statement | no | no | no |
Contacts
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
invoicing_contact_create | Contact - Create | yes | yes | no |
invoicing_contact_delete | Contact - Delete | yes | yes | no |
invoicing_contact_retrieve | Contact - Retrieve | no | no | no |
invoicing_contact_update | Contact - Update | yes | yes | no |
invoicing_contacts_list | Contacts - List | no | no | no |
Files
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
bookkeeping_file_delete | File - Delete | yes | yes | no |
bookkeeping_file_retrieve | File - Retrieve | no | no | no |
bookkeeping_file_update | File - Update | yes | yes | no |
bookkeeping_file_upload | Files - Upload | yes | yes | no |
bookkeeping_files_list | Files - List | no | no | no |
Products
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
invoicing_product_create | Product - Create | yes | yes | no |
invoicing_product_delete | Product - Delete | yes | yes | no |
invoicing_product_retrieve | Product - Retrieve | no | no | no |
invoicing_product_update | Product - Update | yes | yes | no |
invoicing_products_list | Products - List | no | no | no |
Tags
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
bookkeeping_tag_create | Tag - Create | yes | yes | no |
bookkeeping_tag_delete | Tag - Delete | yes | yes | no |
bookkeeping_tag_retrieve | Tag - Retrieve | no | no | no |
bookkeeping_tag_update | Tag - Update | yes | yes | no |
bookkeeping_tags_list | Tags - List | no | no | no |
User
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
common_user_retrieve | Current User - Retrieve | no | no | no |
common_user_update | Current User - Update | yes | yes | no |
Other
| Tool | What it does | Write | Confirm | External effect |
|---|---|---|---|---|
common_accessible_businesses_list | Accessible businesses - List | no | no | no |
docs_blueprint | Blueprint guide - Retrieve | no | no | no |
docs_bootstrap | Bootstrap - Retrieve | no | no | no |
docs_glossary | Glossary - Retrieve | no | no | no |
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 nocfoIn 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 API | MCP | |
|---|---|---|
| Host | https://api.nocfo.io or https://api-tst.nocfo.io | https://mcp.nocfo.io |
| Credential | Personal access token or JWT | Browser OAuth |
| Contract | openapi.json | openapi-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.