{"id":301457,"recorded_at":"2026-10-26T22:34:42.279241Z","observed_at":"2026-10-26T22:34:42.279185Z","subject_kind":"endpoint","subject":"37744c3b-545c-48c9-8155-cca2c278c4cb","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":26,"tools":[{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"account_number":{"description":"Customer account number.","maxLength":60,"type":"string"},"address_1":{"description":"Address line 1.","maxLength":200,"type":"string"},"address_2":{"description":"Address line 2.","maxLength":200,"type":"string"},"city":{"description":"City.","maxLength":100,"type":"string"},"comments":{"description":"Comments.","maxLength":2000,"type":"string"},"company_name":{"description":"Company name.","maxLength":200,"type":"string"},"country":{"description":"Country.","maxLength":100,"type":"string"},"email":{"description":"Email address.","format":"email","maxLength":254,"pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"first_name":{"description":"First name (required by PHP Point of Sale).","maxLength":100,"minLength":1,"type":"string"},"internal_notes":{"description":"Internal notes (not shown to the customer).","maxLength":4000,"type":"string"},"last_name":{"description":"Last name.","maxLength":100,"minLength":1,"type":"string"},"phone_number":{"description":"Phone number.","maxLength":40,"minLength":1,"type":"string"},"state":{"description":"State or region.","maxLength":100,"type":"string"},"taxable":{"description":"Whether sales to this customer are taxed.","type":"boolean"},"zip":{"description":"Postal code.","maxLength":30,"type":"string"}},"required":["first_name"],"type":"object"},"name":"phppos_create_customer"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"category_id":{"description":"Expense category id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"expense_amount":{"description":"Amount, in the store's currency, before tax.","maximum":10000000000,"minimum":0,"type":"number"},"expense_date":{"description":"When it was incurred (yyyy-mm-dd or yyyy-mm-dd hh:mm:ss); defaults to now in the store.","type":"string"},"expense_description":{"description":"What the expense was for.","maxLength":500,"minLength":1,"type":"string"},"expense_note":{"description":"Note.","maxLength":1000,"type":"string"},"expense_payment_type":{"description":"Payment type, for example Cash.","maxLength":60,"type":"string"},"expense_reason":{"description":"Reason.","maxLength":500,"type":"string"},"expense_tax":{"description":"Tax amount.","maximum":10000000000,"minimum":0,"type":"number"},"expense_type":{"description":"Expense type, for example Utilities.","maxLength":100,"type":"string"},"location_id":{"description":"Location id - see phppos_list_locations.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["expense_description","expense_amount"],"type":"object"},"name":"phppos_create_expense"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"category_id":{"description":"Category id - see phppos_list_categories.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"cost_price":{"description":"Cost price.","maximum":10000000000,"minimum":0,"type":"number"},"description":{"description":"Short description.","maxLength":1000,"type":"string"},"is_service":{"description":"True for a service (no stock tracking).","type":"boolean"},"item_inactive":{"description":"True to deactivate the item (it can no longer be sold).","type":"boolean"},"item_number":{"description":"Barcode / item number (UPC).","maxLength":100,"type":"string"},"name":{"description":"Item name.","maxLength":255,"minLength":1,"type":"string"},"product_id":{"description":"Product id / SKU.","maxLength":100,"type":"string"},"promo_price":{"description":"Promotional price.","maximum":10000000000,"minimum":0,"type":"number"},"reorder_level":{"description":"Stock level at which the item shows as low.","maximum":1000000000,"minimum":0,"type":"number"},"size":{"description":"Size.","maxLength":100,"type":"string"},"supplier_id":{"description":"Supplier person id - see phppos_list_suppliers.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"tags":{"description":"Tag names.","items":{"maxLength":60,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"unit_price":{"description":"Selling price.","maximum":10000000000,"minimum":0,"type":"number"}},"required":["name"],"type":"object"},"name":"phppos_create_item"},{"description":"One customer by person id: contact details, tier, tax settings, balance, credit limit, points, notes and custom fields. GET /customers/{person_id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"person_id":{"description":"Customer person id (find it with phppos_list_customers).","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["person_id"],"type":"object"},"name":"phppos_get_customer"},{"description":"One gift card by its card number (or id): remaining value, customer and status. GET /giftcards/{giftcard_number}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"giftcard_number":{"description":"Gift card number or id.","maxLength":60,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","type":"string"}},"required":["giftcard_number"],"type":"object"},"name":"phppos_get_gift_card"},{"description":"One inventory item by id: prices, tax settings, category, supplier, tags, attributes, variations, tier pricing and per-location settings. GET /items/{id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"item_id":{"description":"PHP Point of Sale item id (find it with phppos_list_items).","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["item_id"],"type":"object"},"name":"phppos_get_item"},{"description":"One receiving by id: supplier, items, quantities, costs and payments. GET /receivings/{id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"receiving_id":{"description":"Receiving id (find it with phppos_list_receivings).","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["receiving_id"],"type":"object"},"name":"phppos_get_receiving"},{"description":"One sale by id with line items, payments, taxes, customer and employee (verbosity full by default). GET /sales/{id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"sale_id":{"description":"PHP Point of Sale sale id (the number on the receipt; find it with phppos_list_sales).","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"verbosity":{"description":"minimal, medium or full (default).","enum":["minimal","medium","full"],"type":"string"}},"required":["sale_id"],"type":"object"},"name":"phppos_get_sale"},{"description":"One supplier by person id. GET /suppliers/{person_id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"person_id":{"description":"Supplier person id (find it with phppos_list_suppliers).","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["person_id"],"type":"object"},"name":"phppos_get_supplier"},{"description":"List appointments (bookings) with customer, employee, service, start and end time, optionally within a time window. GET /appointments.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"end_time":{"description":"Only appointments ending on or before this date or date-time.","type":"string"},"limit":{"description":"Rows per page, 1-100 (default 20).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"},"start_time":{"description":"Only appointments starting on or after this date or date-time.","type":"string"}},"type":"object"},"name":"phppos_list_appointments"},{"description":"List item categories with their ids. Use the ids to filter items or to file a new item. GET /categories.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Rows per page, 1-100 (default 20).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"}},"type":"object"},"name":"phppos_list_categories"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Rows per page, 1-100 (default 20).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"location_id":{"description":"Only customers at this location id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"},"search_field":{"description":"Limit the search to one field.","enum":["first_name","last_name","email","phone_number","account_number"],"type":"string"},"sort_col":{"description":"Column to sort by (a field name of the rows).","pattern":"^[a-z][a-z0-9_]{0,60}$","type":"string"},"sort_dir":{"description":"Sort direction.","enum":["asc","desc"],"type":"string"}},"type":"object"},"name":"phppos_list_customers"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Rows per page, 1-100 (default 20).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"location_id":{"description":"Only employees at this location id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"}},"type":"object"},"name":"phppos_list_employees"},{"description":"List recorded expenses with type, description, date, amount, tax, payment type, category and location. GET /expenses.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Rows per page, 1-100 (default 20).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"location_id":{"description":"Only expenses at this location id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"},"sort_col":{"description":"Column to sort by (a field name of the rows).","pattern":"^[a-z][a-z0-9_]{0,60}$","type":"string"},"sort_dir":{"description":"Sort direction.","enum":["asc","desc"],"type":"string"}},"type":"object"},"name":"phppos_list_expenses"},{"description":"List gift cards with number, description, remaining value, customer and whether inactive. GET /giftcards.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Rows per page, 1-100 (default 20).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"}},"type":"object"},"name":"phppos_list_gift_cards"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Rows per page, 1-100 (default 20).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"},"sort_col":{"description":"Column to sort by (a field name of the rows).","pattern":"^[a-z][a-z0-9_]{0,60}$","type":"string"},"sort_dir":{"description":"Sort direction.","enum":["asc","desc"],"type":"string"},"type":{"description":"customer = invoices to customers; supplier = invoices from suppliers.","enum":["customer","supplier"],"type":"string"}},"required":["type"],"type":"object"},"name":"phppos_list_invoices"},{"description":"List item kits (bundles of items sold together) with their prices. GET /item_kits.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"category_id":{"description":"Only kits in this category id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"limit":{"description":"Rows per page, 1-100 (default 20).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"}},"type":"object"},"name":"phppos_list_item_kits"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"category_id":{"description":"Only items in this category id - see phppos_list_categories.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"limit":{"description":"Rows per page, 1-1000 (default 20).","exclusiveMinimum":0,"maximum":1000,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"},"search_field":{"description":"Limit the search to one field.","enum":["item_id","item_number","product_id","name","description","size","cost_price","unit_price","promo_price","reorder_level","supplier","manufacturer_name","tag_name","ecommerce_product_id"],"type":"string"},"sort_col":{"description":"Column to sort by (a field name of the rows).","pattern":"^[a-z][a-z0-9_]{0,60}$","type":"string"},"sort_dir":{"description":"Sort direction.","enum":["asc","desc"],"type":"string"}},"type":"object"},"name":"phppos_list_items"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Rows per page, 1-100 (default 20).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"}},"type":"object"},"name":"phppos_list_locations"},{"description":"List receivings (stock received from suppliers, purchase orders, transfers) with supplier, totals and items, by date range. GET /receivings.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"end_date":{"description":"Only receivings on or before this date or date-time.","type":"string"},"limit":{"description":"Rows per page, 1-1000 (default 25).","exclusiveMinimum":0,"maximum":1000,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"start_date":{"description":"Only receivings on or after this date or date-time.","type":"string"}},"type":"object"},"name":"phppos_list_receivings"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"search":{"description":"Only reports whose key, description or inputs contain this text.","maxLength":100,"minLength":1,"type":"string"}},"type":"object"},"name":"phppos_list_reports"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"customer_id":{"description":"Only this customer's sales.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"email_address":{"description":"Look the customer up by email address and return their sales.","format":"email","maxLength":254,"pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"end_date":{"description":"Only sales on or before this date or date-time.","type":"string"},"limit":{"description":"Rows per page, 1-1000 (default 25).","exclusiveMinimum":0,"maximum":1000,"type":"integer"},"location_id":{"description":"Only sales at this location id - see phppos_list_locations.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"start_date":{"description":"Only sales on or after this date or date-time (yyyy-mm-dd or yyyy-mm-dd hh:mm:ss).","type":"string"},"suspended_type":{"description":"Fetch suspended sales instead of completed ones: a comma-separated list of layaway, estimate or a sale type name.","pattern":"^[A-Za-z0-9 _.-]{1,60}(,[A-Za-z0-9 _.-]{1,60}){0,4}$","type":"string"},"verbosity":{"description":"minimal, medium (default) or full.","enum":["minimal","medium","full"],"type":"string"}},"type":"object"},"name":"phppos_list_sales"},{"description":"List or search suppliers with contact details, company, account number and balance. GET /suppliers.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Rows per page, 1-100 (default 20).","exclusiveMinimum":0,"maximum":100,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"search":{"description":"Free-text search.","maxLength":200,"minLength":1,"type":"string"},"search_field":{"description":"Limit the search to one field.","enum":["first_name","last_name","email","phone_number","company_name","account_number"],"type":"string"},"sort_col":{"description":"Column to sort by (a field name of the rows).","pattern":"^[a-z][a-z0-9_]{0,60}$","type":"string"},"sort_dir":{"description":"Sort direction.","enum":["asc","desc"],"type":"string"}},"type":"object"},"name":"phppos_list_suppliers"},{"description":"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}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Rows per page, 1-500 (default 100).","exclusiveMinimum":0,"maximum":500,"type":"integer"},"offset":{"description":"Rows to skip (default 0). Pass the previous reply's next_offset (paging.next_offset for a report).","maximum":1000000,"minimum":0,"type":"integer"},"params":{"additionalProperties":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"number"},{"type":"boolean"},{"items":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"number"}]},"maxItems":50,"type":"array"}]},"description":"The report's inputs as listed by phppos_list_reports, e.g. {\"start_date\":\"2026-10-01\",\"end_date\":\"2026-10-31\",\"location_ids\":[1]}. Do not put limit/offset here.","propertyNames":{"type":"string"},"type":"object"},"report_key":{"description":"Report key from phppos_list_reports (for example summary_sales or inventory_low).","pattern":"^[a-z][a-z0-9_]{0,80}$","type":"string"}},"required":["report_key"],"type":"object"},"name":"phppos_run_report"},{"description":"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}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"account_number":{"description":"Customer account number.","maxLength":60,"type":"string"},"address_1":{"description":"Address line 1.","maxLength":200,"type":"string"},"address_2":{"description":"Address line 2.","maxLength":200,"type":"string"},"city":{"description":"City.","maxLength":100,"type":"string"},"comments":{"description":"Comments.","maxLength":2000,"type":"string"},"company_name":{"description":"Company name.","maxLength":200,"type":"string"},"country":{"description":"Country.","maxLength":100,"type":"string"},"email":{"description":"Email address.","format":"email","maxLength":254,"pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"first_name":{"description":"First name.","maxLength":100,"minLength":1,"type":"string"},"internal_notes":{"description":"Internal notes (not shown to the customer).","maxLength":4000,"type":"string"},"last_name":{"description":"Last name.","maxLength":100,"minLength":1,"type":"string"},"person_id":{"description":"Customer person id (find it with phppos_list_customers).","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"phone_number":{"description":"Phone number.","maxLength":40,"minLength":1,"type":"string"},"state":{"description":"State or region.","maxLength":100,"type":"string"},"taxable":{"description":"Whether sales to this customer are taxed.","type":"boolean"},"zip":{"description":"Postal code.","maxLength":30,"type":"string"}},"required":["person_id"],"type":"object"},"name":"phppos_update_customer"},{"description":"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}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"category_id":{"description":"Category id - see phppos_list_categories.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"cost_price":{"description":"Cost price.","maximum":10000000000,"minimum":0,"type":"number"},"description":{"description":"Short description.","maxLength":1000,"type":"string"},"is_service":{"description":"True for a service (no stock tracking).","type":"boolean"},"item_id":{"description":"Item id (find it with phppos_list_items).","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"item_inactive":{"description":"True to deactivate the item (it can no longer be sold).","type":"boolean"},"item_number":{"description":"Barcode / item number (UPC).","maxLength":100,"type":"string"},"name":{"description":"Item name.","maxLength":255,"minLength":1,"type":"string"},"product_id":{"description":"Product id / SKU.","maxLength":100,"type":"string"},"promo_price":{"description":"Promotional price.","maximum":10000000000,"minimum":0,"type":"number"},"reorder_level":{"description":"Stock level at which the item shows as low.","maximum":1000000000,"minimum":0,"type":"number"},"size":{"description":"Size.","maxLength":100,"type":"string"},"supplier_id":{"description":"Supplier person id - see phppos_list_suppliers.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"tags":{"description":"Tag names.","items":{"maxLength":60,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"unit_price":{"description":"Selling price.","maximum":10000000000,"minimum":0,"type":"number"}},"required":["item_id"],"type":"object"},"name":"phppos_update_item"}]},"body_sha256":"ba695b0b1bac5b085fd2a60f94b186ed83463315adb6fe41aa40a55d14714efd","prev_id":null,"leaf":"0xa386c4264ffd9a7c4af5e9a1d6fe22061e8570a05e6c26ebdf4972dba5ee6c41","leaf_text":"{\"body\":\"ba695b0b1bac5b085fd2a60f94b186ed83463315adb6fe41aa40a55d14714efd\",\"id\":301457,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793054082279185,\"prev\":null,\"subject\":\"37744c3b-545c-48c9-8155-cca2c278c4cb\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0xa385eb4f68591c084c236ea4e7fb91ac44fdce1a39bd6f722444151b3a7445aa","0xadc62bdba538873a41fb8a433056bf291d20467662be2f650063be98982a1b16","0x67b7f2d5e7d46820d6a0c1e2433fe36bbcb344d4d79c51bf0968b46fd16e6bc2","0xce740f3f164f37dc1c761d92b57d45747597ede2edcc5a71a28a2f6aa46fb260","0x494e385df373d1a13192a7e4ae6c488e733152d1791c623e9f8d40c7f1144eca","0x1a2840e695d291c2ff2a32e678caf88345e3749075c5d99541ff6b6746c8880c","0xc773931e4b2e393a56853f26c86044b6dcdc2a015715e319a9c03575cdfa82d5","0x4a2dca25f350e7dda310d606117ef4a4378aa511406e32a7c75d9e4ac5fb4282","0x7669bf7267794b47cf2b8311fbdc9ed0b8e4d496ed021df4f3e43f25125a5e13","0xbf9e8e8193260b284eff6ae5de9bd74a29a95af639484d57bcbf0408a7dd8030","0xf02ec0f13d875e636ca9d24097cc2a185cdb09429c8c4ade598b8089f42bb140","0x19537c574979327583a539261287714af2eee831125de819abab0f155acd3a75","0xc34c13c58ba9c342ea1b833ac1882a4aea22777c4fd1092b2f83d3bac6b9f845","0x428106f4ae4ec142f17aebf6fa50935242f8d3f1c211cf95d6351d03d11da2b7","0x62a900133713919f4eed33d8336876b7a6d538233b8a4f3ed03b29aa44f5bad0","0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f","0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9","0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}