bukku-mcp
Registry code: da226e7501f92a4e
Tools for Bukku, hosted by usefulapi.io. If the user is new or asks what this server can do, suggest requests such as: "Which sales invoices are overdue, and how much does each customer owe?"; "Show last month's purchase bills from my suppliers."; "Create a draft invoice for Alpha Company Sdn Bhd for 3 hours of consulting at RM 200.". Read-only tools never change data; ask the user before a tool that creates, changes or deletes Bukku data. Free plan: 50 tool calls per month. Run bukku_usage_status to see the calls used this month. If the user asks for something none of these tools can do,…
- endpoint
- https://bukku.usefulapi.io/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is bukku-mcp live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
- Is bukku-mcp free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does bukku-mcp have?
- 23 tools: bukku_get_account, bukku_get_product, bukku_get_journal_entry, bukku_get_bank_transaction, bukku_list_products, bukku_list_tags, bukku_list_accounts, bukku_list_contact_groups, ….
- Is bukku-mcp safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 23 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
bukku_get_account auth-required never probed
One ledger account by id. GET /accounts/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "account_id" ], "properties": { "account_id": { "type": "integer", "maximum": 9007199254740991, "description": "Bukku account id.", "exclusiveMinimum": 0 } } }arguments 15 linesbukku_get_product auth-required never probed
One product with its units, prices, accounts and tax settings. GET /products/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "product_id" ], "properties": { "product_id": { "type": "integer", "maximum": 9007199254740991, "description": "Bukku product id.", "exclusiveMinimum": 0 } } }arguments 15 linesbukku_get_journal_entry auth-required never probed
One journal entry with its debit and credit lines. GET /journal_entries/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "transaction_id" ], "properties": { "transaction_id": { "type": "integer", "maximum": 9007199254740991, "description": "Bukku transaction id of the journal entry.", "exclusiveMinimum": 0 } } }arguments 15 linesbukku_get_bank_transaction auth-required never probed
One money in, money out or transfer transaction in full. GET /banking/{incomes|expenses|transfers}/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "type", "transaction_id" ], "properties": { "type": { "enum": [ "money_in", "money_out", "transfer" ], "type": "string", "description": "Transaction type." }, "transaction_id": { "type": "integer", "maximum": 9007199254740991, "description": "Bukku transaction id.", "exclusiveMinimum": 0 } } }arguments 25 linesbukku_list_products auth-required never probed
List products and bundles (sales and purchase details, SKU, stock). GET /products.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "mode": { "enum": [ "sale", "purchase" ], "type": "string", "description": "Only products sold or only products purchased." }, "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "type": { "enum": [ "product", "bundle" ], "type": "string" }, "search": { "type": "string", "maxLength": 60, "minLength": 1, "description": "Keywords in the name, SKU, sale or purchase description or remarks (max 60 characters)." }, "sort_dir": { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 30).", "exclusiveMinimum": 0 }, "include_archived": { "type": "boolean", "description": "true to include archived products." } } }arguments 51 linesbukku_list_tags auth-required never probed
List the tags (labels) that can be put on transactions. GET /tags.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 linesbukku_list_accounts auth-required 1h ago
List ledger accounts from the chart of accounts, optionally by category. Account ids are used on invoice lines. GET /accounts.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "search": { "type": "string", "maxLength": 100, "minLength": 1, "description": "Keywords to search for in the accounts (max 100 characters)." }, "category": { "enum": [ "assets", "liabilities", "equity", "income", "expenses" ], "type": "string" }, "sort_dir": { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction." }, "is_archived": { "type": "boolean", "description": "true to show deactivated accounts instead of active ones (default false)." } } }arguments 34 linesbukku_list_contact_groups auth-required 1h ago
List the contact groups; use their ids to filter bukku_list_contacts. GET /contacts/groups.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 linesbukku_list_contacts auth-required 1h ago
List contacts (customers, suppliers, employees) with name, code, type, receivable and payable balances. Search matches the name, receivable, payable and created date. GET /contacts.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "type": { "enum": [ "customer", "supplier", "employee" ], "type": "string", "description": "Only this contact type." }, "search": { "type": "string", "maxLength": 100, "minLength": 1, "description": "Keywords in the name, receivable, payable or created date (max 100 characters)." }, "status": { "enum": [ "ALL", "ACTIVE", "INACTIVE" ], "type": "string", "description": "ACTIVE (default), INACTIVE (archived) or ALL contacts." }, "sort_by": { "enum": [ "name", "receivable", "payable", "created_at" ], "type": "string" }, "group_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only contacts in this contact group (see bukku_list_contact_groups).", "exclusiveMinimum": 0 }, "sort_dir": { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 30).", "exclusiveMinimum": 0 } } }arguments 65 linesbukku_get_contact auth-required never probed
One contact with its persons, addresses, tax and registration numbers, default accounts and credit limit. GET /contacts/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "contact_id" ], "properties": { "contact_id": { "type": "integer", "maximum": 9007199254740991, "description": "Bukku contact id.", "exclusiveMinimum": 0 } } }arguments 15 linesbukku_list_sales_invoices auth-required never probed
List sales invoices with number, date, contact, amount, balance and payment status. Filter by date, customer, payment status (PAID, OUTSTANDING, OVERDUE) or keywords. GET /sales/invoices.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "search": { "type": "string", "maxLength": 100, "minLength": 1, "description": "Keywords in the number, reference, title, remarks, description, contact or billing/shipping party." }, "status": { "enum": [ "draft", "pending_approval", "ready", "void" ], "type": "string", "description": "Only transactions with this status. Without it every status except void is returned." }, "date_to": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Invoices dated on or before this day, yyyy-mm-dd." }, "sort_by": { "enum": [ "number", "date", "contact_name", "number2", "title", "description", "amount", "balance", "created_at" ], "type": "string" }, "sort_dir": { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction." }, "date_from": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Invoices dated on or after this day, yyyy-mm-dd." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 30).", "exclusiveMinimum": 0 }, "contact_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only invoices of this customer.", "exclusiveMinimum": 0 }, "payment_mode": { "enum": [ "cash", "credit" ], "type": "string" }, "payment_status": { "enum": [ "PAID", "OUTSTANDING", "OVERDUE" ], "type": "string" } } }arguments 87 linesbukku_list_product_groups auth-required never probed
List the product groups. GET /products/groups.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 linesbukku_list_sales_documents auth-required never probed
List quotes, sales orders, delivery orders, credit notes, customer payments or refunds (invoices have their own tool, bukku_list_sales_invoices). payment_status applies to credit notes, payments and refunds only. GET /sales/{quotes|orders|delivery_orders|credit_notes|payments|refunds}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "type" ], "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "type": { "enum": [ "quote", "order", "delivery_order", "credit_note", "payment", "refund" ], "type": "string", "description": "Which sales document to list." }, "search": { "type": "string", "maxLength": 100, "minLength": 1 }, "status": { "enum": [ "draft", "pending_approval", "ready", "void" ], "type": "string", "description": "Only transactions with this status. Without it every status except void is returned." }, "date_to": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "A date, yyyy-mm-dd." }, "sort_dir": { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction." }, "date_from": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "A date, yyyy-mm-dd." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 30).", "exclusiveMinimum": 0 }, "contact_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only documents of this customer.", "exclusiveMinimum": 0 }, "payment_status": { "enum": [ "PAID", "OUTSTANDING", "OVERDUE", "paid", "outstanding" ], "type": "string", "description": "Credit notes (PAID, OUTSTANDING, OVERDUE), payments and refunds (PAID, OUTSTANDING). Not for the other types." } } }arguments 83 linesbukku_get_sales_document auth-required never probed
One sales document in full (lines, taxes, terms, payments, status): an invoice, quote, order, delivery order, credit note, payment or refund. GET /sales/{type}/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "type", "transaction_id" ], "properties": { "type": { "enum": [ "invoice", "quote", "order", "delivery_order", "credit_note", "payment", "refund" ], "type": "string", "description": "Document type." }, "transaction_id": { "type": "integer", "maximum": 9007199254740991, "description": "Bukku transaction id.", "exclusiveMinimum": 0 } } }arguments 29 linesbukku_list_purchase_bills auth-required never probed
List purchase bills with number, date, supplier, amount, balance and payment status. Filter by date, supplier, payment status (PAID, OUTSTANDING, OVERDUE) or keywords. GET /purchases/bills.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "search": { "type": "string", "maxLength": 100, "minLength": 1 }, "status": { "enum": [ "draft", "pending_approval", "ready", "void" ], "type": "string", "description": "Only transactions with this status. Without it every status except void is returned." }, "date_to": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Bills dated on or before this day, yyyy-mm-dd." }, "sort_dir": { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction." }, "date_from": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Bills dated on or after this day, yyyy-mm-dd." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 30).", "exclusiveMinimum": 0 }, "contact_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only bills of this supplier.", "exclusiveMinimum": 0 }, "payment_mode": { "enum": [ "cash", "credit", "claim" ], "type": "string" }, "payment_status": { "enum": [ "PAID", "OUTSTANDING", "OVERDUE" ], "type": "string" } } }arguments 73 linesbukku_list_purchase_documents auth-required never probed
List purchase orders, goods received notes, supplier credit notes, supplier payments or refunds (bills have their own tool, bukku_list_purchase_bills). payment_status applies to credit notes, payments and refunds only. GET /purchases/{orders|goods_received_notes|credit_notes|payments|refunds}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "type" ], "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "type": { "enum": [ "order", "goods_received_note", "credit_note", "payment", "refund" ], "type": "string", "description": "Which purchase document to list." }, "search": { "type": "string", "maxLength": 100, "minLength": 1 }, "status": { "enum": [ "draft", "pending_approval", "ready", "void" ], "type": "string", "description": "Only transactions with this status. Without it every status except void is returned." }, "date_to": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "A date, yyyy-mm-dd." }, "sort_dir": { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction." }, "date_from": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "A date, yyyy-mm-dd." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 30).", "exclusiveMinimum": 0 }, "contact_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only documents of this supplier.", "exclusiveMinimum": 0 }, "payment_status": { "enum": [ "PAID", "OUTSTANDING", "OVERDUE", "paid", "outstanding" ], "type": "string", "description": "Credit notes (PAID, OUTSTANDING, OVERDUE), payments and refunds (PAID, OUTSTANDING). Not for the other types." } } }arguments 82 linesbukku_get_purchase_document auth-required never probed
One purchase document in full (lines, taxes, terms, payments, status): a bill, order, goods received note, credit note, payment or refund. GET /purchases/{type}/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "type", "transaction_id" ], "properties": { "type": { "enum": [ "bill", "order", "goods_received_note", "credit_note", "payment", "refund" ], "type": "string", "description": "Document type." }, "transaction_id": { "type": "integer", "maximum": 9007199254740991, "description": "Bukku transaction id.", "exclusiveMinimum": 0 } } }arguments 28 linesbukku_list_journal_entries auth-required never probed
List manual journal entries by date, status or keywords. GET /journal_entries.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "search": { "type": "string", "maxLength": 100, "minLength": 1, "description": "Keywords in the number, reference, title, remarks or description." }, "status": { "enum": [ "draft", "pending_approval", "ready", "void" ], "type": "string", "description": "Only transactions with this status. Without it every status except void is returned." }, "date_to": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "A date, yyyy-mm-dd." }, "sort_dir": { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction." }, "date_from": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "A date, yyyy-mm-dd." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 30).", "exclusiveMinimum": 0 } } }arguments 52 linesbukku_list_bank_transactions auth-required never probed
List banking transactions: money in (incomes), money out (expenses) or transfers between accounts. contact_id and sort_by do not apply to transfers. GET /banking/{incomes|expenses|transfers}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "type" ], "properties": { "page": { "type": "integer", "maximum": 100000, "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.", "exclusiveMinimum": 0 }, "type": { "enum": [ "money_in", "money_out", "transfer" ], "type": "string", "description": "Which banking transactions to list." }, "search": { "type": "string", "maxLength": 100, "minLength": 1, "description": "Keywords in the number, reference, title, remarks, description or contact." }, "status": { "enum": [ "draft", "pending_approval", "ready", "void" ], "type": "string", "description": "Only transactions with this status. Without it every status except void is returned." }, "date_to": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "A date, yyyy-mm-dd." }, "sort_by": { "enum": [ "number", "number2", "date", "contact_name", "amount", "description", "created_at" ], "type": "string", "description": "Money in / money out only." }, "sort_dir": { "enum": [ "asc", "desc" ], "type": "string", "description": "Sort direction." }, "date_from": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "A date, yyyy-mm-dd." }, "page_size": { "type": "integer", "maximum": 100, "description": "Results per page, 1-100 (default 30).", "exclusiveMinimum": 0 }, "account_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only transactions on this bank/cash account (see bukku_list_accounts).", "exclusiveMinimum": 0 }, "contact_id": { "type": "integer", "maximum": 9007199254740991, "description": "Only this contact (money in / money out).", "exclusiveMinimum": 0 } } }arguments 89 linesbukku_get_lookup_lists auth-required never probed
Reference data needed to fill in documents: tax codes, payment terms, payment methods, currencies, countries, accounts, contact groups, product groups, price levels, tag groups, number formats, custom fields and company settings. Read-only (POST /v2/lists is a read endpoint).
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "lists" ], "properties": { "lists": { "type": "array", "items": { "enum": [ "accounts", "classification_code_list", "contact_groups", "countries", "currencies", "fields", "number_formats", "payment_methods", "price_levels", "product_groups", "settings", "tag_groups", "tax_codes", "terms" ], "type": "string" }, "maxItems": 14, "minItems": 1, "description": "Which lists to return, for example [\"tax_codes\", \"terms\"]." } } }arguments 34 linesbukku_create_contact auth-required never probed
WRITE: create a contact (customer, supplier and/or employee) in Bukku. The contact code must be unique (A-Z, 0-9, _ and -, max 15 characters). POST /contacts.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "legal_name", "contact_code", "entity_type", "types" ], "properties": { "email": { "type": "string", "maxLength": 200, "minLength": 3 }, "types": { "type": "array", "items": { "enum": [ "customer", "supplier", "employee" ], "type": "string" }, "maxItems": 3, "minItems": 1, "description": "Contact types; a contact can be several." }, "reg_no": { "type": "string", "maxLength": 30, "minLength": 1, "description": "Registration number. Required for MALAYSIAN_COMPANY (with reg_no_type); individuals need it or tax_id_no." }, "remarks": { "type": "string", "maxLength": 2000, "minLength": 1 }, "phone_no": { "type": "string", "maxLength": 40, "minLength": 3 }, "tax_id_no": { "type": "string", "maxLength": 14, "minLength": 11, "description": "Malaysian TIN / tax id (11-14 characters). Required for MALAYSIAN_COMPANY; individuals need it or reg_no." }, "legal_name": { "type": "string", "maxLength": 100, "minLength": 1, "description": "Legal name of the contact." }, "other_name": { "type": "string", "maxLength": 100, "minLength": 1, "description": "Trading or display name." }, "entity_type": { "enum": [ "MALAYSIAN_COMPANY", "MALAYSIAN_INDIVIDUAL", "FOREIGN_COMPANY", "FOREIGN_INDIVIDUAL", "EXEMPTED_PERSON" ], "type": "string", "description": "Entity type (used for MyInvois)." }, "reg_no_type": { "enum": [ "NRIC", "BRN", "PASSPORT", "ARMY" ], "type": "string", "description": "Registration number type; send together with reg_no." }, "contact_code": { "type": "string", "pattern": "^[A-Z0-9_-]+$", "maxLength": 15, "minLength": 1, "description": "Unique code, for example C-A0001." } } }arguments 93 linesbukku_set_contact_archived auth-required never probed
WRITE: archive (is_archived true) or restore (false) a contact. Archiving hides it from active lists; nothing is deleted. PATCH /contacts/{id}.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "contact_id", "is_archived" ], "properties": { "contact_id": { "type": "integer", "maximum": 9007199254740991, "description": "Bukku contact id.", "exclusiveMinimum": 0 }, "is_archived": { "type": "boolean", "description": "true to archive, false to unarchive." } } }arguments 20 linesbukku_create_sales_invoice auth-required never probed
WRITE: create a sales invoice for a customer. status defaults to draft (nothing posted to the ledger), status ready finalizes it and affects the books. payment_mode credit needs term_items, cash needs deposit_items. Companies with MyInvois submission switched on must pass myinvois_action when status is ready: NORMAL (not sent), EXTERNAL (already validated elsewhere) or VALIDATE (submits the invoice to LHDN MyInvois, which cannot be taken back). Look up contact, account, term and tax code ids first. POST /sales/invoices.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "contact_id", "date", "items", "tax_mode", "currency_code", "exchange_rate" ], "properties": { "date": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Invoice date, yyyy-mm-dd." }, "items": { "type": "array", "items": { "type": "object", "required": [ "account_id", "description", "unit_price", "quantity" ], "properties": { "discount": { "type": "string", "pattern": "^\\d+(\\.\\d+)?%?$", "maxLength": 14, "description": "Discount as a value (25.50) or a percentage (10%)." }, "quantity": { "type": "number", "maximum": 1000000000, "description": "Quantity (up to 4 decimals).", "exclusiveMinimum": 0 }, "account_id": { "type": "integer", "maximum": 9007199254740991, "description": "Income account id (bukku_list_accounts, category income).", "exclusiveMinimum": 0 }, "product_id": { "type": "integer", "maximum": 9007199254740991, "exclusiveMinimum": 0 }, "unit_price": { "type": "number", "maximum": 1000000000000, "minimum": 0, "description": "Price per unit (up to 4 decimals)." }, "description": { "type": "string", "maxLength": 500, "minLength": 1, "description": "Line description (required by Bukku)." }, "tax_code_id": { "type": "integer", "maximum": 9007199254740991, "description": "Tax code id (bukku_get_lookup_lists tax_codes).", "exclusiveMinimum": 0 }, "service_date": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "A date, yyyy-mm-dd." }, "product_unit_id": { "type": "integer", "maximum": 9007199254740991, "exclusiveMinimum": 0 }, "classification_code": { "type": "string", "maxLength": 10, "minLength": 1, "description": "MyInvois classification code (bukku_get_lookup_lists classification_code_list). Required on every line with myinvois_action VALIDATE." } } }, "maxItems": 100, "minItems": 1, "description": "Invoice lines." }, "title": { "type": "string", "maxLength": 255, "minLength": 1 }, "number": { "type": "string", "maxLength": 50, "minLength": 1, "description": "Invoice number, blank uses the default number format." }, "status": { "enum": [ "draft", "ready" ], "type": "string", "description": "draft (default) or ready." }, "number2": { "type": "string", "maxLength": 50, "minLength": 1, "description": "Reference number." }, "remarks": { "type": "string", "maxLength": 2000, "minLength": 1 }, "tax_mode": { "enum": [ "inclusive", "exclusive" ], "type": "string", "description": "Whether unit prices include tax." }, "contact_id": { "type": "integer", "maximum": 9007199254740991, "description": "Customer contact id (bukku_list_contacts type customer).", "exclusiveMinimum": 0 }, "term_items": { "type": "array", "items": { "type": "object", "required": [ "payment_due" ], "properties": { "date": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$", "description": "Custom due date, yyyy-mm-dd. Give term_id or date." }, "term_id": { "type": "integer", "maximum": 9007199254740991, "description": "Payment term id (bukku_get_lookup_lists terms); the due date is calculated. Give term_id or date.", "exclusiveMinimum": 0 }, "description": { "type": "string", "maxLength": 200, "minLength": 1 }, "payment_due": { "type": "string", "pattern": "^\\d+(\\.\\d+)?%?$", "maxLength": 20, "description": "Amount due, as a value (100.25) or a percentage (20%)." } } }, "maxItems": 50, "minItems": 1, "description": "Payment terms, for payment_mode credit." }, "description": { "type": "string", "maxLength": 255, "minLength": 1 }, "payment_mode": { "enum": [ "cash", "credit" ], "type": "string", "description": "credit (needs term_items) or cash (needs deposit_items)." }, "currency_code": { "type": "string", "pattern": "^[A-Za-z]{3}$", "description": "Invoice currency, for example MYR. Use the company's home currency unless invoicing in another one." }, "deposit_items": { "type": "array", "items": { "type": "object", "required": [ "account_id", "amount" ], "properties": { "amount": { "type": "number", "maximum": 1000000000000, "description": "Amount received.", "exclusiveMinimum": 0 }, "number": { "type": "string", "maxLength": 50, "minLength": 1, "description": "Payment reference." }, "account_id": { "type": "integer", "maximum": 9007199254740991, "description": "Account the money was deposited to (bukku_list_accounts).", "exclusiveMinimum": 0 }, "payment_method_id": { "type": "integer", "maximum": 9007199254740991, "description": "Payment method id (bukku_get_lookup_lists payment_methods).", "exclusiveMinimum": 0 } } }, "maxItems": 50, "minItems": 1, "description": "Payment received, for payment_mode cash." }, "exchange_rate": { "type": "number", "maximum": 1000000000, "description": "Rate from the home currency to currency_code. Use 1 when currency_code is the home currency.", "exclusiveMinimum": 0 }, "myinvois_action": { "enum": [ "NORMAL", "VALIDATE", "EXTERNAL" ], "type": "string", "description": "MyInvois handling, only with status ready." } } }arguments 245 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's idda226e7501f92a4e.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/da226e7501f92a4e/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/da226e7501f92a4e?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.
Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.
- fleetio.usefulapi.io fleetio-mcp
- runcloud.usefulapi.io runcloud-mcp
- billomat.usefulapi.io billomat-mcp
- teamgate.usefulapi.io teamgate-mcp
- synchroteam.usefulapi.io synchroteam-mcp
- klippa-dochorizon.usefulapi.io klippa-dochorizon-mcp
- pipeline-crm.usefulapi.io pipeline-crm-mcp
- waitwhile.usefulapi.io waitwhile-mcp
136 more sit on this domain. All of them.