← The evidence ledger
Evidence row 300335
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 30278ba6-f5d5-4208-86dc-259fcef08089
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 8b69a0578b36a55a2d641ae2cfa157fd3fcc5311d11d21e51d130e9546540952
- Leaf
- 0xf1950f5361c516c60f357ab2a46c345ccecdf6d4b908d836f3128a7ee3f0d2cf
What was observed
{
"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"
}
]
}What the leaf hashes
{"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"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).
- 0xf1947dc3f172d7f486eb2b3e258380c5857b51bb9290a725041c14735a4f4980
- 0x404fae04078c59c34d9bfff5cee72cd8cc8ae06f847772ac4cb4ce938968ca75
- 0x834a8dd832a2ccb44cd9b1ff47be1fbe70d2e488b703d2cbec7b44f76c249f69
- 0x9eca3021fa3b3f0ff6af60dd7fc836ff4218537df19492db3aa78b5934948985
- 0x701f97c7ff6b704059ffa26483bff6c50757aeb77b70a2a60b588492fc74a3c6
- 0x5863b500b4479a8bbe4453ac1f4554271c577aa531838ddf80ddbb0d7cfa504c
- 0x540e0ee946357679a4a9390bf87aa41507d761819f291046a460d7033c7e2624
- 0xe7a82ebf289114aa570f01f736f531ace9402cc46f11dfde856c5a4d5ee9505b
- 0x9a479873ed84c0ad1f708dc60880fdd741ecd6c4698c984d55c1efab1b421e55
- 0x1374d43b83adaf6956b75a4ffa6be9b5d88f279b0e1f9aa9cb997253f28541e1
- 0x3fbb508bb3373d829808c4b964e49bf52f1a8877acba747d2b92b5eac81e6259
- 0x4d2e94451b5ffc570a23dee9d1525bc305f1009994ffe23d8e2e7d45c60f6209
- 0xa26f0437cba4d7d64f1cf98bf4f490e1ebb6f66a5e2331537b7ba8b3061084e0
- 0xd769d41500075835c3b2f9184d223699fb983fd05c29fbcb44d964abc7ee380d
- 0x68d296b1e00b4899fb83c3fba36fffaefa311eac2903067dbebfe776a12b4a9a
- 0x5fb5dda563336cd1bc1b9f44c52b76237ae72ed2145cb9290f39f304ca7dd678
- 0x74a0a08e4e7ab9aa5bfbead33dec7e1c7e8e364cff69a63720d764bbe987aadc
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae