We're live in beta — earn up to 12,000 credits by signing up today. Get started

Ascora MCP
for AI agents

FloConnector is a hosted Ascora MCP server. Securely connect Claude, ChatGPT and other AI clients to Ascora. Ask in plain English; it runs the 46 tools for you, behind one endpoint, with you deciding what it can touch.

Beta. Connect it today and every tool below is live. It is new enough that we are still testing it against real Ascora accounts, so tell us if something looks off and we will fix it fast.

Built in-house. We wrote this connector ourselves and call Ascora directly, with no third party in the path. Nothing in a request or response is retained by anyone but Ascora.

Single connection. One Ascora organisation per workspace. Connect another in a separate workspace.

Tools

Everything your AI can do in Ascora

46 tools your agent gets the moment Ascora is connected.

46 tools

  • create_enquiry write

    Create an enquiry

    Create an enquiry (a lead) in Ascora from contact details and a description of the work. Write-only: enquiries cannot be listed or read back through the API, so keep the returned entityId.

  • list_customers read

    List customers

    Search customers. FilterText covers the company name, customer number, email, phone, mobile, billing customer name and contact names; PhoneNumber searches both phone fields. Paged.

  • get_customer read

    Get a customer

    Get one customer by GUID, with both addresses, on-hold flags, customer type, lead source, billing customer and assigned user.

  • create_customer write

    Create a customer

    Create a customer. Ascora has no duplicate check, so search first. customerType and leadSource names that do not exist are CREATED, not rejected; prefer ids.

  • update_customer write

    Update a customer

    Update an existing customer by GUID. Send only the fields to change — everything else is preserved. The same create-on-miss rule applies to customerType and leadSource names.

  • list_contacts read

    List contacts

    Search contacts across every customer. FilterText is a contains-match over name, email, phone and mobile; PhoneNumber is an exact match with spaces ignored. Paged.

  • list_customer_contacts read

    List a customer's contacts

    List every contact attached to one customer, by customer GUID, including each contact's role.

  • get_contact read

    Get a contact

    Get one contact by GUID, with the customer it belongs to and its role.

  • create_contact write

    Create a contact

    Add a contact to a customer. A contactRole name that does not exist is CREATED in Ascora, not rejected.

  • update_contact write

    Update a contact

    Update an existing contact by GUID. Send only the fields to change — everything else is preserved.

  • list_quotes read

    List quotes

    Search quotes by text, status, job type, assigned user, customer name or created-date range. Status DEFAULTS TO OPEN (in progress or sent); pass ALL for everything, including won and lost. Paged.

  • get_quote read

    Get a quote

    Get one quote by NUMBER (Q57, or a section like Q1234.01): totals, dates, status, pricing method, customers and address. Does NOT include the line items; no endpoint does.

  • create_quote write

    Create a quote

    Create a quote for a site customer, optionally with all its supplies, kits, labour and write-ins in the same call, or as a SECTIONS quote with childQuotes each carrying their own items. Returns the new quoteNumber. WARNING: a failure can still have created the quote, so check ascora_list_quotes before retrying.

  • add_quote_supplies write

    Add supplies to a quote

    Add price-list supplies to a quote or section by quote number, from supplyIds with quantities. Appends every time; the same id twice is two lines. Nothing reads the lines back, so check the totals with ascora_get_quote.

  • add_quote_kits write

    Add kits to a quote

    Add kits to a quote or section by quote number, from kitIds with quantities. Appends every time. Nothing reads the lines back.

  • add_quote_labour write

    Add labour to a quote

    Add labour to a quote or section by quote number, as labour role ids (from ascora_list_labour_roles) with hours. Appends every time. KNOWN VENDOR FAULT (2026-09-02): Ascora's API rejects every labour role with a database error; when it fails, add the labour as a write-in with ascora_add_quote_write_ins at the role's hourly rate instead.

  • add_quote_write_ins write

    Add write-in lines to a quote

    Add one-off lines that are not in the price list to a quote or section, each with description, prices and quantity. Appends every time. There is no per-line delete, and the only way to remove one takes every other write-in with it.

  • add_quote_sections write

    Add sections to a quote

    Add named child sections to an existing quote. Returns only success: the new section numbers (Q80.01, Q80.02…) are not returned and must be inferred from displayOrder before adding items to them.

  • clear_quote_items write

    Clear items from a quote

    Remove all supplies, all kits and/or all labour from one TOP-LEVEL quote. WARNING: removeSupplies ALSO DELETES EVERY WRITE-IN on the quote, which cannot be undone or read back first. Does not work on a SECTIONS quote or its sections (Ascora reports success and removes nothing), so the connector refuses those; delete and re-add the section instead.

  • update_quote_status write

    Update a quote's status

    Set a quote to IN-PROGRESS, SENT-TO-CUSTOMER, LOST (with a reason) or WON. WON converts the quote into a job; Ascora reports the new job in the message text, so follow up with ascora_list_jobs to get its number.

  • delete_quote write

    Delete a quote or section

    Delete a whole quote, or one section by its full number (Q93.02). Only quotes still In Progress can be deleted; anything sent, won or lost is refused with INVALID-STATUS. Deleting a section renumbers the ones after it.

  • list_labour_roles read

    List labour roles

    List every labour role with its hourly rate ex tax. The labourRoleId is what ascora_add_quote_labour takes. Small and stable; cached briefly.

  • list_standard_sections read

    List standard sections

    List the account's standard section names available to add to a quote or job, with display order. Names only, no ids.

  • list_standard_stages read

    List standard stages

    List the account's standard stage names available to add to a quote or job, with display order. Names only, no ids.

  • list_jobs read

    List jobs

    Search jobs by text, status filter, job type, assigned user, customer name or created-date range. Status DEFAULTS TO OPEN jobs; pass ALL for everything. Paged.

  • get_job read

    Get a job

    Get one job by NUMBER (J112): status, dates, totals, pricing method, work undertaken, customers, address and coordinates. Line items are not exposed anywhere.

  • create_job write

    Create a job

    Create a job directly for a site customer, without a quote. The job starts as New and CANNOT be updated, progressed or given line items through the API afterwards; for a job with items, create a quote and mark it WON instead.

  • get_job_labour read

    Get a job's labour

    List every labour line on a job by job number: role, hours, charge-out rate, totals, who did it, whether it is chargeable and whether invoiced. The chargeable view; see ascora_get_job_timesheets for the payroll view of the same hours.

  • get_job_timesheets read

    Get a job's timesheets

    List every timesheet entry clocked against a job by job number: person, start and end, hours, cost and pay rates, meal break, and whether sent to payroll. The payroll view of the same hours as ascora_get_job_labour; do not add the two together.

  • list_supplies read

    List supplies

    Search the price list for supplies (materials and services) with cost and sell prices, category, favourite flag and default supplier. The supplyId is what ascora_add_quote_supplies takes. Paged; filter rather than enumerate.

  • list_kits read

    List kits

    Search kits (a bundle of supplies and labour priced as one line) with sell prices and pricing method. The kitId is what ascora_add_quote_kits takes. A kit's contents are not exposed. Paged.

  • list_categories read

    List inventory categories

    List the categories that segment supplies and kits. Ascora has two independent category axes (1 and 2), each with one level of sub-categories linked by parentCategoryId. Paged.

  • list_suppliers read

    List suppliers

    Search suppliers by partial name or number, or by EXACT business number (ABN) with spaces ignored, which is the one lookup that cannot match the wrong supplier. Paged.

  • get_supplier read

    Get a supplier

    Get one supplier by GUID, with contact details, both addresses, expense account and notes.

  • create_supplier write

    Create a supplier

    Create a supplier. Ascora has no duplicate check, so search by business number first.

  • update_supplier write

    Update a supplier

    Update an existing supplier by GUID. Send only the fields to change — everything else is preserved.

  • list_supplier_invoices read

    List supplier invoices

    Search supplier invoices and credit notes by supplier name, tracking (invoice) number, invoice-date range, or only those not yet sent to accounting. Each result includes its line items. Paged.

  • get_supplier_invoice read

    Get a supplier invoice

    Get one supplier invoice or credit note by GUID, with its supplier, dates, type, totals, sent-to-accounts flag and line items.

  • create_supplier_invoice write

    Create a supplier invoice

    Record a supplier invoice or credit note (type CREDIT) with its lines, priced by line total ex tax. The supplier is matched by id or name. Returns the new supplierInvoiceId.

  • mark_supplier_invoices_sent write

    Mark supplier invoices as sent to accounting

    Mark supplier invoices, by GUID, as pushed to the accounting package. IRREVERSIBLE: they drop out of the unsent filter for good. Call it only for invoices the downstream system has confirmed, never on failure.

  • list_invoices_to_send read

    List customer invoices awaiting export

    List customer invoices dated before a cutoff that have NOT yet been marked as sent to the accounting package, with lines, job, and billing details. This is the only way to read customer invoices; once marked sent they are gone from the API. Unpaginated.

  • mark_invoices_sent write

    Mark customer invoices as sent to accounting

    Mark customer invoices, by GUID, as pushed to the accounting package. IRREVERSIBLE and it makes them unreadable through the API for good. Call it only for invoices the downstream system has confirmed, never on failure.

  • list_payments_to_send read

    List payments awaiting export

    List customer payments dated before a cutoff that have not yet been marked as sent to the accounting package. Payments may only appear once their invoice has been marked sent, so export invoices first. Unpaginated.

  • create_payment write

    Record a payment

    Record a payment against a customer invoice by invoice NUMBER (e.g. I3083), with amount, date and a payment method name that already exists in Ascora. NOT idempotent: a retry records a second payment. Refused if it exceeds the balance.

  • mark_payments_sent write

    Mark payments as sent to accounting

    Mark payments, by GUID, as pushed to the accounting package. IRREVERSIBLE: they drop out of ascora_list_payments_to_send for good. Call it only for payments the downstream system has confirmed.

  • create_note write

    Add a note

    Add a text note to an enquiry, job, quotation, invoice or customer. Notes cannot be read back or deleted through the API, so do not retry on failure without checking in Ascora first.

Questions, answered

How do I connect Ascora to Claude?

Create a FloConnector workspace, connect Ascora once from the dashboard, then add your FloConnector endpoint to Claude as a custom connector. Claude handles the sign-in prompt; there is no server to host and no code to write. The same endpoint works in ChatGPT.

What can Claude do in Ascora?

46 tools: 23 that read Ascora data and 23 that change it. Every tool is listed on this page, so you can see exactly what the model is able to call before you connect.

Does the AI see my Ascora password or API keys?

No. FloConnector holds the Ascora credential, encrypted before it is stored, and calls Ascora on the model's behalf. The AI client only ever sees the tools and their results, never the credential behind them.

Can I stop it changing anything in Ascora?

Yes. Each connection is exposed through a profile, and a profile carries only the tools you switch on. Leave the 23 write tools off and the connection is read-only.

Does this work with ChatGPT as well as Claude?

Yes. The endpoint is a standard hosted MCP server, so it works in any client that supports MCP connectors, including Claude and ChatGPT.