Skip to content

Merit Aktiva MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi

Read Merit Aktiva invoices, customers, vendors, items, payments and reports; create a customer.

Final · 2Changes · 6

26 tools: 2 do something that can't be undone, 6 change things and 18 only read.

Scanned Oct 21, 2026

4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http merit-aktiva https://merit-aktiva.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

4 warn
  • The server marks "merit_list_items" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "merit_list_items" says "list": a word for reading.

    What this check looks for
  • The server marks "merit_customer_debts_report" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "open": a word for a change.

    What this check looks for
  • The server marks "merit_customer_payments_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true}; The name "merit_customer_payments_report" says "payment": a word that usually means money moves, which cannot be taken back.

    What this check looks for
  • The server marks "merit_purchase_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true}; The name "merit_purchase_report" says "purchase": a word that usually means money moves, which cannot be taken back.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

26 tools

Can't be undone 2Claude Code: ask
  • merit_customer_payments_reportCustomer invoices with their unpaid amount and overdue flag for a period, for one customer (name or id).1 finding

    Why it is in this group

    • The name "merit_customer_payments_report" says "payment": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "merit_customer_payments_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true}; The name "merit_customer_payments_report" says "payment": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Customer invoices with their unpaid amount and overdue flag for a period, for one customer (name or id). Only the FIRST page is returned: if has_more is true, narrow the period or the customer (the continuation endpoint is not supported). POST /api/v2/getcustpaymrep.

    Annotations the server declares

    • title: Customer payments report
    • readOnlyHint: true
  • merit_purchase_reportPurchase totals for a period, grouped by invoice, vendor, item or fixed asset.1 finding

    Why it is in this group

    • The name "merit_purchase_report" says "purchase": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "merit_purchase_report" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true}; The name "merit_purchase_report" says "purchase": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Purchase totals for a period, grouped by invoice, vendor, item or fixed asset. POST /api/v2/getpurchrep.

    Annotations the server declares

    • title: Purchase report
    • readOnlyHint: true
Changes things 6Claude Code: ask
  • merit_balance_sheetThe balance sheet: one row per report line (assets, liabilities, equity) with balances for per_count months counting back from end_date.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The balance sheet: one row per report line (assets, liabilities, equity) with balances for per_count months counting back from end_date. POST /api/v1/getbalancerep.

    Annotations the server declares

    • title: Balance sheet
    • readOnlyHint: true
  • merit_create_customerWRITE: creates ONE new customer record in the Merit company (name must be unique; an existing customer is never overwritten, Merit answers with an error).No findings

    Why it is in this group

    • The name "merit_create_customer" says "create": a word for a change.
    Description, as the server wrote it
    WRITE: creates ONE new customer record in the Merit company (name must be unique; an existing customer is never overwritten, Merit answers with an error). Nothing is invoiced, sent or paid. In Estonia not_td_customer must be true for private persons and foreign companies; city is required in Estonia for a non-EE country. Returns the new customer id. POST /api/v2/sendcustomer.

    Annotations the server declares

    • title: Create a customer
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • merit_customer_debts_reportOpen customer receivables: for each unpaid document the customer, date, due date, total, paid and unpaid amount.1 finding

    Why it is in this group

    • The description's first verb is "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "merit_customer_debts_report" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Open customer receivables: for each unpaid document the customer, date, due date, total, paid and unpaid amount. Give a customer name (empty string = all customers) or a customer id; over_due_days keeps only documents overdue by at least that many days. POST /api/v1/getcustdebtrep.

    Annotations the server declares

    • title: Customer debts report
    • readOnlyHint: true
  • merit_income_statementThe profit and loss report: one row per report line, with balances for per_count months counting back from end_date (newest first).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The profit and loss report: one row per report line, with balances for per_count months counting back from end_date (newest first). Optional department filter. POST /api/v1/getprofitrep.

    Annotations the server declares

    • title: Income statement (profit and loss)
    • readOnlyHint: true
  • merit_list_itemsList items, services and stock articles with price, unit, VAT and accounts.1 finding

    Why it is in this group

    • The name "merit_list_items" says "list": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "merit_list_items" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "merit_list_items" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    List items, services and stock articles with price, unit, VAT and accounts. Optional filters: code or description (partial), type, id. With location_code the reply adds stock quantity and cost of that warehouse. POST /api/v1/getitems.

    Annotations the server declares

    • title: List items (articles)
    • readOnlyHint: true
  • merit_sales_reportSales totals for a period, grouped by invoice, customer, item or country.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Sales totals for a period, grouped by invoice, customer, item or country. POST /api/v2/getsalesrep.

    Annotations the server declares

    • title: Sales report
    • readOnlyHint: true
Only reads 18Claude Code: allow
  • merit_get_gl_batchOne general ledger batch with all its debit and credit lines (account, memo, department, tax, amounts).No findings

    Why it is in this group

    • The name "merit_get_gl_batch" says "get": a word for reading.
    Description, as the server wrote it
    One general ledger batch with all its debit and credit lines (account, memo, department, tax, amounts). The attachment is never requested. POST /api/v1/getglbatch.

    Annotations the server declares

    • title: Get a general ledger transaction
    • readOnlyHint: true
  • merit_get_purchase_invoiceOne purchase invoice in full: header, lines, payments.No findings

    Why it is in this group

    • The name "merit_get_purchase_invoice" says "get": a word for reading.
    Description, as the server wrote it
    One purchase invoice in full: header, lines, payments. The attachment is never requested. POST /api/v2/getpurchorder.

    Annotations the server declares

    • title: Get a purchase invoice
    • readOnlyHint: true
  • merit_get_sales_invoiceOne sales invoice in full: header, lines (items, quantities, VAT, accounts), payments and dimension allocations.No findings

    Why it is in this group

    • The name "merit_get_sales_invoice" says "get": a word for reading.
    Description, as the server wrote it
    One sales invoice in full: header, lines (items, quantities, VAT, accounts), payments and dimension allocations. The PDF attachment is never requested. POST /api/v2/getinvoice.

    Annotations the server declares

    • title: Get a sales invoice
    • readOnlyHint: true
  • merit_list_accountsThe general ledger chart of accounts (code, names, VAT, parent flag, active flag).No findings

    Why it is in this group

    • The name "merit_list_accounts" says "list": a word for reading.
    Description, as the server wrote it
    The general ledger chart of accounts (code, names, VAT, parent flag, active flag). GET /api/v2/accounts.

    Annotations the server declares

    • title: List the chart of accounts
    • readOnlyHint: true
  • merit_list_bank_paymentsList the income payments (money received) or expense payments (money paid out) booked on one bank account for a document-date period, with the documents each paid.No findings

    Why it is in this group

    • The name "merit_list_bank_payments" says "list": a word for reading.
    Description, as the server wrote it
    List the income payments (money received) or expense payments (money paid out) booked on one bank account for a document-date period, with the documents each paid. The period may span at most 3 months (Merit limit); for longer spans make several calls. GET /api/v2/Banks/{bankId}/IncomePayments or /ExpensePayments.

    Annotations the server declares

    • title: List income or expense payments of a bank account
    • readOnlyHint: true
  • merit_list_banksThe company's bank and cash accounts (BankId, name, IBAN, currency, ledger account).No findings

    Why it is in this group

    • The name "merit_list_banks" says "list": a word for reading.
    Description, as the server wrote it
    The company's bank and cash accounts (BankId, name, IBAN, currency, ledger account). BankId feeds the payment tools. GET /api/v2/banks.

    Annotations the server declares

    • title: List bank accounts
    • readOnlyHint: true
  • merit_list_customersSearch customers by name (partial match), registry number or VAT number (exact), id, or changed since a date.No findings

    Why it is in this group

    • The name "merit_list_customers" says "list": a word for reading.
    Description, as the server wrote it
    Search customers by name (partial match), registry number or VAT number (exact), id, or changed since a date. At least one filter is required: Merit cannot return the whole customer list in one reply. POST /api/v1/getcustomers.

    Annotations the server declares

    • title: Search customers
    • readOnlyHint: true
  • merit_list_departmentsDepartments (code, name, active flag).No findings

    Why it is in this group

    • The name "merit_list_departments" says "list": a word for reading.
    Description, as the server wrote it
    Departments (code, name, active flag). GET /api/v2/departments.

    Annotations the server declares

    • title: List departments
    • readOnlyHint: true
  • merit_list_dimensionsAccounting dimensions and their values (DimId, name, value code, expiry).No findings

    Why it is in this group

    • The name "merit_list_dimensions" says "list": a word for reading.
    Description, as the server wrote it
    Accounting dimensions and their values (DimId, name, value code, expiry). all_values = true also lists expired values. POST /api/v2/getdimensions.

    Annotations the server declares

    • title: List dimensions
    • readOnlyHint: true
  • merit_list_financial_yearsAccounting periods (financial years) with start, end and active flag.No findings

    Why it is in this group

    • The name "merit_list_financial_years" says "list": a word for reading.
    Description, as the server wrote it
    Accounting periods (financial years) with start, end and active flag. POST /api/v2/getaccperiods.

    Annotations the server declares

    • title: List financial years
    • readOnlyHint: true
  • merit_list_gl_batchesList general ledger batches (journal entries, also those created from invoices and payments) of a period: batch code, number, date, total.No findings

    Why it is in this group

    • The name "merit_list_gl_batches" says "list": a word for reading.
    Description, as the server wrote it
    List general ledger batches (journal entries, also those created from invoices and payments) of a period: batch code, number, date, total. The period may span at most 3 months (Merit limit); for longer spans make several calls. POST /api/v1/getglbatches.

    Annotations the server declares

    • title: List general ledger transactions
    • readOnlyHint: true
  • merit_list_payment_typesPayment methods and sources (cash, banks, reporting entities, ledger accounts) usable for purchases, expense reports or sales.No findings

    Why it is in this group

    • The name "merit_list_payment_types" says "list": a word for reading.
    Description, as the server wrote it
    Payment methods and sources (cash, banks, reporting entities, ledger accounts) usable for purchases, expense reports or sales. POST /api/v2/getpaymenttypes.

    Annotations the server declares

    • title: List payment types
    • readOnlyHint: true
  • merit_list_paymentsList payments (customer and vendor receipts and payouts) of a period, with the documents they paid.No findings

    Why it is in this group

    • The name "merit_list_payments" says "list": a word for reading.
    Description, as the server wrote it
    List payments (customer and vendor receipts and payouts) of a period, with the documents they paid. The period may span at most 3 months (Merit limit); for longer spans make several calls. POST /api/v2/getpayments.

    Annotations the server declares

    • title: List payments
    • readOnlyHint: true
  • merit_list_purchase_invoicesList purchase invoices (vendor bills) of a period: bill number, vendor, dates, totals, paid flag.No findings

    Why it is in this group

    • The name "merit_list_purchase_invoices" says "list": a word for reading.
    Description, as the server wrote it
    List purchase invoices (vendor bills) of a period: bill number, vendor, dates, totals, paid flag. The period may span at most 3 months (Merit limit); for longer spans make several calls. POST /api/v2/getpurchorders.

    Annotations the server declares

    • title: List purchase invoices
    • readOnlyHint: true
  • merit_list_sales_invoicesList sales invoices (header level: number, customer, dates, totals, paid flag) of a period.No findings

    Why it is in this group

    • The name "merit_list_sales_invoices" says "list": a word for reading.
    Description, as the server wrote it
    List sales invoices (header level: number, customer, dates, totals, paid flag) of a period. The period may span at most 3 months (Merit limit); for longer spans make several calls. Use merit_get_sales_invoice for the lines. POST /api/v2/getinvoices.

    Annotations the server declares

    • title: List sales invoices
    • readOnlyHint: true
  • merit_list_taxesAll VAT rates of the company (TaxId, code, name, percent, active flag).No findings

    Why it is in this group

    • The name "merit_list_taxes" says "list": a word for reading.
    Description, as the server wrote it
    All VAT rates of the company (TaxId, code, name, percent, active flag). The TaxId is what invoice rows refer to. GET /api/v2/taxes.

    Annotations the server declares

    • title: List VAT rates
    • readOnlyHint: true
  • merit_list_vendorsSearch vendors (suppliers) by name (partial match), registry number or VAT number (exact), id, or changed since a date.No findings

    Why it is in this group

    • The name "merit_list_vendors" says "list": a word for reading.
    Description, as the server wrote it
    Search vendors (suppliers) by name (partial match), registry number or VAT number (exact), id, or changed since a date. At least one filter is required: Merit cannot return the whole vendor list in one reply. POST /api/v1/getvendors.

    Annotations the server declares

    • title: Search vendors
    • readOnlyHint: true
  • merit_search_sales_invoicesFind sales invoices by invoice number, customer name or customer id (give at least one).No findings

    Why it is in this group

    • The name "merit_search_sales_invoices" says "search": a word for reading.
    Description, as the server wrote it
    Find sales invoices by invoice number, customer name or customer id (give at least one). POST /api/v2/getinvoices2.

    Annotations the server declares

    • title: Find sales invoices by number or customer
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.3.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http merit-aktiva https://merit-aktiva.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__merit-aktiva__merit_list_sales_invoices",
      "mcp__merit-aktiva__merit_search_sales_invoices",
      "mcp__merit-aktiva__merit_get_sales_invoice",
      "mcp__merit-aktiva__merit_list_purchase_invoices",
      "mcp__merit-aktiva__merit_get_purchase_invoice",
      "mcp__merit-aktiva__merit_list_customers",
      "mcp__merit-aktiva__merit_list_vendors",
      "mcp__merit-aktiva__merit_list_accounts",
      "mcp__merit-aktiva__merit_list_taxes",
      "mcp__merit-aktiva__merit_list_departments",
      "mcp__merit-aktiva__merit_list_banks",
      "mcp__merit-aktiva__merit_list_financial_years",
      "mcp__merit-aktiva__merit_list_dimensions",
      "mcp__merit-aktiva__merit_list_payment_types",
      "mcp__merit-aktiva__merit_list_payments",
      "mcp__merit-aktiva__merit_list_bank_payments",
      "mcp__merit-aktiva__merit_list_gl_batches",
      "mcp__merit-aktiva__merit_get_gl_batch"
    ],
    "ask": [
      "mcp__merit-aktiva__merit_list_items",
      "mcp__merit-aktiva__merit_customer_debts_report",
      "mcp__merit-aktiva__merit_customer_payments_report",
      "mcp__merit-aktiva__merit_income_statement",
      "mcp__merit-aktiva__merit_balance_sheet",
      "mcp__merit-aktiva__merit_sales_report",
      "mcp__merit-aktiva__merit_purchase_report",
      "mcp__merit-aktiva__merit_create_customer"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as merit-aktiva. Review it before you use it.