Ascora MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.1.4Updated Nov 7, 2026

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

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableProductivity & WorkflowBusiness & Commerce

Overview

Ascora MCP by usefulapi's hosted MCP server (ascora.usefulapi.io), published by usefulapi.io; no sign-in required; Streamable HTTP; 28 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Publisher
usefulapi.io
Endpoint
ascora.usefulapi.io
Last checked

Installation

In SourceWeft

  1. Open Ascora MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Fascora/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "ascora-by-usefulapi": {
      "type": "http",
      "url": "https://ascora.usefulapi.io/mcp"
    }
  }
}

README

Ascora MCP by usefulapi

Use your Ascora account from Claude, Cursor, or any MCP client. Read customers, quotes, jobs, bookings, staff and the price list, and make labeled writes such as quotes, jobs and bookings. Hosted, no local install: connect with your own credentials.

Live endpoint: https://ascora.usefulapi.io/mcp · Homepage: https://usefulapi.io

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://ascora.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http ascora https://ascora.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "ascora": {      "url": "https://ascora.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your Ascora credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/ascora/

On first connect you provide an Ascora API key (Administration → API Settings → Generate New API Key). The server validates it and stores it per user. No keys go in config files.

Tools

ToolTypeWhat it does
ascora_list_customersreadList customers
ascora_get_customerreadGet customer
ascora_list_contactsreadList contacts
ascora_list_customer_contactsreadList contacts of a customer
ascora_list_suppliesreadList supplies (price list)
ascora_list_kitsreadList kits
ascora_list_categoriesreadList inventory categories
ascora_list_labour_rolesreadList labour roles
ascora_list_quotesreadList quotes
ascora_get_quotereadGet quote
ascora_list_jobsreadList jobs
ascora_get_jobreadGet job
ascora_get_job_labourreadGet job labour
ascora_get_job_timesheetsreadGet job timesheets
ascora_list_bookingsreadList bookings (schedule)
ascora_get_bookingreadGet booking
ascora_list_activity_typesreadList activity types
ascora_list_usersreadList staff users
ascora_list_suppliersreadList suppliers
ascora_list_supplier_invoicesreadList supplier invoices
ascora_create_enquirywriteCreate enquiry (lead)
ascora_create_customerwriteCreate customer
ascora_add_notewriteAdd note
ascora_create_quotewriteCreate quote
ascora_update_quote_statuswriteUpdate quote status
ascora_convert_quote_to_jobwriteConvert quote to job
ascora_create_jobwriteCreate job
ascora_create_bookingwriteCreate booking
ascora_usage_statusmetaUsage status (free-tier meter)
ascora_request_featuremetaRequest a missing feature
ascora_upgrademetaUpgrade to Pro or Pro+
ascora_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro (per user)$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with ascora_upgrade (it returns a Stripe Checkout link). Cancel any time with ascora_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running ascora_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT — see LICENSE. Documentation only; the server is hosted.

Source: servers/ascora/README.md at commit 92e9424

Tools

28

ascora_list_customers

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.

Parameterspagepage_sizefilter_textlead_sourcephone_numberassigned_usercustomer_typesite_billing_type

ascora_get_customer

Get customer

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

Parameterscustomer_idrequired

ascora_list_contacts

List contacts

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

Parameterspagepage_sizefilter_textphone_number

ascora_list_customer_contacts

List contacts of a customer

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

Parameterspagepage_sizecustomer_idrequired

ascora_list_supplies

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.

Parameterspagepage_sizefilter_textfavourite_onlycategory_one_idcategory_two_id

ascora_list_kits

List kits

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

Parameterspagepage_sizefilter_textfavourite_onlycategory_one_idcategory_two_id

ascora_list_categories

List inventory categories

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

Parameterspagepage_sizefilter_textparent_onlycategory_number

ascora_list_labour_roles

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.

Takes no parameters.

ascora_list_quotes

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.

Parameterspageend_datejob_typepage_sizestart_datefilter_textquote_statusassigned_usercustomer_name

ascora_get_quote

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}.

Parametersquote_numberrequired

ascora_list_jobs

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.

Parameterspageend_datejob_typepage_sizejob_statusstart_datefilter_textassigned_usercustomer_nameinclude_child_jobs

ascora_get_job

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}.

Parametersjob_numberrequired

ascora_get_job_labour

Get job labour

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

Parametersjob_numberrequired

ascora_get_job_timesheets

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}.

Parametersjob_numberrequired

ascora_list_bookings

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.

Parameterspageusersort_byend_datepage_sizeteam_namejob_numberjob_statusstart_datecustomer_idfilter_textbooking_type+6 more

ascora_get_booking

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}.

Parametersbooking_idrequired

ascora_list_activity_types

List activity types

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

Takes no parameters.

ascora_list_users

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.

Parameterspagelast_namepage_sizeteam_namefirst_namefilter_textscheduler_group_name

ascora_list_suppliers

List suppliers

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

Parameterspagepage_sizesupplier_namebusiness_numbersupplier_number

ascora_list_supplier_invoices

List supplier invoices

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

Parameterspagepage_sizesupplier_nametracking_numberinvoice_date_endinvoice_date_startto_be_sent_to_accounting

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.

Parametersemailphonestatemobilesuburbcountrypostcodelast_namefirst_namedescriptionlead_sourcecompany_name+3 more

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.

Parametersemailphonemobilelast_namefirst_namelead_sourcecompany_namestreet_line1street_line2street_statecustom_fieldscustomer_type+3 more

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.

Parameterscontentrequiredentity_idrequiredentity_typerequiredcreated_by_name

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.

Parameterskitslaboursuppliesquote_namedescriptionjob_type_namepricing_methodsite_customer_idsite_customer_namebilling_customer_idclient_order_numberpurchase_order_number

ascora_update_quote_status

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.

Parametersstatusrequiredquote_numberrequiredreason_for_loss

ascora_convert_quote_to_job

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.

Parametersquote_numberrequired

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.

Parametersjob_namedescriptionjob_type_namepricing_methodsite_customer_idsite_customer_namebilling_customer_idclient_order_numberpurchase_order_number

ascora_create_booking

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.

Parametersnotesusersrequiredend_timejob_numberstart_timerequiredtime_windowquote_numberduration_minutesreject_conflicts

Version history

3
  1. v1.1.4LatestNov 7, 2026
  2. v1.0.2Nov 5, 2026
  3. v1.0.1Nov 5, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations