{"id":300335,"recorded_at":"2026-10-26T22:23:25.123577Z","observed_at":"2026-10-26T22:23:25.123388Z","subject_kind":"endpoint","subject":"30278ba6-f5d5-4208-86dc-259fcef08089","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":20,"tools":[{"description":"Rental availability for ONE product over a date range: arrays of quantity held, booked, unavailable, available, on sub-rent and quoted — one entry per availability period (hour, quarter day, half day or day depending on the range and system setting) — plus the opportunities that book it. Read-only, even though the API uses POST. Current RMS: POST /availability/product.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"days_period":{"description":"Number of days to report on.","maximum":366,"minimum":1,"type":"integer"},"product_id":{"description":"The product id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"starts_at":{"description":"Start date, ISO 8601, e.g. 2026-10-01.","type":"string"},"store_ids":{"description":"Only these stores.","items":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"type":"array"}},"required":["product_id","starts_at","days_period"],"type":"object"},"name":"current_rms_check_product_availability"},{"description":"Log an activity (call, meeting, task, note) against a member, opportunity or project, optionally with participants. Current RMS: POST /activities.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"completed":{"description":"Mark as already completed.","type":"boolean"},"description":{"description":"Details.","type":"string"},"ends_at":{"description":"End (UTC).","type":"string"},"location":{"description":"Where it takes place.","type":"string"},"owned_by":{"description":"User member id of the owner.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"participant_member_ids":{"description":"Member ids to add as participants.","items":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"type":"array"},"priority":{"description":"Priority, 1-5.","maximum":5,"minimum":1,"type":"integer"},"regarding_id":{"description":"The id of that record.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"regarding_type":{"description":"The kind of record it concerns, e.g. \"Opportunity\", \"Member\" or \"Project\".","type":"string"},"starts_at":{"description":"Start (UTC).","type":"string"},"status_id":{"description":"Activity status list-value id.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"subject":{"description":"The activity's subject.","minLength":1,"type":"string"},"time_status":{"anyOf":[{"const":0,"type":"number"},{"const":1,"type":"number"}],"description":"0 = Free, 1 = Busy."},"type_id":{"description":"Activity type list-value id.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["subject"],"type":"object"},"name":"current_rms_create_activity"},{"description":"Create an Organisation, Contact or Venue. To link a new Contact to its Organisation, pass parent_member_id. Current RMS: POST /members.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"custom_fields":{"additionalProperties":{},"description":"Custom field values by field name.","propertyNames":{"type":"string"},"type":"object"},"department":{"description":"Department (Contacts only).","type":"string"},"description":{"description":"Notes about the member.","type":"string"},"emails":{"description":"Email addresses to add.","items":{"properties":{"address":{"description":"Email address.","type":"string"},"type_id":{"description":"Email type list-value id (4001 = Work in a default setup).","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["address"],"type":"object"},"type":"array"},"membership_type":{"description":"The kind of member.","enum":["Organisation","Contact","Venue"],"type":"string"},"name":{"description":"The member's name.","minLength":1,"type":"string"},"parent_member_id":{"description":"Organisation (or Venue) member id to link this Contact to.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"phones":{"description":"Phone numbers to add.","items":{"properties":{"number":{"description":"Phone number.","type":"string"},"type_id":{"description":"Phone type list-value id (6001 = Work in a default setup).","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["number"],"type":"object"},"type":"array"},"tag_list":{"description":"Tags.","items":{"type":"string"},"type":"array"},"title":{"description":"Job title (Contacts only).","type":"string"}},"required":["name","membership_type"],"type":"object"},"name":"current_rms_create_member"},{"description":"Create an opportunity (a rental job) as an Enquiry, Draft or Quotation. store_id is required (see current_rms_list_stores); set member_id for the customer and starts_at/ends_at for the job dates. Line items are added in Current RMS. Current RMS: POST /opportunities.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"billing_address_id":{"description":"The member's address id used for billing.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"charge_ends_at":{"description":"Charging period end (UTC).","type":"string"},"charge_starts_at":{"description":"Charging period start (UTC).","type":"string"},"collection_instructions":{"description":"Collection instructions.","type":"string"},"custom_fields":{"additionalProperties":{},"description":"Custom field values by field name.","propertyNames":{"type":"string"},"type":"object"},"customer_collecting":{"description":"The customer collects the goods themselves.","type":"boolean"},"customer_returning":{"description":"The customer returns the goods themselves.","type":"boolean"},"delivery_instructions":{"description":"Delivery instructions.","type":"string"},"description":{"description":"Internal description.","type":"string"},"ends_at":{"description":"Overall end / collection date-time (UTC).","type":"string"},"external_description":{"description":"Description shown on customer documents.","type":"string"},"member_id":{"description":"The customer (Organisation/Contact member) id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"owned_by":{"description":"User member id of the owner.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"project_id":{"description":"The project this opportunity belongs to.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"rating":{"description":"Rating, 0-5.","maximum":5,"minimum":0,"type":"integer"},"reference":{"description":"Customer reference, e.g. their PO number.","type":"string"},"starts_at":{"description":"Overall start / delivery date-time (UTC).","type":"string"},"state":{"anyOf":[{"const":0,"type":"number"},{"const":1,"type":"number"},{"const":2,"type":"number"}],"description":"0 = Enquiry, 1 = Draft, 2 = Quotation. Converting to an Order is left to Current RMS."},"store_id":{"description":"The store the job is served from.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"subject":{"description":"The opportunity's subject (title).","type":"string"},"tag_list":{"description":"Tags.","items":{"type":"string"},"type":"array"},"venue_id":{"description":"The Venue member id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["store_id"],"type":"object"},"name":"current_rms_create_opportunity"},{"description":"Fetch one invoice or credit note with its status, due date and totals; include invoice_items for the lines. Current RMS: GET /invoices/{id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"include":{"description":"Associations to embed, e.g. [\"invoice_items\"].","items":{"enum":["owner","member","billing_address","destination","venue","invoice_taxes","tax_class","invoice_items"],"type":"string"},"type":"array"},"invoice_id":{"description":"The invoice id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["invoice_id"],"type":"object"},"name":"current_rms_get_invoice"},{"description":"Fetch one member (organisation, contact, venue or user) with its addresses, emails, phones, links, linked parent/child members and custom fields. Current RMS: GET /members/{id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"member_id":{"description":"The member id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["member_id"],"type":"object"},"name":"current_rms_get_member"},{"description":"Fetch one opportunity with its dates, state (0 Enquiry, 1 Draft, 2 Quotation, 3 Order), status and charge/cost totals. Associations (customer, venue, line items, assets, participants) are only returned when named in include. Current RMS: GET /opportunities/{id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"include":{"description":"Associations to embed, e.g. [\"member\", \"venue\", \"opportunity_items\"].","items":{"enum":["owner","member","billing_address","destination","collection","venue","opportunity_surcharges","participants","opportunity_items","item_assets","return_item_assets"],"type":"string"},"type":"array"},"opportunity_id":{"description":"The opportunity id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["opportunity_id"],"type":"object"},"name":"current_rms_get_opportunity"},{"description":"Fetch one product with its rates, stock settings and custom fields. Current RMS: GET /products/{id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"include":{"description":"Associations to embed.","items":{"enum":["accessories","icon","product_group"],"type":"string"},"type":"array"},"product_id":{"description":"The product id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["product_id"],"type":"object"},"name":"current_rms_get_product"},{"description":"List activities — calls, meetings, tasks and notes logged against members, opportunities and projects. filtermode: pending, completed, all. Example filters for one person's busy time in a window: {\"time_status_eq\": 1, \"starts_at_lt\": \"2026-10-02T00:00:00.000Z\", \"ends_at_gteq\": \"2026-10-01T00:00:00.000Z\", \"participants_member_id_eq\": [123]}. Current RMS: GET /activities.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"filtermode":{"description":"Which activities to return.","enum":["pending","completed","all"],"type":"string"},"filters":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"items":{"type":["string","number"]},"type":"array"}]},"description":"Extra Current RMS query-engine predicates, sent as q[<key>]=<value> (arrays become q[<key>][]). Examples: {\"updated_at_gt\": \"2026-01-01T00:00:00.000Z\"}, {\"number_eq\": \"003664\"}, {\"status_not_eq\": 40}, {\"work_email_address_eq\": \"abc@test.com\"}, {\"asset_number_eq\": \"ABC-1\"}. Unknown predicates are silently ignored by the API.","propertyNames":{"pattern":"^[A-Za-z0-9_]+$","type":"string"},"type":"object"},"include":{"description":"Associations to embed.","items":{"enum":["regarding","owner","opportunity_item_asset","participants"],"type":"string"},"type":"array"},"page":{"description":"Page number, starting at 1.","maximum":9007199254740991,"minimum":1,"type":"integer"},"per_page":{"description":"Records per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"search":{"description":"Free-text search on subject, description, location or tags.","type":"string"},"sort":{"description":"Sort order, e.g. [\"name asc\"] or [\"updated_at desc\", \"id asc\"]. Add \"id asc\" when paging so the order is deterministic.","items":{"pattern":"^[A-Za-z0-9_]+ (asc|desc)$","type":"string"},"type":"array"},"view_id":{"description":"Record id of a saved custom view to apply.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"type":"object"},"name":"current_rms_list_activities"},{"description":"List invoices and credit notes with number, dates, status and totals. Free-text search covers subject, number, description, customer name and tags. filtermode: live, inactive, all, invoices, credits. To find one opportunity's invoices pass filters {\"invoice_items_source_type_eq\": \"Opportunity\", \"invoice_items_source_id_eq\": <opportunity id>} with filtermode all. Current RMS: GET /invoices.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"filtermode":{"description":"Built-in filter: live, inactive, all, invoices, credits.","type":"string"},"filters":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"items":{"type":["string","number"]},"type":"array"}]},"description":"Extra Current RMS query-engine predicates, sent as q[<key>]=<value> (arrays become q[<key>][]). Examples: {\"updated_at_gt\": \"2026-01-01T00:00:00.000Z\"}, {\"number_eq\": \"003664\"}, {\"status_not_eq\": 40}, {\"work_email_address_eq\": \"abc@test.com\"}, {\"asset_number_eq\": \"ABC-1\"}. Unknown predicates are silently ignored by the API.","propertyNames":{"pattern":"^[A-Za-z0-9_]+$","type":"string"},"type":"object"},"include":{"description":"Associations to embed.","items":{"enum":["owner","member","billing_address","destination","venue","invoice_taxes","tax_class","invoice_items"],"type":"string"},"type":"array"},"page":{"description":"Page number, starting at 1.","maximum":9007199254740991,"minimum":1,"type":"integer"},"per_page":{"description":"Records per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"search":{"description":"Free-text search on subject, number, description, customer name or tags.","type":"string"},"sort":{"description":"Sort order, e.g. [\"name asc\"] or [\"updated_at desc\", \"id asc\"]. Add \"id asc\" when paging so the order is deterministic.","items":{"pattern":"^[A-Za-z0-9_]+ (asc|desc)$","type":"string"},"type":"array"},"view_id":{"description":"Record id of a saved custom view to apply.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"type":"object"},"name":"current_rms_list_invoices"},{"description":"List members — Current RMS's single record type for Organisations, Contacts, Venues and Users. Free-text search covers name, street, work phone, work email and tags. Defaults to active records; filtermode can be active, inactive, all, organisation, contact, venue, user, with_pending_activities, with_live_opportunities, bookable. Current RMS: GET /members.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"filtermode":{"description":"Built-in filter, e.g. all, organisation, contact, venue, user, inactive.","type":"string"},"filters":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"items":{"type":["string","number"]},"type":"array"}]},"description":"Extra Current RMS query-engine predicates, sent as q[<key>]=<value> (arrays become q[<key>][]). Examples: {\"updated_at_gt\": \"2026-01-01T00:00:00.000Z\"}, {\"number_eq\": \"003664\"}, {\"status_not_eq\": 40}, {\"work_email_address_eq\": \"abc@test.com\"}, {\"asset_number_eq\": \"ABC-1\"}. Unknown predicates are silently ignored by the API.","propertyNames":{"pattern":"^[A-Za-z0-9_]+$","type":"string"},"type":"object"},"page":{"description":"Page number, starting at 1.","maximum":9007199254740991,"minimum":1,"type":"integer"},"per_page":{"description":"Records per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"search":{"description":"Free-text search on name, street, work phone, work email, user email or tags.","type":"string"},"sort":{"description":"Sort order, e.g. [\"name asc\"] or [\"updated_at desc\", \"id asc\"]. Add \"id asc\" when paging so the order is deterministic.","items":{"pattern":"^[A-Za-z0-9_]+ (asc|desc)$","type":"string"},"type":"array"},"view_id":{"description":"Record id of a saved custom view to apply.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"type":"object"},"name":"current_rms_list_members"},{"description":"List opportunities — the enquiries, drafts, quotations and orders for a rental job — with their dates, state and charge totals. Free-text search covers subject, description, number, customer name and tags. filtermode e.g. live, all, inactive, enquiries, drafts, quotations, orders, invoiced, not_invoiced, needing_prep. Line items are NOT included here: use current_rms_get_opportunity or current_rms_list_opportunity_items. Max 25 per page. Current RMS: GET /opportunities.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"filtermode":{"description":"Built-in filter, e.g. live, all, quotations, orders, not_invoiced.","type":"string"},"filters":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"items":{"type":["string","number"]},"type":"array"}]},"description":"Extra Current RMS query-engine predicates, sent as q[<key>]=<value> (arrays become q[<key>][]). Examples: {\"updated_at_gt\": \"2026-01-01T00:00:00.000Z\"}, {\"number_eq\": \"003664\"}, {\"status_not_eq\": 40}, {\"work_email_address_eq\": \"abc@test.com\"}, {\"asset_number_eq\": \"ABC-1\"}. Unknown predicates are silently ignored by the API.","propertyNames":{"pattern":"^[A-Za-z0-9_]+$","type":"string"},"type":"object"},"include":{"description":"Associations to embed in each record.","items":{"enum":["owner","member","billing_address","destination","collection","venue","opportunity_surcharges"],"type":"string"},"type":"array"},"page":{"description":"Page number, starting at 1.","maximum":9007199254740991,"minimum":1,"type":"integer"},"per_page":{"description":"Records per page, 1-25.","maximum":25,"minimum":1,"type":"integer"},"search":{"description":"Free-text search on subject, description, number, customer name or tags.","type":"string"},"sort":{"description":"Sort order, e.g. [\"name asc\"] or [\"updated_at desc\", \"id asc\"]. Add \"id asc\" when paging so the order is deterministic.","items":{"pattern":"^[A-Za-z0-9_]+ (asc|desc)$","type":"string"},"type":"array"},"view_id":{"description":"Record id of a saved custom view to apply.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"type":"object"},"name":"current_rms_list_opportunities"},{"description":"List the line items on one opportunity — products, services and groups, with quantity, rate, discount, dates and charge totals. Current RMS: GET /opportunities/{opportunity_id}/opportunity_items.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"include":{"description":"Associations to embed on each line.","items":{"enum":["item","item_assets","rate_definition","item_surcharges"],"type":"string"},"type":"array"},"opportunity_id":{"description":"The opportunity id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"page":{"description":"Page number, starting at 1.","maximum":9007199254740991,"minimum":1,"type":"integer"},"per_page":{"description":"Records per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"}},"required":["opportunity_id"],"type":"object"},"name":"current_rms_list_opportunity_items"},{"description":"Stock snapshot per product: rental quantity held, booked, unavailable, on sub-rent and AVAILABLE, plus sale stock and prices. Pass starts_at/ends_at to compute rental availability for a job's dates instead of today, and store_id to restrict to one store. filtermode: active, inactive, all, rental, sale. Current RMS: GET /product_inventories.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"ends_at":{"description":"End of the period to compute rental availability for (UTC).","type":"string"},"filtermode":{"description":"Built-in filter, e.g. rental, sale, all.","type":"string"},"filters":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"items":{"type":["string","number"]},"type":"array"}]},"description":"Extra Current RMS query-engine predicates, sent as q[<key>]=<value> (arrays become q[<key>][]). Examples: {\"updated_at_gt\": \"2026-01-01T00:00:00.000Z\"}, {\"number_eq\": \"003664\"}, {\"status_not_eq\": 40}, {\"work_email_address_eq\": \"abc@test.com\"}, {\"asset_number_eq\": \"ABC-1\"}. Unknown predicates are silently ignored by the API.","propertyNames":{"pattern":"^[A-Za-z0-9_]+$","type":"string"},"type":"object"},"page":{"description":"Page number, starting at 1.","maximum":9007199254740991,"minimum":1,"type":"integer"},"per_page":{"description":"Records per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"search":{"description":"Free-text search on name, product group name or tags.","type":"string"},"sort":{"description":"Sort order, e.g. [\"name asc\"] or [\"updated_at desc\", \"id asc\"]. Add \"id asc\" when paging so the order is deterministic.","items":{"pattern":"^[A-Za-z0-9_]+ (asc|desc)$","type":"string"},"type":"array"},"starts_at":{"description":"Start of the period to compute rental availability for (UTC).","type":"string"},"store_id":{"description":"Only this store.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"view_id":{"description":"Record id of a saved custom view to apply.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"type":"object"},"name":"current_rms_list_product_inventories"},{"description":"List products (rental and sale items) with their group, stock method, rates, weight and barcode. Free-text search covers name, product group name and tags. filtermode: active (default), inactive, all. Current RMS: GET /products.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"filtermode":{"description":"Which products to return.","enum":["active","inactive","all"],"type":"string"},"filters":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"items":{"type":["string","number"]},"type":"array"}]},"description":"Extra Current RMS query-engine predicates, sent as q[<key>]=<value> (arrays become q[<key>][]). Examples: {\"updated_at_gt\": \"2026-01-01T00:00:00.000Z\"}, {\"number_eq\": \"003664\"}, {\"status_not_eq\": 40}, {\"work_email_address_eq\": \"abc@test.com\"}, {\"asset_number_eq\": \"ABC-1\"}. Unknown predicates are silently ignored by the API.","propertyNames":{"pattern":"^[A-Za-z0-9_]+$","type":"string"},"type":"object"},"include":{"description":"Associations to embed.","items":{"enum":["accessories"],"type":"string"},"type":"array"},"page":{"description":"Page number, starting at 1.","maximum":9007199254740991,"minimum":1,"type":"integer"},"per_page":{"description":"Records per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"search":{"description":"Free-text search on name, product group name or tags.","type":"string"},"sort":{"description":"Sort order, e.g. [\"name asc\"] or [\"updated_at desc\", \"id asc\"]. Add \"id asc\" when paging so the order is deterministic.","items":{"pattern":"^[A-Za-z0-9_]+ (asc|desc)$","type":"string"},"type":"array"}},"type":"object"},"name":"current_rms_list_products"},{"description":"List projects — groups of related opportunities for one customer or event. Free-text search covers name, customer name and tags. filtermode: active (default), inactive, all. Current RMS: GET /projects.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"filtermode":{"description":"Which projects to return.","enum":["active","inactive","all"],"type":"string"},"filters":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"items":{"type":["string","number"]},"type":"array"}]},"description":"Extra Current RMS query-engine predicates, sent as q[<key>]=<value> (arrays become q[<key>][]). Examples: {\"updated_at_gt\": \"2026-01-01T00:00:00.000Z\"}, {\"number_eq\": \"003664\"}, {\"status_not_eq\": 40}, {\"work_email_address_eq\": \"abc@test.com\"}, {\"asset_number_eq\": \"ABC-1\"}. Unknown predicates are silently ignored by the API.","propertyNames":{"pattern":"^[A-Za-z0-9_]+$","type":"string"},"type":"object"},"page":{"description":"Page number, starting at 1.","maximum":9007199254740991,"minimum":1,"type":"integer"},"per_page":{"description":"Records per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"search":{"description":"Free-text search on name, customer name or tags.","type":"string"},"sort":{"description":"Sort order, e.g. [\"name asc\"] or [\"updated_at desc\", \"id asc\"]. Add \"id asc\" when paging so the order is deterministic.","items":{"pattern":"^[A-Za-z0-9_]+ (asc|desc)$","type":"string"},"type":"array"},"view_id":{"description":"Record id of a saved custom view to apply.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"type":"object"},"name":"current_rms_list_projects"},{"description":"List stock levels — the individual serialised assets (asset number, serial number, location, store) or bulk stock quantities held. Pass product_id for one product's stock, or use filters such as {\"asset_number_eq\": \"ABC-1234\"} to find an asset. Current RMS: GET /stock_levels or GET /products/{product_id}/stock_levels.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"filters":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"items":{"type":["string","number"]},"type":"array"}]},"description":"Extra Current RMS query-engine predicates, sent as q[<key>]=<value> (arrays become q[<key>][]). Examples: {\"updated_at_gt\": \"2026-01-01T00:00:00.000Z\"}, {\"number_eq\": \"003664\"}, {\"status_not_eq\": 40}, {\"work_email_address_eq\": \"abc@test.com\"}, {\"asset_number_eq\": \"ABC-1\"}. Unknown predicates are silently ignored by the API.","propertyNames":{"pattern":"^[A-Za-z0-9_]+$","type":"string"},"type":"object"},"include":{"description":"Associations to embed.","items":{"enum":["item","icon"],"type":"string"},"type":"array"},"page":{"description":"Page number, starting at 1.","maximum":9007199254740991,"minimum":1,"type":"integer"},"per_page":{"description":"Records per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"product_id":{"description":"Only this product's stock levels.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"sort":{"description":"Sort order, e.g. [\"name asc\"] or [\"updated_at desc\", \"id asc\"]. Add \"id asc\" when paging so the order is deterministic.","items":{"pattern":"^[A-Za-z0-9_]+ (asc|desc)$","type":"string"},"type":"array"}},"type":"object"},"name":"current_rms_list_stock_levels"},{"description":"List the account's stores (warehouses/depots) with their ids and addresses — needed for store_id when creating an opportunity. Current RMS: GET /stores.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"current_rms_list_stores"},{"description":"Update fields on an existing member. Only the fields you pass are sent. Emails and phones passed here are ADDED (existing ones are kept). When updating custom_fields, also pass the member's membership_type. Current RMS: PUT /members/{id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"active":{"description":"Set false to make the member inactive (reversible).","type":"boolean"},"custom_fields":{"additionalProperties":{},"description":"Custom field values by field name.","propertyNames":{"type":"string"},"type":"object"},"description":{"description":"Notes about the member.","type":"string"},"emails":{"description":"Email addresses to add.","items":{"properties":{"address":{"description":"Email address.","type":"string"},"type_id":{"description":"Email type list-value id (4001 = Work in a default setup).","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["address"],"type":"object"},"type":"array"},"member_id":{"description":"The member id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"membership_type":{"description":"The member's EXISTING type — required by the API when updating custom_fields.","enum":["Organisation","Contact","Venue","User"],"type":"string"},"name":{"description":"New name.","minLength":1,"type":"string"},"phones":{"description":"Phone numbers to add.","items":{"properties":{"number":{"description":"Phone number.","type":"string"},"type_id":{"description":"Phone type list-value id (6001 = Work in a default setup).","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["number"],"type":"object"},"type":"array"},"tag_list":{"description":"Replacement tag list.","items":{"type":"string"},"type":"array"}},"required":["member_id"],"type":"object"},"name":"current_rms_update_member"},{"description":"Update header fields on an existing opportunity — subject, customer, venue, dates, reference, instructions, tags, custom fields. Only the fields you pass are sent. State changes (convert to quote/order, cancel, mark lost) are deliberately not available. Current RMS: PUT /opportunities/{id}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"billing_address_id":{"description":"The member's address id used for billing.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"charge_ends_at":{"description":"Charging period end (UTC).","type":"string"},"charge_starts_at":{"description":"Charging period start (UTC).","type":"string"},"collection_instructions":{"description":"Collection instructions.","type":"string"},"custom_fields":{"additionalProperties":{},"description":"Custom field values by field name.","propertyNames":{"type":"string"},"type":"object"},"customer_collecting":{"description":"The customer collects the goods themselves.","type":"boolean"},"customer_returning":{"description":"The customer returns the goods themselves.","type":"boolean"},"delivery_instructions":{"description":"Delivery instructions.","type":"string"},"description":{"description":"Internal description.","type":"string"},"ends_at":{"description":"Overall end / collection date-time (UTC).","type":"string"},"external_description":{"description":"Description shown on customer documents.","type":"string"},"member_id":{"description":"The customer (Organisation/Contact member) id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"opportunity_id":{"description":"The opportunity id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"owned_by":{"description":"User member id of the owner.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"project_id":{"description":"The project this opportunity belongs to.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"rating":{"description":"Rating, 0-5.","maximum":5,"minimum":0,"type":"integer"},"reference":{"description":"Customer reference, e.g. their PO number.","type":"string"},"starts_at":{"description":"Overall start / delivery date-time (UTC).","type":"string"},"store_id":{"description":"Move the job to another store.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"subject":{"description":"The opportunity's subject (title).","type":"string"},"tag_list":{"description":"Tags.","items":{"type":"string"},"type":"array"},"venue_id":{"description":"The Venue member id.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["opportunity_id"],"type":"object"},"name":"current_rms_update_opportunity"}]},"body_sha256":"8b69a0578b36a55a2d641ae2cfa157fd3fcc5311d11d21e51d130e9546540952","prev_id":null,"leaf":"0xf1950f5361c516c60f357ab2a46c345ccecdf6d4b908d836f3128a7ee3f0d2cf","leaf_text":"{\"body\":\"8b69a0578b36a55a2d641ae2cfa157fd3fcc5311d11d21e51d130e9546540952\",\"id\":300335,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793053405123388,\"prev\":null,\"subject\":\"30278ba6-f5d5-4208-86dc-259fcef08089\",\"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":["0xf1947dc3f172d7f486eb2b3e258380c5857b51bb9290a725041c14735a4f4980","0x404fae04078c59c34d9bfff5cee72cd8cc8ae06f847772ac4cb4ce938968ca75","0x834a8dd832a2ccb44cd9b1ff47be1fbe70d2e488b703d2cbec7b44f76c249f69","0x9eca3021fa3b3f0ff6af60dd7fc836ff4218537df19492db3aa78b5934948985","0x701f97c7ff6b704059ffa26483bff6c50757aeb77b70a2a60b588492fc74a3c6","0x5863b500b4479a8bbe4453ac1f4554271c577aa531838ddf80ddbb0d7cfa504c","0x540e0ee946357679a4a9390bf87aa41507d761819f291046a460d7033c7e2624","0xe7a82ebf289114aa570f01f736f531ace9402cc46f11dfde856c5a4d5ee9505b","0x9a479873ed84c0ad1f708dc60880fdd741ecd6c4698c984d55c1efab1b421e55","0x1374d43b83adaf6956b75a4ffa6be9b5d88f279b0e1f9aa9cb997253f28541e1","0x3fbb508bb3373d829808c4b964e49bf52f1a8877acba747d2b92b5eac81e6259","0x4d2e94451b5ffc570a23dee9d1525bc305f1009994ffe23d8e2e7d45c60f6209","0xa26f0437cba4d7d64f1cf98bf4f490e1ebb6f66a5e2331537b7ba8b3061084e0","0xd769d41500075835c3b2f9184d223699fb983fd05c29fbcb44d964abc7ee380d","0x68d296b1e00b4899fb83c3fba36fffaefa311eac2903067dbebfe776a12b4a9a","0x5fb5dda563336cd1bc1b9f44c52b76237ae72ed2145cb9290f39f304ca7dd678","0x74a0a08e4e7ab9aa5bfbead33dec7e1c7e8e364cff69a63720d764bbe987aadc"]}