Next free-source huntWe check for new free data every weekday.
FinancialMCP serverFirst audited Nov 13, 2026

Simpler.Asia

Free back office for small businesses in Singapore and Southeast Asia: invoices, expenses, stock.The vendor's description, from its MCP Registry listing.

Passed public checksAudited Nov 13, 2026

Every public check ran and passed. Public audit: we connect as an AI client would, list the tools and check what they say. We do not run them. How we audit

Does it work?
YesConnected in 2.3 s.
Sign-up?
None neededIt answered without any account or key.
Can it change things?
YesSome tools say they can change things. Your AI client should ask you first.
Endpointhttps://simpler.asia/mcp

Website Streamable HTTP · protocol 2025-11-25 · server version 8c732fa71ee8371a

What we checked, the evidence, and the tools it offers.

What we checked

Security

  • Passed: Connections are encrypted (HTTPS).

  • Passed: No hidden instructions found in tool text.

Safety labels

  • Note: 211 tools are labelled as able to change things.

    Expected for tools that send, write or buy. Your AI client should ask before calling them.

    • simpler.invoke
    • agent_note_send_cross_tenant
    • contact_upsert
    • expense_create
    • expense_submit
    • expense_approve
    • interaction_create
    • invoice_create
    • and 203 more
  • Passed: Every tool says whether it only reads or can change things.

Tools

  • Note: Some tool text is long, so it uses more of the AI's working memory.

    • forecast.run (8,895 characters)
    • forecast.read (11,077 characters)
  • Passed: 320 tools listed.

  • Passed: Every tool describes its inputs with a valid schema.

Protocol

  • Passed: The MCP handshake works (Streamable HTTP).

  • Passed: Protocol version 2025-11-25 (latest).

  • Passed: Unknown requests are refused.

Connection

  • Passed: The server responds.

Tools (320)

As the server describes them. The labels are the server's own: it says whether each tool only reads or can change things.

  • simpler.directoryDISCOVERY TIER 1 of 3 — the service directory: one token-dense line per service (s:name st:status cost:class ops:N — purpose). START HERE instead of reading every tool. No auth required. NEXT: simple…Read-only
  • simpler.describe_serviceDISCOVERY TIER 2 of 3 — one service's operations and entity shapes from the live catalog, token-dense (op lines name the underlying tool). No auth required. NEXT: simpler.invoke {service, operation,…Read-only
  • simpler.invokeDISCOVERY TIER 3 of 3 — execute one operation: dispatches to the underlying generated tool (same gates, same envelope, same idempotency as calling it directly). Requires auth. args = the underlying t…Can change things
  • simpler.outcomesDISCOVERY TIER 0 — the OUTCOME MENU: one line per common business outcome, each mapped to ONE tool with one-call notes (composites: ONE call creates the whole document). START HERE for a business tas…Read-only
  • simpler.approval_statusCheck a parked approval by approval_id (returned in an APPROVAL_REQUIRED refusal). States: pending (the account owner has not decided — tell the user, do NOT retry the original call), executed (done…Read-only
  • agent_note_send_cross_tenantSend a cross-tenant AI-to-AI message into another tenant's agent_note inbox — the door that turns a cross_tenant_comm consent grant into an actual reach. Both tenants must be KYB-approved and the rec…Can change things
  • contact_upsertCreate-or-merge a contact keyed on email-then-phone identity — the sync door the future desktop harness and ingest lanes write through. Matching probes email first, then phone; a hit MERGES only the…Can change things
  • expense_createLogs a new expense — amount_cents must be integer CENTS (a decimal string via `amount` also works, and `category` resolves to a category_id by name). A same-amount, same-UTC-day duplicate for the sam…Can change things
  • expense_submitSends your own draft expense into the approval queue — draft only; an already-submitted or resolved expense refuses CONFLICT, and only the expense's own creator may submit it. Nobody is notified auto…Can change things
  • expense_approveApproves a submitted expense claim — requires the admin or owner role, and only a 'pending' expense qualifies (CONFLICT otherwise). Stamps approved_by and approved_at with the caller and the current…Can change things
  • interaction_createLog an interaction — call, meeting, email, message, visit, payment, or other — against a contact. The ONE activity-logging door every lane funnels through, so the contact's last_contact_at freshness…Can change things
  • invoice_createONE call creates the whole document: client_name + `items` [{description, quantity, unit_price}], each price as written ("5000.00"). It claims the next invoice number and writes every line; client_na…Can change things
  • invoice_adjustment_record[REQUIRES APPROVAL] Records a credit note, write-off or post-issue discount on an issued invoice. A credit_note is numbered from the credit note series, holds its tax at the invoice's rate and takes…Can change things
  • invoice_payment_recordRecords a money-in fact row against an invoice (by invoice_id or its invoice_number) in ONE call: money is integer CENTS via amount_cents, or a decimal STRING via amount — never multiply or divide yo…Can change things
  • myinvois_invoice_generateMint a sealed LHDN e-invoice in ONE call: invoice_type, line_items (unit_price_cents in integer CENTS, tax_rate_bps in basis points), and a buyer as customer_id or an inline buyer object. Refuses unt…Can change things
  • myinvois_invoice_record_submissionRecord the UUID the LHDN MyInvois portal assigned after the owner keyed this e-invoice into the portal (its form or LHDN's Excel batch template). Simpler never submits to LHDN and never calls the MyI…Can change things
  • myinvois_invoice_readRead one sealed e-invoice by id, with its portal_field_sheet: the document's values laid out to key into the LHDN MyInvois portal form (e-invoice details, supplier, buyer, each line, totals), coded v…Read-only
  • quote_createONE call creates the whole document: client_name + `items` [{description, quantity, unit_price}], each price as written ("5000.00"). It claims the next atomic quote number and writes every line toget…Can change things
  • quote_convertConverts a quote into its invoice in ONE call: claims the quote's 'converted' status first (so a lost race never creates an orphan invoice), copies every live line item across, and records converted_…Can change things
  • settlement_proposal_propose_cross_tenantRecord a payment obligation against a KYB-verified partner tenant's settlement_proposals — the record-don't-move on-ramp: this writes the row only, no money moves until a later settlement-rails door…Can change things
  • sticky_note_createCreate a sticky_note.Can change things
  • stock_item_adjustMove stock in or out by id or item name, in one atomic write with its movements-ledger row: stock-out clamps at zero (never negative) and applied_quantity reports what actually moved. An unmatched na…Can change things
  • team_assignment_create[REQUIRES APPROVAL] Delegates a task to a teammate (or yourself) as a new team_assignment; status is workflow-owned and always starts 'pending' — passing status yourself fails validation instead of b…Can change things
  • workflow_createCreate a workflow — an AI operator's job: validates definition_json (a { nodes, edges, schedule? } graph) against the platform's node vocabulary, refusing unknown node types and any comms/message-sha…Can change things
  • workflow_prepared_outputsList this tenant's APPROVED prepared outputs: drafts a workflow's prepare_output nodes parked for review, which a human then approved in the platform inbox. Pending and rejected drafts never appear h…Can change things
  • ai.budgetYour prepaid wallet, period spend, caps, and runway as a compact line DSL (~8 lines). Requires auth (your balance is closed data). Read this BEFORE committing paid actions; pair with ai.estimate_cost…Read-only
  • ai.estimate_costPrice an AI task BEFORE running it: provider passthrough at wholesale cost, no markup — the per-token platform fee is retired, so text/reasoning passes through at cost. Anonymous — open catalog inclu…Read-only
  • sales_receivablesWho owes you, by client: each client's unpaid balance aged by days past its due date — current (not yet due), 1-30, 31-60, 61-90 and over 90 days — counted in the business's own days (the sales_setti…Read-only
  • sales_document_showShow one invoice, quote or receipt as the document itself. When the result has a second content block, it is the document as copy-ready plain text (title, business, billed to, dates, one line per ite…Read-only
  • invoice_message_preparePrepare what a business sends a client about one issued invoice: purpose 'invoice', 'reminder' (overdue), 'receipt' (paid in full) or 'promise_follow_up' (promised date passed); left out, the one tha…Read-only
  • invoice_reminders_dueToday's collection list, in the business's days (its sales_settings time zone). reminders: each issued invoice still owed that is 3 days before its due date, on it, or 7 or 14 days after, as its clie…Read-only
  • statement_prepareA client's statement of account over a period of the business's own days (the sales_settings time zone): the balance they owed before it (opening), each invoice issued, payment received, credit and w…Read-only
  • invoice_handoffGet one issued invoice ready to give the client, in one call: the document, the client link (made if it has none), the PDF (printed or the stored one) and the prepared message (invoice_message_prepar…Can change things
  • forecast.runWHAT-IF / scenario lane: runs monthly data YOU supply through a seeded 5,000-path simulation of monthly revenue and costs; bands are simulation outputs, not calibrated probabilities. The paths are cl…Read-only
  • forecast.run_storedRun the tenant's REAL forecast from the books — cash receipts (recorded invoice payments by payment date, plus paid invoices with no recorded payment at their paid date, flagged) and expenses by expe…Can change things
  • forecast.readRead the tenant's STORED forecast — the verify-read for this rail. view picks the answer, one of summary, monthly, variance, scenarios, weekly (default summary). summary: the outcome bands (label, gr…Read-only
  • image.generate[paid: $0.06/image max] Generate 1-3 images from a text prompt on the first lane that delivers, tried in order: google/nano-banana-2.1 via the Cloudflare AI catalog ($0.06/image), then @cf/black-fore…Can change things
  • document.extractFetch a document from a URL, classify its type (personal/medical/business/unknown) with keyword + PII-pattern heuristics (documents containing actual PII data are NEVER business), and return extracte…Read-only
  • template.listFree. The media templates: product-shot (product shot), product-lifestyle (product in a real place), poster (promo poster), showcase-video (product video), explainer-voice (voice-over with captions),…Read-only
  • spreadsheet.create_with_contentCreate a spreadsheet in the user's library from CSV content in ONE call: the platform stores the bytes (honest text/csv) and registers the file row. Free — storage costs nothing; only AI lanes bill.…Can change things
  • agent_note_mark_readConfirm receipt of a note in your cross-tenant agent_note inbox — the ONLY edit a recipient holds, moving status unread to read under the registry's transition guard. Idempotent: re-confirming an alr…Can change things
  • agent_note_listList your agent_note rows (newest first).Read-only
  • agent_note_readRead one agent_note by id.Read-only
  • brand_assets_readRead one brand_assets by id.Read-only
  • brand_assets_listList your brand_assets rows (newest first).Read-only
  • consent_grant_listList your consent_grant rows (newest first).Read-only
  • consent_grant_readRead one consent_grant by id.Read-only
  • contact_createCreate a contact and, in the same call, log its first note and/or first interaction — the composite first-touch door. Children validate before the contact write; if the contact commits but a child th…Can change things
  • contact_updateUpdate a contact you own (optionally compare-and-set via expected_updated_at).Can change things
  • contact_deleteDelete a contact you own.Can change things
  • contact_readRead one contact by id.Read-only
  • contact_listList your contact rows (newest first).Read-only
  • contact_searchSearch your contact rows by text.Read-only
  • contact_note_createAdd a note to a contact — the same door as the granular tool, extended only to accept contact_name, contact_email or contact_phone in place of contact_id. A name match must be unique: more than one h…Can change things
  • contact_note_listList your contact_note rows (newest first).Read-only
  • contact_note_readRead one contact_note by id.Read-only
  • contact_note_deleteDelete a contact_note you own.Can change things
  • desk_surface_createPins one widget or a saved artifact onto the operator's home canvas. kind='widget' requires widget_key from the shipped enum; kind='artifact' requires content_ref (an assistant artifact id) — the doo…Can change things
  • desk_surface_updateMoves, resizes, or restacks a surface already on the desk canvas — x/y/w/h/z_index are real column writes, not a layout cache. The surface's identity is frozen here: kind, widget_key, and content_ref…Can change things
  • desk_surface_readRead one desk_surface by id.Read-only
  • desk_surface_listList your desk_surface rows (newest first).Read-only
  • desk_surface_deleteDelete a desk_surface you own.Can change things
  • edit_project_createCreate a canvas project from a Fabric.js toJSON serialization (canvas_json, required): every embedded data:image src is pulled out, hashed, and written to a tenant-scoped, content-addressed R2 key be…Can change things
  • edit_project_updateSave changes to an existing canvas project by id — the autosave door: send only the fields that changed (name, canvas_json, width, height, thumbnail_data_url), everything else on the row is left alon…Can change things
  • edit_project_readRead one edit_project by id.Read-only
  • edit_project_listList your edit_project rows (newest first).Read-only
  • edit_project_deleteDelete a edit_project you own.Can change things
  • expense_updateEdits an expense's own fields only — status and approval stamps refuse with VALIDATION_ERROR here since those are transitions (expense_submit, expense_approve, expense_reject, expense_reimburse). amo…Can change things
  • expense_deleteDeletes an expense you created — draft and rejected rows only. Pending, approved, and reimbursed rows are approval-trail records and refuse with CONFLICT (approval_locked: true), and the lock is pinn…Can change things
  • expense_rejectRejects a submitted expense claim — requires the admin or owner role, and only a 'pending' expense qualifies (CONFLICT otherwise). rejection_reason (up to 500 chars) is optional but records why; reje…Can change things
  • expense_reimburseMarks an approved expense as paid out — restricted to the tenant owner because it moves real money, and only an 'approved' expense qualifies (CONFLICT otherwise). Stamps reimbursed_at, after which th…Can change things
  • expense_readRead one expense by id.Read-only
  • expense_listList your expense rows (newest first).Read-only
  • expense_searchSearch your expense rows by text.Read-only
  • expense_aggregateAggregate (count/sum) over your expense rows.Read-only
  • expense_budget_createCreate a expense_budget.Can change things
  • expense_budget_updateUpdate a expense_budget you own (optionally compare-and-set via expected_updated_at).Can change things
  • expense_budget_deleteDelete a expense_budget you own.Can change things
  • expense_budget_readRead one expense_budget by id.Read-only
  • expense_budget_listList your expense_budget rows (newest first).Read-only
  • expense_category_createAdds a custom category to your tenant's category table — slug must be 1-50 chars of lowercase a-z, 0-9, '-' or '_' and unique per tenant (CONFLICT if taken). is_default is server-owned: supplying it…Can change things
  • expense_category_updateEdits a category's name, icon, color, or sort_order — slug and is_default are the category's fixed identity, and any attempt to change either refuses with VALIDATION_ERROR. color, when given, must be…Can change things
  • expense_category_deleteDeletes a custom category — categories are tenant-shared, so any tenant member can remove one regardless of who created it; the 9 seeded defaults are undeletable and refuse with CONFLICT (default_cat…Can change things
  • expense_category_ensure_defaultsSeeds the 9 canonical default categories (Food & Dining, Transport, Utilities, Shopping, Entertainment, Healthcare, Travel, Office & Supplies, Other) into your tenant, skipping any slug that already…Can change things
  • expense_category_readRead one expense_category by id.Read-only
  • expense_category_listList your expense_category rows (newest first).Read-only
  • expense_recurrence_createCreate a expense_recurrence.Can change things
  • expense_recurrence_updateUpdate a expense_recurrence you own (optionally compare-and-set via expected_updated_at).Can change things
  • expense_recurrence_deleteDelete a expense_recurrence you own.Can change things
  • expense_recurrence_readRead one expense_recurrence by id.Read-only
  • expense_recurrence_listList your expense_recurrence rows (newest first).Read-only
  • interaction_upsertCreate-or-update a interaction keyed on source_ref.Can change things
  • interaction_listList your interaction rows (newest first).Read-only
  • interaction_readRead one interaction by id.Read-only
  • invoice_updateEdits an invoice's header fields and status. status 'paid' cannot be set here — it derives from the payment ledger, so call invoice_payment_record instead. Status moves are machine-checked (draft to…Can change things
  • invoice_shareReturns share_url, the client's view link for this invoice, and the full document (parties, lines, totals in integer CENTS) in one call. action: 'get' (default) returns the live link; 'rotate' replac…Can change things
  • invoice_payer_confirmationActs on a payer's report, sent from the invoice's client page, that they have paid. action 'accept' records the payment with the same writer as invoice_payment_record, graded counterparty_confirmed:…Can change things
  • invoice_debit_note[REQUIRES APPROVAL] Issues a numbered debit note that raises what an issued ('sent' or 'paid') invoice is owed: an extra charge, or a price or tax correction. It is numbered from the debit note serie…Can change things
  • invoice_reissueVoids a 'sent' invoice with no money on it and reissues it under the next number: 'sent', dated today, same client, currency, notes, terms and lines, tax on today's rules, the old days to pay unless…Can change things
  • invoice_promise_setRecords the date a client promised to pay an issued invoice that still has money owed: promised_payment_date 'YYYY-MM-DD', the business's own date, today or later. clear true removes it. invoice_read…Can change things
  • invoice_readReturns one invoice with its money and state worked out on read, in integer CENTS: subtotal_cents, tax_cents, total_cents, paid_cents, credited_cents, adjusted_cents, remaining_cents (copy remaining_…Read-only
  • invoice_listLists your invoices, newest first (200 at most; pass limit and cursor to page). Every row carries the same worked-out money and state as invoice_read: total_cents, remaining_cents, state, is_overdue,…Read-only
  • invoice_searchFinds invoices whose text fields (invoice number, notes, payment terms) contain every word of q. Rows carry the same worked-out money and state as invoice_read: total_cents, remaining_cents, state, i…Read-only
  • invoice_adjustment_readRead one invoice_adjustment by id.Read-only
  • invoice_adjustment_listList your invoice_adjustment rows (newest first).Read-only
  • invoice_adjustment_delete[REQUIRES APPROVAL] Retires a dilution fact row — the only correction lane (adjustments are append-only; amounts are never edited). If the retired row was a credit that settled the invoice, the statu…Can change things
  • invoice_client_createCreate a invoice_client.Can change things
  • invoice_client_upsertCreate-or-update a invoice_client keyed on email.Can change things
  • invoice_client_updateUpdate a invoice_client you own (optionally compare-and-set via expected_updated_at).Can change things
  • invoice_client_deleteDelete a invoice_client you own.Can change things
  • invoice_client_readRead one invoice_client by id.Read-only
  • invoice_client_listList your invoice_client rows (newest first).Read-only
  • invoice_client_searchSearch your invoice_client rows by text.Read-only
  • invoice_client_link_tenant[REQUIRES APPROVAL] Asserts that a billing client IS an on-platform tenant (or pass counterparty_tenant_id null to unlink) and retro-stamps that client's existing invoices with the link in the same c…Can change things
  • invoice_item_createAdds one line item to an invoice. unit_price_cents is integer CENTS, 0 or more ($15.00 → 1500); quantity is 0.001 to 1,000,000 with up to 3 decimals (1.5 hours → 1.5); unit is an optional label (hr,…Can change things
  • invoice_item_updateEdits a line item's description, quantity, unit, price or discount, or re-parents it to another invoice. expected_updated_at is required: the line's updated_at from your read; without it nothing is w…Can change things
  • invoice_item_deleteSoft-deletes a line item — it leaves the invoice and its derived total immediately, but the row is retired for audit history, never removed. expected_updated_at is required: the line's updated_at fro…Can change things
  • invoice_item_readRead one invoice_item by id.Read-only
  • invoice_item_listList your invoice_item rows (newest first).Read-only
  • invoice_payment_readRead one invoice_payment by id.Read-only
  • invoice_payment_listList your invoice_payment rows (newest first).Read-only
  • invoice_payment_delete[REQUIRES APPROVAL] Retires a payment fact row — the only correction lane (payments are append-only; amounts are never edited). If retiring it un-settles the invoice, the reversal itself rolls the st…Can change things
  • invoice_recurring_createCreate a invoice_recurring.Can change things
  • invoice_recurring_updateUpdate a invoice_recurring you own (optionally compare-and-set via expected_updated_at).Can change things
  • invoice_recurring_deleteDelete a invoice_recurring you own.Can change things
  • invoice_recurring_readRead one invoice_recurring by id.Read-only
  • invoice_recurring_listList your invoice_recurring rows (newest first).Read-only
  • invoice_recurring_skipSkips a recurring template's next invoice: next_due moves one period on (the template's own weekly, monthly or yearly day) and no invoice is made. A skip does not count toward max_invoices. Refuses N…Can change things
  • market_signal_createPost to one of the tenant's 8 market-signal wish-bar slots — a buy, sell, swap, capacity-offer or capacity-request visible ONLY to platform-matched partners, never the wider network. The door counts…Can change things
  • market_signal_updateUpdate a market_signal you own (optionally compare-and-set via expected_updated_at).Can change things
  • market_signal_listList your market_signal rows (newest first).Read-only
  • market_signal_readRead one market_signal by id.Read-only
  • myinvois_customer_createRegister a buyer in the LHDN buyer registry so it attaches to future e-invoices with one pick (customer_id) instead of typing the party every time. Validates the TIN format, and validates state_code…Can change things
  • myinvois_customer_updateEdit a registered buyer's LHDN details — send only the fields you are changing. When tin is included it is re-checked against the same format gate create runs, and when state_code is included it is r…Can change things
  • myinvois_customer_deleteDelete a registered buyer. E-invoices already generated for this buyer keep their sealed copy of the buyer party and are never touched. Refuses an id outside your tenant with NOT_FOUND: call myinvois…Can change things
  • myinvois_customer_readRead one registered buyer by id: name, TIN, BRN, SST number, address and contact. myinvois_invoice_generate seals the name, TIN, BRN, address and contact; the buyer's SST number stays on this record…Read-only
  • myinvois_customer_listList registered buyers, newest first, to pick a customer_id for myinvois_invoice_generate. An empty list means none are registered yet: call myinvois_customer_create, or send an inline buyer {name, t…Read-only
  • myinvois_customer_searchFind registered buyers by text: every word must match one of the buyer's text fields, such as name, TIN, BRN, email or address. Refuses an empty q with VALIDATION_ERROR. No match returns an empty lis…Read-only
  • myinvois_invoice_listList your myinvois_invoice rows (newest first).Read-only
  • myinvois_invoice_searchFind generated e-invoices by text: every word must match one of the document's text fields, such as invoice number, buyer name or buyer TIN. Refuses an empty q with VALIDATION_ERROR. Rows carry no fi…Read-only
  • myinvois_settings_save[REQUIRES APPROVAL] Save the one-time LHDN supplier profile — the door checks for an existing row on your tenant and creates or updates in place, so this is the only write you ever call. Validates th…Can change things
  • myinvois_settings_readRead the supplier profile by id: the party printed on every e-invoice (company, TIN, BRN, SST and tourism tax numbers, MSIC code, address). Refuses an id outside your tenant with NOT_FOUND: call myin…Read-only
  • myinvois_settings_listList the supplier profile: at most one row per tenant. An empty list means setup is not done, and myinvois_invoice_generate refuses until it is: call myinvois_settings_save with the company, TIN, BRN…Read-only
  • myinvois_template_createSave a reusable line-item preset so a repeat invoice's items do not get re-typed. line_items_json is parsed and each item validated by the SAME checker myinvois_invoice_generate uses (description, qu…Can change things
  • myinvois_template_updateEdit a saved line-item preset. When line_items_json is included it is re-parsed and every item re-validated exactly as create does, so an edited template cannot drift into a shape myinvois_invoice_ge…Can change things
  • myinvois_template_deleteDelete a saved line-item preset. E-invoices generated from it are never touched: each one sealed its own lines. Refuses an id outside your tenant with NOT_FOUND: call myinvois_template_list for valid…Can change things
  • myinvois_template_readRead one line-item preset by id. Its line_items_json holds generate-ready items: pass them as line_items to myinvois_invoice_generate. Refuses an id outside your tenant with NOT_FOUND: call myinvois_…Read-only
  • myinvois_template_listList saved line-item presets, newest first. Each line_items_json is generate-ready: pass its items as line_items to myinvois_invoice_generate. An empty list means none are saved yet: call myinvois_te…Read-only
  • quote_updateEdits a quote's header fields and bookkeeping status (draft, sent, accepted, declined move freely). status 'converted' and converted_invoice_id are convert-flow-owned — hand-setting either refuses, a…Can change things
  • quote_shareReturns share_url, the client's view link for this quote, and the full document (parties, lines, totals in integer CENTS) in one call. action: 'get' (default) returns the live link; 'rotate' replaces…Can change things
  • quote_readReturns one quote with subtotal_cents, tax_cents and total_cents worked out from its live lines (integer CENTS) and effective_status, which reads 'expired' once a sent quote's valid_until has passed…Read-only
  • quote_listLists your quotes, newest first (200 at most; pass limit and cursor to page). Every row carries total_cents (integer CENTS) and effective_status, so an expired quote reads 'expired'. Refuses a limit…Read-only
  • quote_searchFinds quotes whose text fields (quote number, notes) contain every word of q; rows carry total_cents (integer CENTS) and effective_status. Refuses an empty q with VALIDATION_ERROR: send the quote num…Read-only
  • quote_item_createAdds one line item to a quote. unit_price_cents is integer CENTS, 0 or more ($15.00 → 1500); quantity is 0.001 to 1,000,000 with up to 3 decimals (1.5 hours → 1.5); unit is an optional label (hr, kg)…Can change things
  • quote_item_updateEdits a quote line's description, quantity, unit, price or discount, or moves it to another quote. expected_updated_at is required: the line's updated_at from your read; without it nothing is written…Can change things
  • quote_item_deleteSoft-deletes a quote line — it leaves the quote and its totals immediately, but the row is retired for audit history, never removed. expected_updated_at is required: the line's updated_at from your r…Can change things
  • quote_item_readRead one quote_item by id.Read-only
  • quote_item_listList your quote_item rows (newest first).Read-only
  • sales_settings_upsert[REQUIRES APPROVAL] Saves your business identity and document defaults (one row per business; scope is 'default'). timezone is the business clock: an invoice turns overdue at midnight in that zone af…Can change things
  • sales_settings_numbering_set[REQUIRES APPROVAL] Sets where a document type's numbers continue, for example after moving from another invoicing tool. doc_type: invoice, quote, credit_note, debit_note or receipt. next_number is t…Can change things
  • sales_settings_listList your sales_settings rows (newest first).Read-only
  • sales_settings_readRead one sales_settings by id.Read-only
  • settlement_proposal_acceptAccept a settlement obligation recorded against your tenant as payee — moves status proposed to accepted and stamps accepted_at under the registry's transition guard. Calling it again on an already-a…Can change things
  • settlement_proposal_listList your settlement_proposal rows (newest first).Read-only
  • settlement_proposal_readRead one settlement_proposal by id.Read-only
  • spreadsheet_file_createRegister a spreadsheet file row in the library for bytes that already sit in R2: r2_key must be a spreadsheets/<your tenant>/ key minted by the upload route or spreadsheet.create_with_content — a cal…Can change things
  • spreadsheet_file_updateEdit a spreadsheet file's metadata — title, tags, folder_id, or the AI-analysis fields — without touching the underlying R2 object. r2_key and source are birth facts: including either field in the ca…Can change things
  • spreadsheet_file_deleteSoft-delete a spreadsheet file: stamps deleted_at on the row so it drops out of the library and folder listings, while the row and its R2 object both survive untouched — there is no purge or restore…Can change things
  • spreadsheet_file_readRead one spreadsheet_file by id.Read-only
  • spreadsheet_file_listList your spreadsheet_file rows (newest first).Read-only
  • spreadsheet_file_searchSearch your spreadsheet_file rows by text.Read-only
  • spreadsheet_folder_createCreate a spreadsheet_folder.Can change things
  • spreadsheet_folder_updateUpdate a spreadsheet_folder you own (optionally compare-and-set via expected_updated_at).Can change things
  • spreadsheet_folder_deleteDelete a spreadsheet_folder you own.Can change things
  • spreadsheet_folder_readRead one spreadsheet_folder by id.Read-only
  • spreadsheet_folder_listList your spreadsheet_folder rows (newest first).Read-only
  • sticky_note_listList your sticky_note rows (newest first).Read-only
  • sticky_note_updateUpdate a sticky_note you own (optionally compare-and-set via expected_updated_at).Can change things
  • sticky_note_deleteDelete a sticky_note you own.Can change things
  • sticky_note_dueRead this tenant's sticky notes whose reminder time (triggers_at) has arrived — the poll the desktop host runs to know what to fire as a local notification, since the web itself has no send channel.…Read-only
  • sticky_note_dismissClear a sticky note's reminder (triggers_at back to NULL) so it drops out of the sticky_note_due poll — call this after the host fires the local notification for it. Runs through the same tenant-scop…Can change things
  • stock_item_createCreate a stock_item.Can change things
  • stock_item_updateUpdate a stock_item you own (optionally compare-and-set via expected_updated_at).Can change things
  • stock_item_deleteSoft-delete a stock item by id: sets is_active to 0 while its movements-ledger history stays intact. stock_item_adjust then refuses the id as NOT_FOUND and stops resolving it by name, so a later deli…Can change things
  • stock_item_readRead one stock_item by id.Read-only
  • stock_item_listList your stock_item rows (newest first).Read-only
  • stock_item_searchSearch your stock_item rows by text.Read-only
  • studio_character_createCreate a studio_character.Can change things
  • studio_character_readRead one studio_character by id.Read-only
  • studio_character_listList your studio_character rows (newest first).Read-only
  • studio_character_updateUpdate a studio_character you own (optionally compare-and-set via expected_updated_at).Can change things
  • studio_character_deleteDelete a studio_character you own.Can change things
  • studio_environment_createCreate a studio_environment.Can change things
  • studio_environment_readRead one studio_environment by id.Read-only
  • studio_environment_listList your studio_environment rows (newest first).Read-only
  • studio_environment_updateUpdate a studio_environment you own (optionally compare-and-set via expected_updated_at).Can change things
  • studio_environment_deleteDelete a studio_environment you own.Can change things
  • studio_project_createCreate a video studio project — the composition document (scenes, tracks, clips, captions) starts empty and is built up afterward through the studio.* director tools. thumbnail_key is server-owned: s…Can change things
  • studio_project_readRead one studio_project by id.Read-only
  • studio_project_listList your studio_project rows (newest first).Read-only

And 120 more tools. The full list is in the agent view.

Audit history

  1. Nov 13Passed

What we sent

Every request in this audit, with the answer and how long it took. We never send credentials and never call a tool.

RequestAnswerTime
initializeHTTP 2002260 ms
initializedHTTP 20246 ms
tools/listHTTP 2001931 ms
resources/listHTTP 200378 ms
prompts/listHTTP 200309 ms
unknown-methodHTTP 20035 ms

Run this server, or disagree with the result?

Fix the issue and it shows in the next weekly audit, or email us to ask for a re-audit or to dispute a finding. Read how we audit for what each check means.