DevelopersMCP over streamable HTTP

API reference

Everything an assistant can do with an Avrosh account, with the exact text the model reads before it decides to call. No account needed to read this page.

What this is

Avrosh speaks MCP over streamable HTTP. Point an MCP client — Claude, or anything else that speaks the protocol — at the URL below, and it can read your businesses, their calls and transcripts, and create or change a business.

https://us.avrosh.com/mcp

It is JSON-RPC 2.0 in a POST body. If you are wiring it by hand rather than through a client, initialize, tools/list and tools/call are the three methods you need.

Authentication

Every request carries Authorization: Bearer avk_…. Create a key in the Avrosh dashboard under Docs; it is shown once, because only its hash is stored.

One key reaches every business on the account that made it, and no others. There are no scopes to configure and nothing to switch on — a connected assistant receives the whole toolset. What bounds it is whose account the key belongs to, which is enforced in the database rather than by a permission anybody sets.

curl https://us.avrosh.com/mcp \
  -H "Authorization: Bearer $AVROSH_KEY"

Tools

Six of them. Reads are safe to call freely; the two that write are marked, and both refuse while a business is in free mode.

list_businessesreads

List every business on this Avrosh account, with its id, name, timezone, currency, plan status and whether it has a live phone number.

get_businessreads

Full configuration of one business: language, timezone, currency, what the AI is allowed to do, and its phone numbers.

list_callsreads

The 100 most recent phone calls for one business, newest first: who the other party was, direction, status, duration, and a one-line summary when the AI wrote one.

get_transcriptreads

What was actually said on one call, in order.

create_businesswrites

Create a new business on this account.

update_businesswrites

Change a business's settings: its name, default language, timezone, what the AI handles on the phone (call_types), or what it says about being an AI when a caller asks (ai_disclosure).

list_knowledgereads

Every knowledge chapter this business has written about itself, with the full text of each - this is what the AI is grounded on when a customer asks a factual question.

add_knowledge_chapterwrites

Write one NEW chapter of knowledge: a title and a body of plain text, in the operator's own words - opening hours, what is and is not offered, policies, anything a customer would phone to ask.

update_knowledge_chapterwrites

Rewrite one existing chapter: its title, its body, or both.

delete_knowledge_chapterwrites

Remove one chapter so the AI stops answering from it.

restore_knowledge_chapterwrites

Bring back a chapter deleted in the last 7 days, exactly as it was.

list_menu_itemsreads

Every item on this business's menu or product list - category, name, description, price, availability, dietary and allergen tags, photos.

create_menu_itemwrites

Add one item to the menu or product list.

update_menu_itemwrites

Change one menu item: name, price, category, description, dietary or allergen tags.

set_menu_item_availabilitywrites

Mark one item sold out (false) or back on sale (true).

delete_menu_itemwrites

Remove one item from the menu.

restore_menu_itemwrites

Bring back an item deleted in the last 7 days, photos and all.

remove_menu_item_photowrites

Remove one photo from an item's gallery, by its URL as returned in list_menu_items.

set_menu_item_thumbnailwrites

Pick which gallery photo is the item's thumbnail - the one shown first on cards.

list_bookable_typesreads

Every bookable type this business sells - rooms, services, or rentable units - with capacity, prices, schedule kind ('day' = per-night, 'time' = appointment slots), slot configuration and weekly hours.

create_bookable_typewrites

Add one bookable type.

update_bookable_typewrites

Change one bookable type: name, prices, capacity, description, amenities, or the deposit asked to confirm a booking.

set_bookable_type_schedulewrites

Configure how one type is booked: kind ('day' per-night or 'time' appointment slots), slot length, service duration, turnaround buffer, minimum lead time, and weekly open hours.

delete_bookable_typewrites

Remove one bookable type from sale.

restore_bookable_typewrites

Bring back a type deleted in the last 7 days, exactly as it was.

list_bookingsreads

Bookings for one business, pending holds first.

get_bookingreads

One booking in full, by id: customer, dates or slot, assigned unit or team member, payment state, extras and the running total.

confirm_bookingwrites

Confirm a PENDING hold - the step that turns a hold into a real booking and stops its expiry clock.

cancel_bookingwrites

Cancel a pending or confirmed booking.

list_work_queuereads

Everything still OPEN for one business - orders waiting to be accepted or finished, and service requests waiting to be picked up or done.

accept_orderwrites

Mark one pending order as accepted - the kitchen or counter has it.

finish_orderwrites

Mark one accepted order as done - delivered or handed over.

accept_requestwrites

Mark one open service request as accepted - somebody is on it.

finish_requestwrites

Mark one accepted service request as done.

assign_requestwrites

Hand one open or accepted service request to a specific team member, or send staff_id null to put it back in the shared pool.

list_customersreads

The people this business has on record: name, email, phone, the operator's private note, booking count, last seen.

get_customerreads

One customer in full, by id.

export_customer_datareads

Everything held about one person, assembled for a data-subject access request: their contact record, bookings, orders and conversation references, across every branch of a group.

erase_customerwrites

IRREVERSIBLY strip one person's identity from the records, GROUP-WIDE - every branch, every booking they are on (the business records survive, the person is scrubbed off them).

Errors

A tool that fails for a business reason returns a normal result with isError: true and a readable message, not a JSON-RPC error — so a client can relay it instead of dropping the connection. Protocol errors stay protocol errors.

invalid_api_key

HTTP 401. The key is unknown or revoked. Not retryable - make a new key in the dashboard under Docs.

business_deleted

The business was deleted and is in its recovery window. Call list_businesses for the current set.

free_readonly

The business is in free mode. Reads work; changes do not, until the account is activated. This is the same refusal the operator gets in their own browser.

business_exists

A business with that name is already on the account. Returned instead of silently creating a duplicate, because a timed-out create that gets retried would otherwise make two.

no_changes

update_business was called with no fields to change. Send at least one.

Not here yet

Placing a call. Deliberately absent rather than unbuilt. An assistant that can dial is an assistant that a document it happens to be reading can talk into dialling, so it needs a number typed by a person, a per-day ceiling, and a consent record of its own before it ships. We would rather say that than ship it and hope.

Assigning a phone number and knowledge base editing are next, in that order.