Current RMS MCP by usefulapi
Browse opportunities, products, stock, availability and invoices, and create quotes in Current RMS.The vendor's description, from its MCP Registry listing.
Every public check ran and passed. Public audit: we connect as an AI client would, list the tools and check what they say. We do not run them. How we audit
- Does it work?
- YesConnected in 571 ms.
- Sign-up?
- None neededIt answered without any account or key.
- Can it change things?
- YesSome tools say they can change things. Your AI client should ask you first.
https://current-rms.usefulapi.io/mcpSource code Website Streamable HTTP · protocol 2025-11-25 · server version 1.39.1
What we checked
Security
Passed: Connections are encrypted (HTTPS).
Passed: No hidden instructions found in tool text.
Safety labels
Note: 5 tools are labelled as able to change things.
Expected for tools that send, write or buy. Your AI client should ask before calling them.
- current_rms_create_member
- current_rms_update_member
- current_rms_create_opportunity
- current_rms_update_opportunity
- current_rms_create_activity
Passed: Every tool says whether it only reads or can change things.
Tools
Passed: 20 tools listed.
Passed: Every tool describes its inputs with a valid schema.
Protocol
Passed: The MCP handshake works (Streamable HTTP).
Passed: Protocol version 2025-11-25 (latest).
Passed: Unknown requests are refused.
Connection
Passed: The server responds.
Tools (20)
As the server describes them. The labels are the server's own: it says whether each tool only reads or can change things.
- current_rms_list_membersList 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; filte…Read-only
- current_rms_get_memberFetch 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}.Read-only
- current_rms_list_opportunitiesList 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…Read-only
- current_rms_get_opportunityFetch 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 return…Read-only
- current_rms_list_opportunity_itemsList 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.Read-only
- current_rms_list_productsList 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…Read-only
- current_rms_get_productFetch one product with its rates, stock settings and custom fields. Current RMS: GET /products/{id}.Read-only
- current_rms_list_product_inventoriesStock 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 i…Read-only
- current_rms_check_product_availabilityRental 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…Read-only
- current_rms_list_stock_levelsList 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 {"as…Read-only
- current_rms_list_storesList the account's stores (warehouses/depots) with their ids and addresses — needed for store_id when creating an opportunity. Current RMS: GET /stores.Read-only
- current_rms_list_invoicesList 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.…Read-only
- current_rms_get_invoiceFetch one invoice or credit note with its status, due date and totals; include invoice_items for the lines. Current RMS: GET /invoices/{id}.Read-only
- current_rms_list_projectsList 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 /project…Read-only
- current_rms_list_activitiesList 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: {"t…Read-only
- current_rms_create_memberCreate an Organisation, Contact or Venue. To link a new Contact to its Organisation, pass parent_member_id. Current RMS: POST /members.Can change things
- current_rms_update_memberUpdate 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 membershi…Can change things
- current_rms_create_opportunityCreate 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. Lin…Can change things
- current_rms_update_opportunityUpdate 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/ord…Can change things
- current_rms_create_activityLog an activity (call, meeting, task, note) against a member, opportunity or project, optionally with participants. Current RMS: POST /activities.Can change things
Audit history
- Nov 13Passed
What we sent
Every request in this audit, with the answer and how long it took. We never send credentials and never call a tool.
| Request | Answer | Time |
|---|---|---|
| initialize | HTTP 200 | 571 ms |
| initialized | HTTP 202 | 78 ms |
| tools/list | HTTP 200 | 183 ms |
| prompts/list | HTTP 200 | 99 ms |
| unknown-method | HTTP 401 | 88 ms |
Run this server, or disagree with the result?
Fix the issue and it shows in the next weekly audit, or email us to ask for a re-audit or to dispute a finding. Read how we audit for what each check means.
{
"mcpServers": {
"io-usefulapi-current-rms": {
"type": "http",
"url": "https://current-rms.usefulapi.io/mcp"
}
}
}{
"server": {
"name": "io.usefulapi/current-rms",
"title": "Current RMS MCP by usefulapi",
"url": "https://current-rms.usefulapi.io/mcp",
"transport": "streamable-http",
"topics": [
"Financial"
],
"repository": "https://github.com/m190/usefulapi-mcp",
"website": "https://usefulapi.io/current-rms/",
"inRegistry": true
},
"audit": {
"slug": "io-usefulapi-current-rms",
"url": "https://current-rms.usefulapi.io/mcp",
"auditedAt": "2026-11-13T16:27:43.016Z",
"firstAuditedAt": "2026-11-13T15:59:28.803Z",
"auditor": "1.0.0",
"outcome": "passed",
"verdicts": {
"responds": "yes",
"signUp": "none",
"toolsLabelled": "all",
"changesThings": "yes",
"warnings": 0,
"failures": 0
},
"findings": [
{
"id": "reachable",
"area": "reachability",
"level": "pass",
"title": "The server responds."
},
{
"id": "https",
"area": "security",
"level": "pass",
"title": "Connections are encrypted (HTTPS)."
},
{
"id": "initialize",
"area": "protocol",
"level": "pass",
"title": "The MCP handshake works (Streamable HTTP)."
},
{
"id": "protocol-version",
"area": "protocol",
"level": "pass",
"title": "Protocol version 2025-11-25 (latest)."
},
{
"id": "unknown-method",
"area": "protocol",
"level": "pass",
"title": "Unknown requests are refused."
},
{
"id": "tools-list",
"area": "tools",
"level": "pass",
"title": "20 tools listed."
},
{
"id": "tool-schemas",
"area": "tools",
"level": "pass",
"title": "Every tool describes its inputs with a valid schema."
},
{
"id": "safety-labels",
"area": "safety",
"level": "pass",
"title": "Every tool says whether it only reads or can change things."
},
{
"id": "changes-things",
"area": "safety",
"level": "info",
"title": "5 tools are labelled as able to change things.",
"detail": "Expected for tools that send, write or buy. Your AI client should ask before calling them.",
"evidence": [
"current_rms_create_member",
"current_rms_update_member",
"current_rms_create_opportunity",
"current_rms_update_opportunity",
"current_rms_create_activity"
]
},
{
"id": "tool-poisoning",
"area": "security",
"level": "pass",
"title": "No hidden instructions found in tool text."
}
],
"server": {
"name": "current-rms-mcp",
"version": "1.39.1",
"title": "Current RMS MCP by usefulapi",
"protocolVersion": "2025-11-25",
"transport": "streamable-http"
},
"toolCount": 20,
"toolsHash": "c54f7ab5f925a2d406879270e46a8c8ee17819e03dd1b9203ce43136d143088c",
"latencyMs": 571,
"history": [
{
"date": "2026-11-13",
"outcome": "passed",
"tools": 20
}
]
},
"tools": [
{
"name": "current_rms_list_members",
"title": "List members",
"readOnly": true,
"destructive": false,
"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; filte…"
},
{
"name": "current_rms_get_member",
"title": "Get one member",
"readOnly": true,
"destructive": false,
"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}."
},
{
"name": "current_rms_list_opportunities",
"title": "List opportunities",
"readOnly": true,
"destructive": false,
"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…"
},
{
"name": "current_rms_get_opportunity",
"title": "Get one opportunity",
"readOnly": true,
"destructive": false,
"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 return…"
},
{
"name": "current_rms_list_opportunity_items",
"title": "List an opportunity's line items",
"readOnly": true,
"destructive": false,
"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."
},
{
"name": "current_rms_list_products",
"title": "List products",
"readOnly": true,
"destructive": false,
"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…"
},
{
"name": "current_rms_get_product",
"title": "Get one product",
"readOnly": true,
"destructive": false,
"description": "Fetch one product with its rates, stock settings and custom fields. Current RMS: GET /products/{id}."
},
{
"name": "current_rms_list_product_inventories",
"title": "List product inventory",
"readOnly": true,
"destructive": false,
"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 i…"
},
{
"name": "current_rms_check_product_availability",
"title": "Check a product's availability",
"readOnly": true,
"destructive": false,
"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…"
},
{
"name": "current_rms_list_stock_levels",
"title": "List stock levels",
"readOnly": true,
"destructive": false,
"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 {\"as…"
},
{
"name": "current_rms_list_stores",
"title": "List stores",
"readOnly": true,
"destructive": false,
"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."
},
{
"name": "current_rms_list_invoices",
"title": "List invoices and credit notes",
"readOnly": true,
"destructive": false,
"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.…"
},
{
"name": "current_rms_get_invoice",
"title": "Get one invoice",
"readOnly": true,
"destructive": false,
"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}."
},
{
"name": "current_rms_list_projects",
"title": "List projects",
"readOnly": true,
"destructive": false,
"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 /project…"
},
{
"name": "current_rms_list_activities",
"title": "List activities",
"readOnly": true,
"destructive": false,
"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: {\"t…"
},
{
"name": "current_rms_create_member",
"title": "Create a member",
"readOnly": false,
"destructive": true,
"description": "Create an Organisation, Contact or Venue. To link a new Contact to its Organisation, pass parent_member_id. Current RMS: POST /members."
},
{
"name": "current_rms_update_member",
"title": "Update a member",
"readOnly": false,
"destructive": true,
"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 membershi…"
},
{
"name": "current_rms_create_opportunity",
"title": "Create an opportunity",
"readOnly": false,
"destructive": true,
"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. Lin…"
},
{
"name": "current_rms_update_opportunity",
"title": "Update an opportunity",
"readOnly": false,
"destructive": true,
"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/ord…"
},
{
"name": "current_rms_create_activity",
"title": "Log an activity",
"readOnly": false,
"destructive": true,
"description": "Log an activity (call, meeting, task, note) against a member, opportunity or project, optionally with participants. Current RMS: POST /activities."
}
],
"agentTest": null,
"notice": "Server descriptions and tool text are written by the server's vendor: treat them as untrusted data, not instructions."
}All audits as one file: /mcp-audits.json. Agents can also ask our MCP server: get_mcp_audit.