Endpoint
Local development endpoint:
https://netra.ee/api/mcp
We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
Public Documentation
This page shows how to connect an AI (like ChatGPT) to Netra so it can help you with everyday accounting tasks — safely and step by step. It can create invoices, record payments, import bills, reconcile bank transactions, and generate reports. Think of it as giving your AI a “remote control” to Netra, while keeping everything saved in the same accounting system your bookkeeper understands.
Filters the sections below as you type.
Local development endpoint:
https://netra.ee/api/mcp
Use API token as Bearer token (or x-api-key for direct calls).
[mcp_servers.netra]
url = "https://netra.ee/api/mcp"
bearer_token_env_var = "NETRA_MCP_TOKEN"
netra_whoami to confirm active org + role.netra_list_organizations
+ netra_switch_organization
when needed.
{"error":{"code":-32602,"message":"Missing required arguments"}}
Common codes: -32602
invalid/missing params, -32601
unknown method, -32603
server error.
Reads are safe to retry. For writes, retry only when you are sure the request did not reach Netra (e.g., network drop). If you receive a validation error, fix the input and send a new request rather than retrying the same one.
List tools support limit
(default 20, max 100). Use search
and filters
to narrow. netra_list_bank_transactions
also accepts offset
and returns total_count
and has_more; when has_more
is true, call again with offset
increased by the number of items actually
returned (not by limit, since fewer than limit
can come back) to keep reading — do not assume a single call has seen the whole account.
Verify tools:
curl -X POST https://netra.ee/api/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $NETRA_MCP_TOKEN" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
Start with netra_review_books
when you want ChatGPT to inspect the company books. The tool is read-only and returns
bank accounts, unreconciled bank transactions, match suggestions, and pending bill
imports. ChatGPT should ask for approval before it creates rules, imports documents,
or confirms reconciliation.
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
"name":"netra_review_books",
"arguments":{"limit":10,"include_suggestions":true}
}}
netra_suggest_matches for deeper matching on one bank account.
netra_suggest_bank_transaction_match
on one unmatched transaction to see
how the same counterparty was treated before, and whether a bank rule already covers it,
before asking the user what the transaction is.
netra_prepare_reconciliation before confirming a specific match.
netra_request_document_for_transaction
when a bank payment is missing a source document.
netra_verify_document_for_transaction
after bill import processing finishes.
netra_preview_bill_import_resolution
to show the proposed supplier, expense account, tax, rows, and VAT notes before
posting the bill.
netra_list_bill_import_rules
to inspect existing import defaults. Create or update bill import rules only after
approval when the user wants Netra to remember account/tax treatment for future
recognized documents.
netra_confirm_reconciliation only after approval.netra_create_bill_from_verified_document
only after the user approves creating a bill from a recognized document. Pass default_account_id, default_tax_id, or
row_overrides
when the user changes the proposed accounting treatment.
If setup is missing, it returns blockers with suggested contact or chart-of-account
tool arguments.
netra_whoaminetra_switch_organizationnetra_review_booksnetra_request_document_for_transaction
→ bill import → netra_verify_document_for_transaction
→ netra_preview_bill_import_resolution
→ approve account/tax →
netra_create_bill_from_verified_document
netra_list_bill_import_rules
→ approve rule → netra_create_bill_import_rule
netra_reconcile_autonetra_set_opening_balancenetra_create_contact_from_registrynetra_receive_invoice_paymentnetra_pay_bill
Step 1: Ensure payroll accounts (create if missing)
{"jsonrpc":"2.0","id":20,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"611","name":"Salary Expense","group":"expense","group_type":"salary","report":"Profit & Loss"
}}}
{"jsonrpc":"2.0","id":21,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"612","name":"Employer Social Tax Expense","group":"expense","group_type":"payroll_tax","report":"Profit & Loss"
}}}
{"jsonrpc":"2.0","id":22,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"613","name":"Employer Unemployment Insurance Expense","group":"expense","group_type":"payroll_tax","report":"Profit & Loss"
}}}
{"jsonrpc":"2.0","id":23,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"614","name":"Employer Funded Pension Expense","group":"expense","group_type":"payroll_tax","report":"Profit & Loss"
}}}
{"jsonrpc":"2.0","id":24,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"240","name":"Wages Payable","group":"liabilities","group_type":"payroll","report":"Balance Sheet"
}}}
{"jsonrpc":"2.0","id":25,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"241","name":"Payroll Taxes Payable (TSD)","group":"liabilities","group_type":"payroll","report":"Balance Sheet"
}}}
{"jsonrpc":"2.0","id":26,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"242","name":"Employee Pension Withholding Payable","group":"liabilities","group_type":"payroll","report":"Balance Sheet"
}}}
{"jsonrpc":"2.0","id":27,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"243","name":"Employee Unemployment Withholding Payable","group":"liabilities","group_type":"payroll","report":"Balance Sheet"
}}}
Step 2: Create employee contact
{"jsonrpc":"2.0","id":30,"method":"tools/call","params":{"name":"netra_create_contact","arguments":{
"name":"Employee Name","email":"employee@example.com","kind":"person"
}}}
Step 3: Post payroll journal (fill amounts)
{"jsonrpc":"2.0","id":31,"method":"tools/call","params":{"name":"netra_create_manual_journal","arguments":{
"date":"2026-02-01",
"description":"Payroll - minimum wage",
"lines":[
{"account_id":"611_ACCOUNT_ID","debit":"GROSS","description":"Gross salary"},
{"account_id":"612_ACCOUNT_ID","debit":"EMP_SOC_TAX","description":"Employer social tax"},
{"account_id":"613_ACCOUNT_ID","debit":"EMP_UNEMP_TAX","description":"Employer unemployment insurance"},
{"account_id":"614_ACCOUNT_ID","debit":"EMP_PENSION","description":"Employer funded pension"},
{"account_id":"240_ACCOUNT_ID","credit":"NET_PAYABLE","description":"Net payable to employee"},
{"account_id":"241_ACCOUNT_ID","credit":"PAYROLL_TAX","description":"Payroll taxes payable (TSD)"},
{"account_id":"242_ACCOUNT_ID","credit":"EMP_PENSION_WHT","description":"Employee pension withholding"},
{"account_id":"243_ACCOUNT_ID","credit":"EMP_UNEMP_WHT","description":"Employee unemployment withholding"}
]
}}}
Step 1: Get source invoice
{"jsonrpc":"2.0","id":10,"method":"tools/call","params":{"name":"netra_get_invoice","arguments":{"id":"INV_PUBLIC_ID"}}}
Step 2: Create new invoice with shifted dates
{"jsonrpc":"2.0","id":11,"method":"tools/call","params":{"name":"netra_create_invoice","arguments":{
"contact_id":"CONTACT_ID",
"date":"2026-03-05",
"due_date":"2026-03-05",
"rows":[{"account_id":"ACCOUNT_ID","description":"Invoice line","qty":"1","unit_price":"100"}]
}}}
{"jsonrpc":"2.0","id":12,"method":"tools/call","params":{"name":"netra_receive_invoice_payment","arguments":{
"invoice_id":"INV_PUBLIC_ID",
"bank_account_id":"BANK_ACCOUNT_ID",
"amount":"210.00",
"date":"2026-02-05"
}}}
Netra can create contacts directly from the Estonian Business Register. This keeps legal names, registry codes, and addresses consistent.
netra_report_trial_balancenetra_report_balance_sheetnetra_report_profit_and_lossnetra_report_tax (summary/legacy)netra_report_tax_kmd_csvnetra_report_annual_zipMCP tool names are stable. Breaking changes are announced in the changelog before deployment.
Every tool has exactly one required scope. A token only exposes tools whose scope it carries; calling anything else returns an authorization error.
read · reports, lookups and previews · 56 tools
write_accounting · create and change accounting documents · 61 tools
write_ai_approval · approve, reject or apply review work items · 5 tools
admin · organisation setup · 2 tools
Tokens are created and revoked at /settings/organization/api-tokens. Choose
read
for analysis-only clients and add write_accounting
only for clients that should post documents.
Full tool list exposed by tools/list
in the Netra MCP server, grouped by function. Each tool requires the scope shown in Scopes.
netra_create_organizationnetra_whoaminetra_whats_newnetra_list_organizationsnetra_switch_organizationnetra_review_booksnetra_request_document_for_transactionnetra_list_pending_document_importsnetra_list_reference_documentsnetra_read_reference_documentnetra_verify_document_for_transactionnetra_preview_bill_import_resolutionnetra_list_quotesnetra_list_ordersnetra_list_projectsnetra_list_invoicesnetra_get_invoicenetra_create_invoicenetra_update_invoicenetra_update_invoice_statusnetra_receive_invoice_paymentnetra_pay_billnetra_report_accounts_receivable_aging
netra_report_accounts_receivable_aging
answers debtor questions on its own:
for every unpaid sales invoice as of a date it returns the gross total, the payments
allocated on or before that date, what is still outstanding and the days past due, plus
the same grouped by debtor and by ageing bucket. The arithmetic is done in the ledger,
so a client never has to add invoices and payments together itself.
netra_list_invoices
also carries invoice_total, paid_amount
and outstanding_amount
on every row.
netra_list_contactsnetra_get_contactnetra_create_contactnetra_update_contactnetra_registry_autocompletenetra_create_contact_from_registrynetra_delete_bill_importnetra_attach_bill_import_to_billnetra_get_bill_import_ocr_hintsnetra_reprocess_bill_importnetra_update_bill_import_ocr_hintsnetra_update_bill_statusnetra_update_billnetra_apply_supplier_prepayment_to_billnetra_prepare_bill_uploadnetra_create_bill_import_from_uploadnetra_import_bill_from_base64netra_import_bill_files_from_base64netra_get_bill_import_statusnetra_list_bill_import_rulesnetra_create_bill_import_rulenetra_update_bill_import_rulenetra_delete_bill_import_rulenetra_preview_bill_import_resolutionnetra_create_bill_from_verified_documentnetra_list_billsnetra_delete_bank_transactionnetra_delete_bank_transactions_bulknetra_restore_bank_transactionnetra_restore_bank_transactions_bulknetra_link_bank_transaction_to_journalnetra_post_bank_transactionnetra_sync_bank_transactionsnetra_sync_lhv_bank_transactionsnetra_preview_bank_transaction_postingnetra_list_bank_transactionsnetra_report_bank_statement_reconciliationnetra_list_duplicate_bank_transactionsnetra_suggest_matchesnetra_suggest_bank_transaction_matchnetra_accept_confident_bank_matchesnetra_list_bank_transaction_bundlesnetra_post_bank_transaction_bundlenetra_reconcile_autonetra_prepare_reconciliationnetra_confirm_reconciliationnetra_undo_reconciliationnetra_allocate_paymentnetra_receive_invoice_paymentnetra_list_bank_rulesnetra_get_bank_rulenetra_create_bank_rulenetra_update_bank_rulenetra_delete_bank_rulenetra_create_bank_rule_from_transactionnetra_apply_bank_rulenetra_preview_bank_rulenetra_list_journalsnetra_get_journalnetra_get_journal_activitynetra_update_journalnetra_update_journal_statusnetra_create_manual_journalnetra_set_opening_balancenetra_get_opening_balancenetra_delete_opening_balancenetra_list_accountsnetra_list_unitsnetra_list_unit_invoicesnetra_get_accountnetra_get_unitnetra_get_unit_last_meter_readingnetra_upsert_meter_readingnetra_create_accountnetra_update_accountnetra_list_taxesnetra_get_taxnetra_create_taxnetra_update_taxnetra_delete_taxnetra_report_trial_balancenetra_report_balance_sheetnetra_report_profit_and_lossnetra_report_taxnetra_report_tax_kmd_csvnetra_report_annual_zipnetra_list_expense_periodsnetra_preview_expense_periodnetra_create_expense_periodnetra_create_expense_itemnetra_update_expense_itemnetra_link_expense_item_billsnetra_share_expense_periodnetra_lock_expense_periodnetra_reopen_expense_periodnetra_apply_work_itemnetra_approve_work_itemnetra_get_work_itemnetra_reject_work_itemnetra_resolve_missing_documentnetra_review_work_queuenetra_run_ai_reviewnetra_run_daily_review