Horizontal

WorksFinance and payments

Ascora MCP by usefulapi

Read customers, quotes, jobs, bookings and price list; create quotes, jobs and bookings in Ascora.

Addresshttps://ascora.usefulapi.io/mcp
Claude Codeclaude mcp add --transport http ascora https://ascora.usefulapi.io/mcp
For Cursor and other clients
{
  "mcpServers": {
    "ascora": {
      "type": "http",
      "url": "https://ascora.usefulapi.io/mcp"
    }
  }
}

Watch out

Has tools that change things: 3 of them

The server itself marks these tools as deleting or overwriting data (destructiveHint): have the agent ask you before it calls them.

Test
Works: Handshake succeeded
Tools
28 tools
Handshake
858 ms
Transport
streamable-http · 2025-06-18
Tested
6 November 2026
Registry name
io.usefulapi/ascora v1.0.2
Listed
5 November 2026
Updated
5 November 2026
Website
usefulapi.io/ascora/
Source
github.com/m190/usefulapi-mcp
The last 1 tests
WhenResultTime
2026-11-06 12:35 UTCHandshake succeeded858 ms

The 28 tools it listed

"Read only" and "Changes data" are the server's own marks. Underlined parameters are required.

  1. ascora_add_note

    Add note

    WRITE: add a note to an enquiry, job, quote, invoice or customer (the entity must already exist). Notes cannot be edited or removed through this server, and every call adds another note. POST /Notes/Note.

    entity_type entity_id content created_by_name

  2. ascora_convert_quote_to_jobChanges data

    Convert quote to job

    WRITE: convert a quote into a Job (what Convert to Job does in Ascora): supplies, labour, notes, bookings and attachments carry over and the quote is marked converted. Never forces a new job: a variation quote is added onto its original job, a quote whose job still exists is reconnected to it, and a quote already converted is refused with a message naming the existing job. Specify the parent quote number, not a section. POST /Quotes/ConvertToJob.

    quote_number

  3. ascora_create_bookingChanges data

    Create booking

    WRITE: schedule staff on a job or a quote (give exactly one of job_number / quote_number). One booking is created per staff member and the job or quote moves to Booked; the bookings show on the Scheduler and the staff mobile apps, and Ascora's own reminder settings may notify the customer or staff. Repeating the identical request returns the existing booking. By default a clash with another booking or leave refuses the whole request (reject_conflicts). POST /Bookings/Booking.

    job_number quote_number users start_time end_time duration_minutes notes time_window reject_conflicts

  4. ascora_create_customer

    Create customer

    WRITE: create a new customer (site or billing) in Ascora. Always creates a new record (it never updates an existing customer), so search with ascora_list_customers first to avoid duplicates. A customer type or lead source name that does not exist is created. POST /Customers/Customer.

    company_name first_name last_name email phone mobile street_line1 street_line2 street_suburb street_state street_postcode street_country customer_type lead_source custom_fields

  5. ascora_create_enquiry

    Create enquiry (lead)

    WRITE: create a new enquiry (lead) in Ascora. Every call creates another enquiry (not idempotent; Ascora allows 500 enquiries an hour per company), so do not repeat it. Needs at least a name, company, email, phone or mobile. POST /Enquiry.

    first_name last_name company_name email mobile phone address_line1 address_line2 suburb state postcode country description lead_source custom_fields

  6. ascora_create_job

    Create job

    WRITE: create a new job for a site customer (it never updates an existing job). Every call creates another job; add work with a quote or in Ascora. The job is not booked and nothing is sent to the customer. POST /Jobs/Job.

    site_customer_id site_customer_name billing_customer_id job_name description job_type_name pricing_method purchase_order_number client_order_number

  7. ascora_create_quote

    Create quote

    WRITE: create a new quote (status In Progress; it is NOT sent to the customer) for a site customer, optionally with supplies, kits and labour from the price list. Ids that Ascora cannot find are skipped silently when creating, so check the totals in the reply. Every call creates another quote. POST /Quotes/Quote.

    site_customer_id site_customer_name billing_customer_id quote_name description job_type_name pricing_method purchase_order_number client_order_number supplies kits labour

  8. ascora_get_bookingRead only

    Get booking

    One booking by id: type, times (local and UTC), staff member, job/quote/activity, customers, address, notes, arrival window, rates and reminder flags. GET /Bookings/Booking/{bookingId}.

    booking_id

  9. ascora_get_customerRead only

    Get customer

    One Ascora customer by id (GUID from ascora_list_customers), including custom fields. GET /Customers/Customer/{id}.

    customer_id

  10. ascora_get_jobRead only

    Get job

    One job by its full number (e.g. J112): status, dates, totals, pricing method, job type, customers, secondary status and pipeline phase. A deleted job reads as not found. GET /Jobs/Job/{jobNumber}.

    job_number

  11. ascora_get_job_labourRead only

    Get job labour

    Labour lines on a job: role, hours, hourly rate, totals, staff member, chargeable and invoiced flags. GET /Jobs/JobLabour/{jobNumber}.

    job_number

  12. ascora_get_job_timesheetsRead only

    Get job timesheets

    Timesheet entries on a job: staff member, start/end, hours, meal break and payroll-sent flag (pay and cost rates are not returned). GET /Jobs/JobTimesheets/{jobNumber}.

    job_number

  13. ascora_get_quoteRead only

    Get quote

    One quote by its full number (e.g. Q57): status, dates, totals, pricing method, addresses, job type, customers and custom fields. GET /Quotes/Quote/{quoteNumber}.

    quote_number

  14. ascora_list_activity_typesRead only

    List activity types

    Activity types that non-job bookings (training, leave-style activities, etc.) can be made with. GET /Bookings/ActivityTypes.

  15. ascora_list_bookingsRead only

    List bookings (schedule)

    Search the schedule: bookings of jobs, quotes and activities with staff member, start/end, notes, arrival window and the job or quote they belong to. Archived bookings are excluded unless include_archived. GET /Bookings/Bookings.

    start_date end_date modified_since booking_type job_number quote_number customer_id customer_name user team_name job_status quote_status filter_text include_archived sort_by sort_descending page page_size

  16. ascora_list_categoriesRead only

    List inventory categories

    Inventory categories (Category 1 or 2, top-level or sub-categories) used to filter supplies and kits. GET /Inventory/Categories.

    filter_text category_number parent_only page page_size

  17. ascora_list_contactsRead only

    List contacts

    Search contacts across all customers by name, email or phone. GET /Customers/Contacts.

    filter_text phone_number page page_size

  18. ascora_list_customer_contactsRead only

    List contacts of a customer

    All contacts of one customer, with role and default-contact flag. GET /Customers/GetContactsForCustomer/{customerId}.

    customer_id page page_size

  19. ascora_list_customersRead only

    List customers

    Search Ascora customers (sites and billing customers): id, number, name, contact, email, phone, addresses, on-hold flags, customer type, lead source, billing customer and assigned user. GET /Customers/Customers.

    filter_text phone_number customer_type lead_source assigned_user site_billing_type page page_size

  20. ascora_list_jobsRead only

    List jobs

    Search jobs: number, name, status, totals, pricing method, job type, site/billing customer, secondary status and pipeline phase. Status defaults to OPEN when omitted. GET /Jobs/Jobs.

    filter_text job_status job_type assigned_user customer_name include_child_jobs start_date end_date page page_size

  21. ascora_list_kitsRead only

    List kits

    Search kits (bundles of supplies and labour) with part number, description, markup, sell price and pricing method. GET /Inventory/Kits.

    filter_text favourite_only category_one_id category_two_id page page_size

  22. ascora_list_labour_rolesRead only

    List labour roles

    Labour roles with their hourly rate ex tax, ordered by name. Use the role id to add labour to a quote. GET /Quotes/LabourRoles.

  23. ascora_list_quotesRead only

    List quotes

    Search quotes: number, name, status, date, totals ex/inc tax, pricing method, job type and site/billing customer. Status defaults to OPEN (in progress or sent) when omitted. GET /Quotes/Quotes.

    filter_text quote_status job_type assigned_user customer_name start_date end_date page page_size

  24. ascora_list_supplier_invoicesRead only

    List supplier invoices

    Search supplier invoices and credit notes: supplier, dates, tracking number, lines and totals. GET /SupplierInvoices/SupplierInvoices.

    supplier_name tracking_number to_be_sent_to_accounting invoice_date_start invoice_date_end page page_size

  25. ascora_list_suppliersRead only

    List suppliers

    Search suppliers by name, supplier number or exact business number (ABN). GET /Suppliers/Suppliers.

    supplier_name supplier_number business_number page page_size

  26. ascora_list_suppliesRead only

    List supplies (price list)

    Search the inventory price list: materials and services with part number, description, cost, sell price ex/inc tax, supplier, categories and reorder flags. Use the supply id to add items to quotes. GET /Inventory/Supplies.

    filter_text favourite_only category_one_id category_two_id page page_size

  27. ascora_list_usersRead only

    List staff users

    Staff users of the Ascora company (archived users excluded): id, name, email, mobile, job title, team, scheduler group, licence and access flags. Pay rates are not returned. GET /Users/Users.

    first_name last_name team_name scheduler_group_name filter_text page page_size

  28. ascora_update_quote_statusChanges data

    Update quote status

    WRITE: change a quote's status to IN-PROGRESS, SENT-TO-CUSTOMER, LOST or WON. WON converts the quote into a new Job (the same as ascora_convert_quote_to_job; a second WON returns the existing job). Ascora's reference documents only a status change, not an email to the customer. POST /Quotes/UpdateStatus.

    quote_number status reason_for_loss

Is this yours?

Claim it to hear the moment it breaks, correct this page and add your own ways to use it.

A test is the handshake and the tool list: no tool was called. Names and descriptions are as listed by whoever registered the server; we haven't checked them.

Back to Tested MCP Servers