PHP Point of Sale MCP by usefulapi

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

Read PHP Point of Sale items, sales, customers and 138 reports; manage customers, items, expenses.

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Hosted MCP access to a PHP Point of Sale store: read items, sales, customers and 138 reports, and create or update customers, items and expenses.

What you can do
  • Browse store setup: locations and registers, categories, item kits, suppliers and employees
  • Search and read inventory items, completed sales, receivings, customers, invoices, expenses, gift cards and appointments
  • Discover the store's 138 reports and run them, with paging through detail rows
  • Write to the store: create or update customers and items, and record expenses
  • Check usage, request a missing feature, upgrade or cancel the paid plan
When to use it
Useful when you want an assistant to answer questions about a PHP Point of Sale store — sales trends, low stock, a customer's history, profit and tax reports — or to make small catalog and bookkeeping changes without opening the admin UI.
Requirements
Remote MCP endpoint added by URL only; no API key or Authorization header in the client config. Sign-in uses OAuth, and the login page asks for the PHP Point of Sale store name and an API key. Write tools need a Read/Write API key. Free plan allows 50 tool calls per month.
Before you install
Write tools create or update customers and items and record expenses, and they overwrite existing values; retries can create duplicates, so check first. Write tools need a Read/Write API key. Paid plans are billed through a payment link, and cancelling gives no refund for the current period. Store data is sent to the third-party host.

Installation

In SourceWeft

  1. Open PHP Point of Sale 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%2Fphp-point-of-sale/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": {
    "php-point-of-sale-by-usefulapi": {
      "type": "http",
      "url": "https://php-point-of-sale.usefulapi.io/mcp"
    }
  }
}

README

PHP Point of Sale MCP by usefulapi

Read PHP Point of Sale items, sales, customers and 138 reports; manage customers, items, expenses.

Live endpoint: https://php-point-of-sale.usefulapi.io/mcp · Homepage: https://usefulapi.io/php-point-of-sale

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://php-point-of-sale.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http php-point-of-sale https://php-point-of-sale.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": {    "php-point-of-sale": {      "url": "https://php-point-of-sale.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 PHP Point of Sale credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/php-point-of-sale/

On first connect you'll enter your PHP Point of Sale store name (acme for acme.phppointofsale.com) and an API key.

Tools

ToolTypeWhat it does
phppos_list_locationsreadList locations
phppos_list_itemsreadList items
phppos_get_itemreadGet item
phppos_list_categoriesreadList categories
phppos_list_item_kitsreadList item kits
phppos_list_salesreadList sales
phppos_get_salereadGet sale
phppos_list_receivingsreadList receivings
phppos_get_receivingreadGet receiving
phppos_list_customersreadList customers
phppos_get_customerreadGet customer
phppos_list_suppliersreadList suppliers
phppos_get_supplierreadGet supplier
phppos_list_employeesreadList employees
phppos_list_invoicesreadList invoices
phppos_list_expensesreadList expenses
phppos_list_gift_cardsreadList gift cards
phppos_get_gift_cardreadGet gift card
phppos_list_appointmentsreadList appointments
phppos_list_reportsreadList reports
phppos_run_reportreadRun report
phppos_create_customerwriteCreate customer
phppos_update_customerwriteUpdate customer
phppos_create_itemwriteCreate item
phppos_update_itemwriteUpdate item
phppos_create_expensewriteCreate expense
phppos_usage_statusmetaUsage status (free-tier meter)
phppos_request_featuremetaRequest a missing feature
phppos_upgrademetaUpgrade to Pro or Pro+
phppos_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 phppos_upgrade (it returns a Stripe Checkout link). Cancel any time with phppos_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running phppos_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT © usefulapi. Not affiliated with or endorsed by PHP Point of Sale.

Source: servers/php-point-of-sale/README.md at commit 4046075

Tools

26

phppos_list_locations

List locations

List the store's locations (shops/warehouses) with name, address, phone, email, time zone and default tax rates, plus each location's registers (id and name). Use the location ids to filter sales, expenses, customers and reports. Payment-processor credentials and device settings are never returned. GET /locations.

Parameterslimitoffsetsearch

phppos_list_items

List items

List or search inventory items with name, item number, category, supplier, prices and reorder level. Search by text, or by one field (name, item_number, product_id, supplier, tag_name...). GET /items.

Parameterslimitoffsetsearchsort_colsort_dircategory_idsearch_field

phppos_get_item

Get item

One inventory item by id: prices, tax settings, category, supplier, tags, attributes, variations, tier pricing and per-location settings. GET /items/{id}.

Parametersitem_idrequired

phppos_list_categories

List categories

List item categories with their ids. Use the ids to filter items or to file a new item. GET /categories.

Parameterslimitoffsetsearch

phppos_list_item_kits

List item kits

List item kits (bundles of items sold together) with their prices. GET /item_kits.

Parameterslimitoffsetsearchcategory_id

phppos_list_sales

List sales

List or search completed sales, by date range, customer (id or email) or location. verbosity: minimal (headline fields), medium (adds customer, totals, profit, location - the default here) or full (every line item, payment and tax). Suspended sales (layaways, estimates) are fetched with suspended_type. GET /sales.

Parameterslimitoffsetend_dateverbositystart_datecustomer_idlocation_idemail_addresssuspended_type

phppos_get_sale

Get sale

One sale by id with line items, payments, taxes, customer and employee (verbosity full by default). GET /sales/{id}.

Parameterssale_idrequiredverbosity

phppos_list_receivings

List receivings

List receivings (stock received from suppliers, purchase orders, transfers) with supplier, totals and items, by date range. GET /receivings.

Parameterslimitoffsetend_datestart_date

phppos_get_receiving

Get receiving

One receiving by id: supplier, items, quantities, costs and payments. GET /receivings/{id}.

Parametersreceiving_idrequired

phppos_list_customers

List customers

List or search customers with contact details, tier, store-account balance, credit limit and loyalty points. Search by text or by one field (email, phone_number, first_name, last_name, account_number). GET /customers.

Parameterslimitoffsetsearchsort_colsort_dirlocation_idsearch_field

phppos_get_customer

Get customer

One customer by person id: contact details, tier, tax settings, balance, credit limit, points, notes and custom fields. GET /customers/{person_id}.

Parametersperson_idrequired

phppos_list_suppliers

List suppliers

List or search suppliers with contact details, company, account number and balance. GET /suppliers.

Parameterslimitoffsetsearchsort_colsort_dirsearch_field

phppos_get_supplier

Get supplier

One supplier by person id. GET /suppliers/{person_id}.

Parametersperson_idrequired

phppos_list_employees

List employees

List employees with name, contact details, username, hire date, manager, commission and pay rate settings and assigned locations. Passwords and the permission maps are never returned. GET /employees.

Parameterslimitoffsetsearchlocation_id

phppos_list_invoices

List invoices

List customer invoices (money customers owe) or supplier invoices (money the store owes) with date, due date, status and amount. GET /invoices/customer or /invoices/supplier.

Parameterstyperequiredlimitoffsetsearchsort_colsort_dir

phppos_list_expenses

List expenses

List recorded expenses with type, description, date, amount, tax, payment type, category and location. GET /expenses.

Parameterslimitoffsetsearchsort_colsort_dirlocation_id

phppos_list_gift_cards

List gift cards

List gift cards with number, description, remaining value, customer and whether inactive. GET /giftcards.

Parameterslimitoffsetsearch

phppos_get_gift_card

Get gift card

One gift card by its card number (or id): remaining value, customer and status. GET /giftcards/{giftcard_number}.

Parametersgiftcard_numberrequired

phppos_list_appointments

List appointments

List appointments (bookings) with customer, employee, service, start and end time, optionally within a time window. GET /appointments.

Parameterslimitoffsetsearchend_timestart_time

phppos_list_reports

List reports

The catalog of the store's reports (138 of them: sales summaries, top sellers, inventory low/aging/summary, profit and loss, taxes, payments, employee, customer, supplier and store-account reports) with the inputs each accepts. Without `search` only the report keys are returned; with `search` (for example 'inventory' or 'profit') the matching reports are returned with their inputs. GET /reports.

Parameterssearch

phppos_run_report

Run report

Run one of the store's reports and return it (title, summary, detail rows); `paging.next_offset` is set when more detail rows remain. Report keys and their inputs come from phppos_list_reports (for example summary_sales, top_sellers, inventory_low, summary_profit_and_loss, summary_taxes, closeout). Typical inputs go in `params`: start_date, end_date, sale_type, location_ids (array), category_id, supplier_id, customer_id, employee_id. A scoped key needs the Reports module plus that report's view permission. GET /reports/{report_key}.

Parameterslimitoffsetparamsreport_keyrequired

phppos_create_customer

Create customer

WRITE: create a customer in the store. Store-account balance, credit limit and loyalty points cannot be set here. Needs a Read/Write API key. Retrying creates a duplicate (check phppos_list_customers first). The store's 'new customer' webhook, if configured, fires. POST /customers.

Parameterszipcityemailstatecountrytaxablecommentsaddress_1address_2last_namefirst_namerequiredcompany_name+3 more

phppos_update_customer

Update customer

WRITE: change fields of an existing customer; only the fields you pass are sent. Overwrites the current values. Needs a Read/Write API key. The store's 'edit customer' webhook, if configured, fires. POST /customers/{person_id}.

Parameterszipcityemailstatecountrytaxablecommentsaddress_1address_2last_nameperson_idrequiredfirst_name+4 more

phppos_create_item

Create item

WRITE: create an inventory item (name required). Stock quantities are not set here. Needs a Read/Write API key. Retrying creates a duplicate (search with phppos_list_items first). The store's item webhooks, if configured, fire. POST /items.

Parametersnamerequiredsizetagscost_priceis_serviceproduct_idunit_pricecategory_iddescriptionitem_numberpromo_pricesupplier_id+2 more

phppos_update_item

Update item

WRITE: change fields of an existing item (for example its price, category or active state); only the fields you pass are sent. Overwrites the current values, and a price change applies to the next sale. Needs a Read/Write API key. The store's 'edit item' webhook, if configured, fires. POST /items/{item_id}.

Parametersnamesizetagsitem_idrequiredcost_priceis_serviceproduct_idunit_pricecategory_iddescriptionitem_numberpromo_price+3 more

phppos_create_expense

Create expense

WRITE: record an expense in the store's books (description, amount and date). It affects expense and profit-and-loss reports. Needs a Read/Write API key. Retrying records it twice (check phppos_list_expenses first). POST /expenses.

Parameterscategory_idexpense_taxlocation_idexpense_dateexpense_noteexpense_typeexpense_amountrequiredexpense_reasonexpense_descriptionrequiredexpense_payment_type

Version history

15
  1. v1.17.4LatestNov 7, 2026
  2. v1.16.3Nov 5, 2026
  3. v1.16.2Nov 5, 2026
  4. v1.16.1Nov 4, 2026
  5. v1.16.0Nov 3, 2026
  6. v1.15.1Nov 3, 2026
  7. v1.14.0Nov 1, 2026
  8. v1.12.0Oct 31, 2026
  9. v1.11.0Oct 31, 2026
  10. v1.10.2Oct 30, 2026
  11. v1.10.0Oct 30, 2026
  12. v1.5.0Oct 26, 2026
  13. v1.2.3Oct 25, 2026
  14. v1.2.0Oct 25, 2026
  15. v1.1.0Oct 24, 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