Model Context Protocol (MCP) server for freee API integration
Daftra MCP by usefulapi is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Read clients, invoices, expenses and suppliers; create clients, invoices and expenses in Daftra.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http daftra-mcp-by-usefulapi https://daftra.usefulapi.io/mcp
# 2 — ask your agent for something these tools do
# daftra_get_site_info, daftra_list_clients, daftra_get_client and 27 more
Daftra MCP by usefulapi costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http daftra-mcp-by-usefulapi https://daftra.usefulapi.io/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
30 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
The Daftra account this API key belongs to: id, business name, subdomain, country, timezone, date format, default currency and subscription expiry. Check the date format and currency here before creating records. GET /site_info.
No parameter schema on file.
List clients (customers), 20 per page by default. Search by name, number, email or phone with keywords. Each item is wrapped in a Client object. GET /clients.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| keywords | string | no | Search by id, client number, business name, first/last name, email or phone. |
| assign_staff_id | integer | no | Only clients assigned to this staff member. |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
One client by id (contact details, balance settings, currency, address). GET /clients/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| client_id | integer | yes | Daftra client id. |
List sales invoices (and debit notes), most recent first. Filter by client, payment status, dates or free text. By default each item has the header and client; set recursive=1 for line items, payments and taxes. GET /invoices.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| keywords | string | no | Search client name, client number, email, invoice number and order number. |
| client_id | integer | no | Only invoices of this client. |
| payment_status | integer | no | 0 unpaid, 1 partially paid, 2 paid, 4 overpaid, -1 draft, -2 due, -3 overdue, 3 subscriptions. |
| date_from | string | no | Invoice date from, yyyy-mm-dd. |
| date_to | string | no | Invoice date to, yyyy-mm-dd. |
| due_date_from | string | no | Due date from, yyyy-mm-dd. |
| due_date_to | string | no | Due date to, yyyy-mm-dd. |
| summary_total_from | number | no | Minimum invoice total. |
| summary_total_to | number | no | Maximum invoice total. |
| currency_code | string | no | Only invoices in this currency, e.g. USD. |
| recursive | integer | no | -1 header only, 0 header + client (default), 1 also line items, payments, taxes. |
| sort | string | no | Field to sort by (default invoice date). |
| direction | string | no | Sort direction (default DESC). |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
One standard invoice by id with line items, payments, taxes, custom fields and client. Other document types (estimate, credit note) answer 404. GET /invoices/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| invoice_id | integer | yes | Daftra invoice id. |
List estimates (quotes), most recent first. Filter by client, status, dates or free text. GET /estimates.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | Search client name, number, email and estimate number. |
| client_id | integer | no | Only estimates of this client. |
| payment_status | integer | no | Estimate status id; -1 returns only drafts. |
| date_from | string | no | Estimate date from, yyyy-mm-dd. |
| date_to | string | no | Estimate date to, yyyy-mm-dd. |
| currency_code | string | no | Only estimates in this currency. |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
One estimate (quote) by id with line items, taxes and client. GET /estimates/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| estimate_id | integer | yes | Daftra estimate id. |
List payments recorded against invoices, most recent first. Opening-balance and client-credit payments are excluded. GET /invoice_payments.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| client_id | integer | no | Only payments of this client. |
| no | string | no | Only payments of the invoice with this number. |
| payment_method | string | no | Payment method, e.g. cash, bank, cheque, client_credit. |
| date_from | string | no | Payment date from (account date format). |
| date_to | string | no | Payment date to (account date format). |
| amount_from | number | no | Minimum amount. |
| amount_to | number | no | Maximum amount. |
| status | integer | no | 0 not completed, 1 completed (see Daftra for other values). |
| sort | string | no | Field to sort by, e.g. date, amount, id (default id). |
| direction | string | no | Sort direction (default desc). |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
List payments received from clients, most recent first. Opening-balance and client-credit payments are excluded. GET /client_payments.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| client_id | integer | no | Only payments of this client. |
| no | string | no | Only payments of the invoice with this number. |
| payment_method | string | no | Payment method, e.g. cash, bank, cheque, client_credit. |
| date_from | string | no | Payment date from (account date format). |
| date_to | string | no | Payment date to (account date format). |
| amount_from | number | no | Minimum amount. |
| amount_to | number | no | Maximum amount. |
| status | integer | no | 0 not completed, 1 completed (see Daftra for other values). |
| sort | string | no | Field to sort by, e.g. date, amount, id (default id). |
| direction | string | no | Sort direction (default desc). |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
List products and services (name, code, price, stock) ordered by name. Search by name, code, barcode or tag with keywords. Each item is a Product object. GET /products.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| keywords | string | no | Search product name, code, barcode and tags. |
| category | integer | no | Only products in this category id. |
| supplier_id | integer | no | Only products of this supplier. |
| product_code | string | no | Exact product code. |
| status | integer | no | 1 available, 2 low stock, 3 out of stock, 4 inactive, 5 suspended. |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
One product by id with images and categories. GET /products/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | integer | yes | Daftra product id. |
List product categories with their parent category. GET /product_categories.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| parent_id | integer | no | Only subcategories of this category id. |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
List stores (warehouses) the key's user may view. Use the ids to filter stock transactions. GET /stores.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
List processed stock movements (in, out, transfers), most recent first. Filter by product, store or date range. GET /stock_transactions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | integer | no | Only movements of this product. |
| store_id | integer | no | Only movements in this store (warehouse). |
| date_from | string | no | Received date from (account date format). |
| date_to | string | no | Received date to (account date format). |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
List treasuries and bank accounts the key's user may view, with balances. Use the ids when recording expenses. GET /treasuries.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
List expenses (money out), most recent first, with amount, vendor, category and treasury. Filter by dates, amount, category, vendor or status. GET /expenses.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| date_from | string | no | Date from (account date format). |
| date_to | string | no | Date to (account date format). |
| amount_from | number | no | Minimum amount. |
| amount_to | number | no | Maximum amount. |
| note | string | no | Words in the description (all must match). |
| expense_category_id | integer | no | Only this category id. |
| vendor | string | no | Exact vendor name. |
| status | string | no | issued (posted) or draft. |
| sort | string | no | Field to sort by, e.g. date, amount, id. |
| direction | string | no | Sort direction (default desc). |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
One expense by id. GET /expenses/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| expense_id | integer | yes | Daftra expense id. |
List incomes (money in that is not an invoice payment), most recent first. Same filters as expenses. GET /incomes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| date_from | string | no | Date from (account date format). |
| date_to | string | no | Date to (account date format). |
| amount_from | number | no | Minimum amount. |
| amount_to | number | no | Maximum amount. |
| note | string | no | Words in the description (all must match). |
| expense_category_id | integer | no | Only this category id. |
| vendor | string | no | Exact vendor name. |
| status | string | no | issued (posted) or draft. |
| sort | string | no | Field to sort by, e.g. date, amount, id. |
| direction | string | no | Sort direction (default desc). |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
List the taxes configured for the account (name, rate, active). Use the ids as tax1/tax2 on invoice lines. All taxes come in one reply. GET /taxes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| is_active | boolean | no | true only active taxes, false only inactive; omit for all. |
List purchase invoices (bills from suppliers), most recent first. Search by supplier or filter by payment status. GET /purchase_invoices.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| keywords | string | no | Search supplier name, email and number. |
| payment_status | integer | no | -1 drafts only, 0 unpaid, 1 partially paid, 2 paid, 4 overpaid; omit for all non-drafts. |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
One purchase invoice by id with line items, supplier, taxes and payments. GET /purchase_invoices/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| purchase_invoice_id | integer | yes | Daftra purchase invoice id. |
List suppliers. Filter by name, address, postal code, country or status. GET /suppliers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | Keyword in first name, last name, business name or email. |
| address | string | no | Keyword in the address fields. |
| postal_code | string | no | Postal code. |
| country_code | string | no | ISO alpha-2 country code. |
| status | integer | no | 0 active, 1 suspended. |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
One supplier by id. GET /suppliers/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| supplier_id | integer | yes | Daftra supplier id. |
List notes recorded against clients, invoices, estimates, purchase invoices, staff, suppliers, products and work orders: text, the record it belongs to (item_type + item_id), author, follow-up status. GET /notes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from | string | no | Only notes dated on or after this date (yyyy-mm-dd or date-time). |
| to | string | no | Only notes dated on or before this date (yyyy-mm-dd or date-time). |
| page | integer | no | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| limit | integer | no | Results per page, 1-100 (default 20). |
WRITE: create a client (customer). Only business_name is required. Without an email the client is created as offline (no email sending). Returns the new client's id and client_number. POST /clients.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| business_name | string | yes | The client's business or full name (required). |
| type | no | 2 individual, 3 business. | |
| first_name | string | no | First name. |
| last_name | string | no | Last name. |
| string | no | Email address. | |
| phone1 | string | no | Primary phone number. |
| phone2 | string | no | Secondary / mobile phone number. |
| address1 | string | no | Address line 1. |
| address2 | string | no | Address line 2. |
| city | string | no | City. |
| state | string | no | State / province. |
| postal_code | string | no | Postal code. |
| country_code | string | no | ISO 3166-1 alpha-2 country code, e.g. EG. |
| default_currency_code | string | no | Default currency, ISO 4217, e.g. USD. |
| notes | string | no | Free-text notes. |
| client_number | string | no | Own client code; generated when omitted. |
WRITE: change fields of an existing client. Partial update: only the fields you pass change; business_name cannot be emptied. PUT /clients/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| client_id | integer | yes | Daftra client id. |
| business_name | string | no | New business or full name. |
| type | no | 2 individual, 3 business. | |
| first_name | string | no | First name. |
| last_name | string | no | Last name. |
| string | no | Email address. | |
| phone1 | string | no | Primary phone number. |
| phone2 | string | no | Secondary / mobile phone number. |
| address1 | string | no | Address line 1. |
| address2 | string | no | Address line 2. |
| city | string | no | City. |
| state | string | no | State / province. |
| postal_code | string | no | Postal code. |
| country_code | string | no | ISO 3166-1 alpha-2 country code, e.g. EG. |
| default_currency_code | string | no | Default currency, ISO 4217, e.g. USD. |
| notes | string | no | Free-text notes. |
WRITE: create a supplier. business_name is required; email is required unless is_offline is true. Returns the new supplier's id. POST /suppliers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| business_name | string | yes | The supplier's business name (required). |
| is_offline | boolean | no | true for a supplier without an email address. |
| first_name | string | no | First name. |
| last_name | string | no | Last name. |
| string | no | Email address. | |
| phone1 | string | no | Primary phone number. |
| phone2 | string | no | Secondary / mobile phone number. |
| address1 | string | no | Address line 1. |
| address2 | string | no | Address line 2. |
| city | string | no | City. |
| state | string | no | State / province. |
| postal_code | string | no | Postal code. |
| country_code | string | no | ISO 3166-1 alpha-2 country code, e.g. EG. |
| default_currency_code | string | no | Default currency, ISO 4217, e.g. USD. |
| notes | string | no | Free-text notes. |
WRITE: record an expense (money out of a treasury). amount and date are required; the treasury defaults to the primary one and the currency to the account currency. Pass unique_id so a retry cannot create it twice. Returns the new expense id and number. POST /expenses.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| amount | number | yes | Gross amount, positive. |
| date | string | yes | Expense date (account date format, usually yyyy-mm-dd); it must fall in an open financial period. |
| currency_code | string | no | ISO 4217 code; defaults to the account currency. |
| vendor | string | no | Vendor name. |
| category | string | no | Category name; created if it does not exist. |
| expense_category_id | integer | no | Existing category id (instead of category). |
| note | string | no | Description. |
| supplier_id | integer | no | Linked supplier id. |
| client_id | integer | no | Linked client id. |
| treasury_id | integer | no | Treasury to withdraw from (see daftra_list_treasuries). |
| expense_number | string | no | Own reference number; generated when omitted. |
| unique_id | string | no | Idempotency key: reusing it returns the original expense instead of creating another. |
WRITE: create a sales invoice for a client with line items. It is saved as a DRAFT unless you pass draft=false; a final invoice posts to the books and stock. Returns the new invoice id. POST /invoices.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| client_id | integer | yes | Client id (daftra_list_clients). |
| items | array | yes | Invoice lines. |
| date | string | no | Invoice date, yyyy-mm-dd; must fall in an open financial period (default today). |
| draft | boolean | no | true (default) saves a draft; false creates the final invoice. |
| currency_code | string | no | ISO 4217 code; defaults to the account currency. |
| no | string | no | Invoice number; generated when omitted. |
| po_number | string | no | Purchase order number. |
| notes | string | no | Notes shown to the client. |
| discount | number | no | Percentage discount on the whole invoice. |
WRITE: add a note to a client, invoice, estimate, purchase invoice, supplier, product, staff member or work order. The note is private unless share_with_partner is true. POST /notes/{type}/{id}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | Kind of record (purchase_order = purchase invoice). |
| id | integer | yes | Id of that record. |
| body | string | yes | Note text. |
| date | string | no | Note date, yyyy-mm-dd (default today, UTC). |
| share_with_partner | boolean | no | true shares the note with the client or supplier (default private). |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Daftra MCP by usefulapi or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| daftra_get_site_info | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_clients | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_get_client | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_invoices | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_get_invoice | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_estimates | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_get_estimate | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_invoice_payments | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_client_payments | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_products | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_get_product | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_product_categories | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_stores | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_stock_transactions | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_treasuries | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_expenses | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_get_expense | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_incomes | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_taxes | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_purchase_invoices | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_get_purchase_invoice | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_suppliers | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_get_supplier | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_list_notes | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| daftra_create_client | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| daftra_update_client | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| daftra_create_supplier | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| daftra_create_expense | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| daftra_create_invoice | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| daftra_add_note | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.1.5.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Daftra MCP by usefulapi can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.