# muveya > Supply, inventory and custody operations for dental clinics. ## Guides ### Get started - [Introduction](https://muveya.com/docs/en/introduction.md): What muveya is, what it is not, who uses it and where each part of the product lives - [Quickstart](https://muveya.com/docs/en/quickstart.md): Run a new dental clinic end to end: setup, first stock, first order, delivery, receipt and the consumption report - [Concepts](https://muveya.com/docs/en/concepts.md): The model behind every muveya screen: dental clinic, locations, warehouses, supplies, boxes, the ledger, orders, approvals, custody and permissions - [Glossary](https://muveya.com/docs/en/glossary.md): Every muveya term, status, movement, role, permission group and screen, with its code identifier and its console label in Spanish and Portuguese ### Account and team - [Sign in and create your account](https://muveya.com/docs/en/account/sign-in.md): Create a dental clinic, verify your email, sign in with a password or Google, choose the clinic you work in and accept an invitation. - [Account security](https://muveya.com/docs/en/account/security.md): Protect your personal account with an authenticator app, understand what the second factor protects today and what to do if you lose it. - [Team](https://muveya.com/docs/en/account/team.md): List the people in your dental clinic, invite new ones, and change their role, permissions and location access, or suspend, reactivate and remove them. - [Roles and permissions](https://muveya.com/docs/en/account/roles-and-permissions.md): What each role includes, the complete permission catalog, which console areas each permission unlocks, how location and warehouse access narrows it, and what muveya hides without permission. ### Locations and warehouses - [Locations](https://muveya.com/docs/en/locations/clinics.md): Create, rename, activate and deactivate the locations of your dental clinic account, and understand what depends on each one. - [Warehouses](https://muveya.com/docs/en/locations/warehouses.md): Create central and express warehouses, activate or deactivate them, and understand how orders, inventory and deliveries use them. - [Rooms and areas](https://muveya.com/docs/en/locations/destinations.md): Set up the treatment rooms and areas of each location, decide whether they count their own stock, and record where supplies were used. ### Catalog - [Catalog items](https://muveya.com/docs/en/catalog/items.md): Search, create and maintain the supplies of your dental clinic, and understand the draft, active and inactive statuses. - [Categories](https://muveya.com/docs/en/catalog/categories.md): Create the categories that group your supplies, and learn what categories are used for and what they cannot do yet. - [Presentations and codes](https://muveya.com/docs/en/catalog/presentations-and-codes.md): Describe the packages a supply is bought in, attach the codes printed on them, and correct, move or retire both safely. - [Costs](https://muveya.com/docs/en/catalog/costs.md): Record what a supply costs, understand cost states and history, and control who can see costs and how orders use them. - [Import and export](https://muveya.com/docs/en/catalog/import-export.md): Create many supplies at once from a CSV file, follow the import, fix rejected rows, and export your catalog. ### Inventory - [Inventory overview](https://muveya.com/docs/en/inventory/overview.md): Understand the Stock screen, box balances and statuses, the immutable stock ledger and who can do what with inventory - [Receive stock](https://muveya.com/docs/en/inventory/receive.md): Receive a delivery into a warehouse as a new labeled box, with the lot, serial numbers and expiry date the supply requires - [Boxes and labels](https://muveya.com/docs/en/inventory/boxes.md): Find a box by its code, read its details and history, print its label, separate part of it and take it out of use - [Record use and move boxes](https://muveya.com/docs/en/inventory/use-and-moves.md): Record what leaves a box and where it went, move boxes between warehouses, review usage by room and attribute exits later without discounting twice - [Stock corrections](https://muveya.com/docs/en/inventory/corrections.md): Correct what a box holds against the shelf, and review, approve, reject or withdraw the corrections that need a second person - [Physical counts](https://muveya.com/docs/en/inventory/counts.md): Count what is really on the shelf, follow what is due and in progress, run warehouse count campaigns and turn differences into corrections - [Replenishment and stock alerts](https://muveya.com/docs/en/inventory/replenishment-and-alerts.md): Set a minimum for each supply at each warehouse, read what needs replenishing and follow low-stock and expiry alerts - [Lot recall](https://muveya.com/docs/en/inventory/lot-recall.md): Find every box of a lot wherever it is, trace what was used or dispatched, and take the whole lot out of use in one step ### Orders and approvals - [Create and track orders](https://muveya.com/docs/en/orders/create-and-track.md): Request supplies for one of your locations, submit the order and follow it from draft to closed. - [Approve or reject orders](https://muveya.com/docs/en/orders/approvals.md): Find the orders waiting for your decision, approve or reject a stage, and read the decision history. - [Approval policy](https://muveya.com/docs/en/orders/approval-policy.md): Decide which submitted orders need approval and how many people must approve them, and publish those rules as a new version. ### Deliveries - [Deliveries overview](https://muveya.com/docs/en/deliveries/overview.md): Understand the Deliveries screen, the custody steps from an approved order to a closed one, and who may take each step. - [Pick and dispatch an order](https://muveya.com/docs/en/deliveries/picking.md): Scan the boxes reserved for an order in FEFO order, split boxes that hold more than the order needs, and dispatch them. - [Confirm delivery, receive and close](https://muveya.com/docs/en/deliveries/delivery-and-receipt.md): Confirm the handoff of a dispatched order or report a problem, accept or dispute each delivered box, and close the order. - [Custody history](https://muveya.com/docs/en/deliveries/custody-history.md): Follow one order's boxes, stock movements and delivery, reception and closure records, and read the same history from the API. ### Reports - [Consumption report](https://muveya.com/docs/en/reports/consumption.md): Read what each supply consumed, in its own unit, by day or by week, and understand what the figures do and do not cover. - [Management analytics](https://muveya.com/docs/en/reports/management-analytics.md): Every management metric muveya computes, what each one means, and where to read it: console, public API, MCP or CSV export. ### WhatsApp - [WhatsApp channel](https://muveya.com/docs/en/whatsapp/overview.md): What the muveya WhatsApp channel does, how a member gets linked today, and the rules that keep it safe. - [WhatsApp operations](https://muveya.com/docs/en/whatsapp/operations.md): Every conversation the WhatsApp channel supports: the menu, each prompt and card, the limits, and every reply you can get. ### Android app - [Android app](https://muveya.com/docs/en/android/overview.md): What the muveya Android app does, who it is for, how to get it today, and how to sign in, choose a dental clinic, change the language and sign out. - [Android app operations](https://muveya.com/docs/en/android/operations.md): Scan a box or a supplier code, record a use, move a box and receive a delivery from the muveya Android app, with every label, rule and message. ### Trust and help - [Security and privacy](https://muveya.com/docs/en/trust/security-and-privacy.md): How muveya isolates each dental clinic, authenticates people, limits and hides information, protects patient references, records history, handles API keys, and where your data lives. - [Troubleshooting](https://muveya.com/docs/en/help/troubleshooting.md): Find what went wrong from what you see on screen, why it happens and what to do, from sign-in to deliveries, WhatsApp, the API and MCP. ## API reference ### Overview - [Developer API](https://muveya.com/docs/en/api-reference/introduction.md): What the muveya public API covers, its base URL, the conventions every response follows and how this reference is organized. - [Authentication](https://muveya.com/docs/en/api-reference/authentication.md): Get an API key for your dental clinic, send it as a bearer token, keep it on your server, rotate or revoke it, and understand every authentication failure. - [API quickstart](https://muveya.com/docs/en/api-reference/quickstart.md): Make your first calls to the muveya API with cURL, JavaScript or Python: identify your key, list locations and catalog items, read an order and walk through pages. - [Scopes](https://muveya.com/docs/en/api-reference/scopes.md): API key scopes for /v1, OAuth scopes for MCP, their matching member permissions, and least-privilege examples. - [Pagination](https://muveya.com/docs/en/api-reference/pagination.md): Walk the paginated /v1 lists with limit and an opaque cursor, and know the order and filters of every list. - [Rate limits](https://muveya.com/docs/en/api-reference/rate-limits.md): The request budget of each API key, the headers that report it, and how to back off when you reach it. - [Errors](https://muveya.com/docs/en/api-reference/errors.md): The problem document every failed request returns, every error code a /v1 or /mcp caller can receive, and what to do about each one. - [Versioning and stability](https://muveya.com/docs/en/api-reference/versioning.md): What stays stable inside /v1, which changes muveya treats as breaking, how to write a client that tolerates additive changes, and where changes are announced. - [Briefing exports](https://muveya.com/docs/en/api-reference/exports.md): Request an asynchronous CSV export of the management briefing, poll it until it is ready, download it with a short-lived link and verify its checksum. - [Webhooks](https://muveya.com/docs/en/api-reference/webhooks.md): Webhooks are not available yet. How to keep your systems up to date by polling the API within your rate limit. ### Endpoints #### API key - [Identify the current API key](https://muveya.com/docs/en/api-reference/endpoints/api-key/identify-the-current-api-key.md): Identifies the calling API key: the workspace it is bound to and the scopes it carries. The workspace comes only from the key; the response never includes the key, its hash, or any secret. Any valid key may call it — no scope is required. #### Clinics - [List clinics](https://muveya.com/docs/en/api-reference/endpoints/clinics/list-clinics.md): Lists the workspace operational sites (clinics). Requires the clinics:read scope. Unpaged at pilot scale: one terminal page (hasMore false). #### Warehouses - [List warehouses](https://muveya.com/docs/en/api-reference/endpoints/warehouses/list-warehouses.md): Lists the workspace warehouses (central and express). Covered by the clinics:read scope. Unpaged at pilot scale: one terminal page. #### Catalog - [List catalog items](https://muveya.com/docs/en/api-reference/endpoints/catalog/list-catalog-items.md): Lists the workspace catalog items. Requires catalog:read; cost, currency and their state/basis are present only when the key also holds catalog.cost:read. Only verified cost matches the current unit; review_required and invalid must not be treated as an applicable price. Unpaged at pilot scale. - [Get a catalog item](https://muveya.com/docs/en/api-reference/endpoints/catalog/get-a-catalog-item.md): Reads one catalog item by id. Requires catalog:read; cost/currency/state/basis need catalog.cost:read. Inspect costStatus before using the amount with the current unit. 404 when absent or in another workspace. - [List catalog categories](https://muveya.com/docs/en/api-reference/endpoints/catalog/list-catalog-categories.md): Lists the workspace catalog categories. Requires catalog:read. Unpaged at pilot scale. #### Inventory - [List inventory balances](https://muveya.com/docs/en/api-reference/endpoints/inventory/list-inventory-balances.md): Lists per-box stock balances tenant-wide, keyset-paginated by box id, optionally filtered by catalogItemId/warehouseId. Requires inventory:read. - [Get a stock box](https://muveya.com/docs/en/api-reference/endpoints/inventory/get-a-stock-box.md): Reads one physical stock box by id. Requires inventory:read. 404 when absent or in another workspace. - [Get a stock box balance](https://muveya.com/docs/en/api-reference/endpoints/inventory/get-a-stock-box-balance.md): Reads the derived balance (onHand, reserved, available) of one box. Requires inventory:read. 404 when absent or in another workspace. - [List a stock box ledger](https://muveya.com/docs/en/api-reference/endpoints/inventory/list-a-stock-box-ledger.md): Lists the append-only ledger of one box, oldest first. Requires inventory:read. Returns one terminal page of the box's movements; 404 when the box is absent or in another workspace. #### Orders - [List orders](https://muveya.com/docs/en/api-reference/endpoints/orders/list-orders.md): Lists the workspace orders tenant-wide, keyset-paginated by creation order, optionally filtered by status. Requires orders:read. Order value and the patient reference are always redacted for a machine key. - [Get an order](https://muveya.com/docs/en/api-reference/endpoints/orders/get-an-order.md): Reads one order with its lines. Requires orders:read. Order value and the patient reference are redacted; line cost needs catalog.cost:read. 404 when absent or in another workspace. #### Fulfillments - [List fulfillments](https://muveya.com/docs/en/api-reference/endpoints/fulfillments/list-fulfillments.md): Lists the workspace fulfillments (custody records) tenant-wide, keyset-paginated by creation order, optionally filtered by status. Requires fulfillment:read. - [Get an order custody history](https://muveya.com/docs/en/api-reference/endpoints/fulfillments/get-an-order-custody-history.md): Reads the redacted custody history of one order: status, the ledger movements and the delivery/receipt/closure records. Requires fulfillment:read. 404 when absent or in another workspace. #### Analytics - [Get an operational metric](https://muveya.com/docs/en/api-reference/endpoints/analytics/get-an-operational-metric.md): Reads one allowlisted deterministic operational metric as an evidence contract (value, unit, asOf, filters), computed live over the workspace data. Requires analytics:read. An unknown metric name is a 400. Value metrics are redacted unless the key holds the value scope (none in v1). - [List operational exceptions](https://muveya.com/docs/en/api-reference/endpoints/analytics/list-operational-exceptions.md): Lists the operational exceptions the management cockpit surfaces (expiring/low stock, delivery exceptions, receipt discrepancies, pending approvals) in a stable priority order, each with a drill-down id and an evidence descriptor. Requires analytics:read. Deterministic; computed live over the worksp… - [Compare clinics](https://muveya.com/docs/en/api-reference/endpoints/analytics/compare-clinics.md): Compares the workspace clinics by order volume (total and pending approval) with the metric definition shown. Counts only — order value is redacted unless the key holds the value scope (none in v1). Requires analytics:read. Deterministic; computed live over the workspace data. - [Get consumption per supply](https://muveya.com/docs/en/api-reference/endpoints/analytics/get-consumption-per-supply.md): Reads consumption per supply in its own unit, bucketed by UTC day or week from the immutable stock ledger, as an evidence contract. Requires analytics:read. Quantities of different supplies or units are never added together; coverage reports movements without a verified unit, a restricted warehouse… - [Get the approval backlog](https://muveya.com/docs/en/api-reference/endpoints/analytics/get-the-approval-backlog.md): Reads the tenant-wide pending-approval backlog bucketed by age since submission, with the age bands and definition shown, as an evidence contract. Requires analytics:read. Counts only — order value is never read. Deterministic; computed live over the workspace data. - [Get the order cycle time](https://muveya.com/docs/en/api-reference/endpoints/analytics/get-the-order-cycle-time.md): Reads the average duration of each order lifecycle stage (submit→dispatch, dispatch→deliver, deliver→receive, receive→close), joined in-process across orders and fulfillments, as an evidence contract. Requires analytics:read. Durations only (hours); no value. Deterministic; computed live over the wo… - [Get the management briefing](https://muveya.com/docs/en/api-reference/endpoints/analytics/get-the-management-briefing.md): Reads the reproducible daily or weekly management briefing — the deterministic operational metrics composed into a single digest where every figure links to its source metric and evidence id. Requires analytics:read. Counts, quantities and durations only; no cost or value. Deterministic; computed li… - [Request a briefing export](https://muveya.com/docs/en/api-reference/endpoints/analytics/request-a-briefing-export.md): Requests an asynchronous redacted CSV export of the management briefing. Requires analytics:read. Returns 202 with the job in `pending` (or already `ready` when the export runs inline); poll GET /v1/analytics/exports/{exportId} for the signed download URL. The artifact carries counts/quantities/dura… - [Poll a briefing export](https://muveya.com/docs/en/api-reference/endpoints/analytics/poll-a-briefing-export.md): Polls one export job by its opaque id. Requires analytics:read. A `ready` job carries a short-lived signed download URL (re-minted on each poll) and the artifact checksum; a `failed` job carries a non-sensitive reason. Scoped to the workspace the key is bound to; an unknown id is a 404 with no oracl… ## MCP ### MCP server - [MCP server](https://muveya.com/docs/en/mcp/introduction.md): Use the Muveya MCP server with OAuth and your clinic membership. - [Connect a client](https://muveya.com/docs/en/mcp/connect.md): Connect an OAuth-capable MCP client to Muveya through Console sign-in and authorization. - [MCP tools](https://muveya.com/docs/en/mcp/tools.md): Every tool of the muveya MCP server: what it returns, its arguments, the scope it needs, what it hides, and a question a manager could ask. - [MCP resources](https://muveya.com/docs/en/mcp/resources.md): The four reference documents the muveya MCP server offers, what each contains, who can read it and what it hides. ## Changelog ### Changelog - [Changelog](https://muveya.com/docs/en/changelog.md): Customer-visible changes to muveya, newest first: the console, the public API, MCP and WhatsApp. ## OpenAPI Specs - [openapi.en](/docs/openapi.en.json) > The links below point to documentation indexes. Follow each `/_llms/` index recursively until you reach documentation pages. ## Indexes - [Spanish (77 pages)](https://muveya.com/docs/_llms/es.md): Documentation for Spanish. - [Portuguese (77 pages)](https://muveya.com/docs/_llms/pt.md): Documentation for Portuguese. This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.