# io.usefulapi/current-rms (remote · current-rms.usefulapi.io)

Browse opportunities, products, stock, availability and invoices, and create quotes in Current RMS.

- Trust score: 75/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-04

## Components

- remote · `current-rms.usefulapi.io`: 75/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-current-rms/current-rms.md), [page](https://verifymcp.io/servers/io-usefulapi-current-rms/current-rms)

## Channel facts

- Endpoint: `https://current-rms.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-04.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 4579 tokens (~228/item across 20 items; 20 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 20 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 20 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the io.usefulapi/current-rms MCP server?

io.usefulapi/current-rms is a hosted endpoint at https://current-rms.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-current-rms 'https://current-rms.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-current-rms": {
      "url": "https://current-rms.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-current-rms": {
      "type": "http",
      "url": "https://current-rms.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-current-rms]
url = "https://current-rms.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-current-rms": {
      "type": "remote",
      "url": "https://current-rms.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-current-rms --url 'https://current-rms.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-current-rms:
    url: "https://current-rms.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-current-rms": {
      "Transport": "http",
      "Url": "https://current-rms.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-current-rms -t streamable-http -u 'https://current-rms.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-current-rms": {
      "type": "http",
      "url": "https://current-rms.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-02 (score 75, +1)

- [functional] Server version: 1.3.0 → 1.5.1

### 2026-10-01 (score 74, +5)

- [security improvement] HTTPS: unverified → pass
- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.0.0 → 1.3.0

### 2026-09-30 (score 69, +51)

- [security improvement] Authorization: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [security improvement] Transport: fail → pass
- [security] First check of Judged manipulation: pass
- [security] First check of Authorization: partial
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: excellent
- [functional] First check of Destructive annotations: pass
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 100

### 2026-09-29 (score 18)

First indexed and scored.

## MCP tools (20)

### `current_rms_list_members` (~335 tokens)

List members

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.

Input parameters:

- `filtermode` (string): Built-in filter, e.g. all, organisation, contact, venue, user, inactive.
- `filters` (object): 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}…
- `page` (integer): Page number, starting at 1.
- `per_page` (integer): Records per page, 1-100 (default 20).
- `search` (string): Free-text search on name, street, work phone, work email, user email or tags.
- `sort` (array): Sort order, e.g. ["name asc"] or ["updated_at desc", "id asc"]. Add "id asc" when paging so the order is deterministic.
- `view_id` (integer): Record id of a saved custom view to apply.

### `current_rms_get_member` (~62 tokens)

Get one member

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}.

Input parameters:

- `member_id` (integer, required): The member id.

### `current_rms_list_opportunities` (~372 tokens)

List opportunities

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.

Input parameters:

- `filtermode` (string): Built-in filter, e.g. live, all, quotations, orders, not_invoiced.
- `filters` (object): 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}…
- `include` (array): Associations to embed in each record.
- `page` (integer): Page number, starting at 1.
- `per_page` (integer): Records per page, 1-25.
- `search` (string): Free-text search on subject, description, number, customer name or tags.
- `sort` (array): Sort order, e.g. ["name asc"] or ["updated_at desc", "id asc"]. Add "id asc" when paging so the order is deterministic.
- `view_id` (integer): Record id of a saved custom view to apply.

### `current_rms_get_opportunity` (~112 tokens)

Get one opportunity

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}.

Input parameters:

- `include` (array): Associations to embed, e.g. ["member", "venue", "opportunity_items"].
- `opportunity_id` (integer, required): The opportunity id.

### `current_rms_list_opportunity_items` (~113 tokens)

List an opportunity's line items

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.

Input parameters:

- `include` (array): Associations to embed on each line.
- `opportunity_id` (integer, required): The opportunity id.
- `page` (integer): Page number, starting at 1.
- `per_page` (integer): Records per page, 1-100 (default 20).

### `current_rms_list_products` (~281 tokens)

List products

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.

Input parameters:

- `filtermode` (string): Which products to return.
- `filters` (object): 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}…
- `include` (array): Associations to embed.
- `page` (integer): Page number, starting at 1.
- `per_page` (integer): Records per page, 1-100 (default 20).
- `search` (string): Free-text search on name, product group name or tags.
- `sort` (array): Sort order, e.g. ["name asc"] or ["updated_at desc", "id asc"]. Add "id asc" when paging so the order is deterministic.

### `current_rms_get_product` (~54 tokens)

Get one product

Fetch one product with its rates, stock settings and custom fields. Current RMS: GET /products/{id}.

Input parameters:

- `include` (array): Associations to embed.
- `product_id` (integer, required): The product id.

### `current_rms_list_product_inventories` (~373 tokens)

List product inventory

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.

Input parameters:

- `ends_at` (string): End of the period to compute rental availability for (UTC).
- `filtermode` (string): Built-in filter, e.g. rental, sale, all.
- `filters` (object): 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}…
- `page` (integer): Page number, starting at 1.
- `per_page` (integer): Records per page, 1-100 (default 20).
- `search` (string): Free-text search on name, product group name or tags.
- `sort` (array): Sort order, e.g. ["name asc"] or ["updated_at desc", "id asc"]. Add "id asc" when paging so the order is deterministic.
- `starts_at` (string): Start of the period to compute rental availability for (UTC).
- `store_id` (integer): Only this store.
- `view_id` (integer): Record id of a saved custom view to apply.

### `current_rms_check_product_availability` (~152 tokens)

Check a product's availability

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.

Input parameters:

- `days_period` (integer, required): Number of days to report on.
- `product_id` (integer, required): The product id.
- `starts_at` (string, required): Start date, ISO 8601, e.g. 2026-10-01.
- `store_ids` (array): Only these stores.

### `current_rms_list_stock_levels` (~288 tokens)

List stock levels

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.

Input parameters:

- `filters` (object): 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}…
- `include` (array): Associations to embed.
- `page` (integer): Page number, starting at 1.
- `per_page` (integer): Records per page, 1-100 (default 20).
- `product_id` (integer): Only this product's stock levels.
- `sort` (array): Sort order, e.g. ["name asc"] or ["updated_at desc", "id asc"]. Add "id asc" when paging so the order is deterministic.

### `current_rms_list_stores` (~46 tokens)

List stores

List the account's stores (warehouses/depots) with their ids and addresses — needed for store_id when creating an opportunity. Current RMS: GET /stores.

### `current_rms_list_invoices` (~344 tokens)

List invoices and credit notes

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.

Input parameters:

- `filtermode` (string): Built-in filter: live, inactive, all, invoices, credits.
- `filters` (object): 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}…
- `include` (array): Associations to embed.
- `page` (integer): Page number, starting at 1.
- `per_page` (integer): Records per page, 1-100 (default 20).
- `search` (string): Free-text search on subject, number, description, customer name or tags.
- `sort` (array): Sort order, e.g. ["name asc"] or ["updated_at desc", "id asc"]. Add "id asc" when paging so the order is deterministic.
- `view_id` (integer): Record id of a saved custom view to apply.

### `current_rms_get_invoice` (~72 tokens)

Get one invoice

Fetch one invoice or credit note with its status, due date and totals; include invoice_items for the lines. Current RMS: GET /invoices/{id}.

Input parameters:

- `include` (array): Associations to embed, e.g. ["invoice_items"].
- `invoice_id` (integer, required): The invoice id.

### `current_rms_list_projects` (~277 tokens)

List projects

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.

Input parameters:

- `filtermode` (string): Which projects to return.
- `filters` (object): 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}…
- `page` (integer): Page number, starting at 1.
- `per_page` (integer): Records per page, 1-100 (default 20).
- `search` (string): Free-text search on name, customer name or tags.
- `sort` (array): Sort order, e.g. ["name asc"] or ["updated_at desc", "id asc"]. Add "id asc" when paging so the order is deterministic.
- `view_id` (integer): Record id of a saved custom view to apply.

### `current_rms_list_activities` (~356 tokens)

List activities

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.

Input parameters:

- `filtermode` (string): Which activities to return.
- `filters` (object): 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}…
- `include` (array): Associations to embed.
- `page` (integer): Page number, starting at 1.
- `per_page` (integer): Records per page, 1-100 (default 20).
- `search` (string): Free-text search on subject, description, location or tags.
- `sort` (array): Sort order, e.g. ["name asc"] or ["updated_at desc", "id asc"]. Add "id asc" when paging so the order is deterministic.
- `view_id` (integer): Record id of a saved custom view to apply.

### `current_rms_create_member` (~163 tokens)

Create a member

Create an Organisation, Contact or Venue. To link a new Contact to its Organisation, pass parent_member_id. Current RMS: POST /members.

Input parameters:

- `custom_fields` (object): Custom field values by field name.
- `department` (string): Department (Contacts only).
- `description` (string): Notes about the member.
- `emails` (array): Email addresses to add.
- `membership_type` (string, required): The kind of member.
- `name` (string, required): The member's name.
- `parent_member_id` (integer): Organisation (or Venue) member id to link this Contact to.
- `phones` (array): Phone numbers to add.
- `tag_list` (array): Tags.
- `title` (string): Job title (Contacts only).

### `current_rms_update_member` (~180 tokens)

Update a member

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}.

Input parameters:

- `active` (boolean): Set false to make the member inactive (reversible).
- `custom_fields` (object): Custom field values by field name.
- `description` (string): Notes about the member.
- `emails` (array): Email addresses to add.
- `member_id` (integer, required): The member id.
- `membership_type` (string): The member's EXISTING type — required by the API when updating custom_fields.
- `name` (string): New name.
- `phones` (array): Phone numbers to add.
- `tag_list` (array): Replacement tag list.

### `current_rms_create_opportunity` (~398 tokens)

Create an opportunity

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.

Input parameters:

- `billing_address_id` (integer): The member's address id used for billing.
- `charge_ends_at` (string): Charging period end (UTC).
- `charge_starts_at` (string): Charging period start (UTC).
- `collection_instructions` (string): Collection instructions.
- `custom_fields` (object): Custom field values by field name.
- `customer_collecting` (boolean): The customer collects the goods themselves.
- `customer_returning` (boolean): The customer returns the goods themselves.
- `delivery_instructions` (string): Delivery instructions.
- `description` (string): Internal description.
- `ends_at` (string): Overall end / collection date-time (UTC).
- `external_description` (string): Description shown on customer documents.
- `member_id` (integer): The customer (Organisation/Contact member) id.
- `owned_by` (integer): User member id of the owner.
- `project_id` (integer): The project this opportunity belongs to.
- `rating` (integer): Rating, 0-5.
- `reference` (string): Customer reference, e.g. their PO number.
- `starts_at` (string): Overall start / delivery date-time (UTC).
- `state`: 0 = Enquiry, 1 = Draft, 2 = Quotation. Converting to an Order is left to Current RMS.
- `store_id` (integer, required): The store the job is served from.
- `subject` (string): The opportunity's subject (title).
- `tag_list` (array): Tags.
- `venue_id` (integer): The Venue member id.

### `current_rms_update_opportunity` (~373 tokens)

Update an opportunity

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}.

Input parameters:

- `billing_address_id` (integer): The member's address id used for billing.
- `charge_ends_at` (string): Charging period end (UTC).
- `charge_starts_at` (string): Charging period start (UTC).
- `collection_instructions` (string): Collection instructions.
- `custom_fields` (object): Custom field values by field name.
- `customer_collecting` (boolean): The customer collects the goods themselves.
- `customer_returning` (boolean): The customer returns the goods themselves.
- `delivery_instructions` (string): Delivery instructions.
- `description` (string): Internal description.
- `ends_at` (string): Overall end / collection date-time (UTC).
- `external_description` (string): Description shown on customer documents.
- `member_id` (integer): The customer (Organisation/Contact member) id.
- `opportunity_id` (integer, required): The opportunity id.
- `owned_by` (integer): User member id of the owner.
- `project_id` (integer): The project this opportunity belongs to.
- `rating` (integer): Rating, 0-5.
- `reference` (string): Customer reference, e.g. their PO number.
- `starts_at` (string): Overall start / delivery date-time (UTC).
- `store_id` (integer): Move the job to another store.
- `subject` (string): The opportunity's subject (title).
- `tag_list` (array): Tags.
- `venue_id` (integer): The Venue member id.

### `current_rms_create_activity` (~228 tokens)

Log an activity

Log an activity (call, meeting, task, note) against a member, opportunity or project, optionally with participants. Current RMS: POST /activities.

Input parameters:

- `completed` (boolean): Mark as already completed.
- `description` (string): Details.
- `ends_at` (string): End (UTC).
- `location` (string): Where it takes place.
- `owned_by` (integer): User member id of the owner.
- `participant_member_ids` (array): Member ids to add as participants.
- `priority` (integer): Priority, 1-5.
- `regarding_id` (integer): The id of that record.
- `regarding_type` (string): The kind of record it concerns, e.g. "Opportunity", "Member" or "Project".
- `starts_at` (string): Start (UTC).
- `status_id` (integer): Activity status list-value id.
- `subject` (string, required): The activity's subject.
- `time_status`: 0 = Free, 1 = Busy.
- `type_id` (integer): Activity type list-value id.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-current-rms/current-rms#diagnostics

## Score history

- 2026-10-04: 75
- 2026-10-03: 75
- 2026-10-02: 75
- 2026-10-01: 74
- 2026-09-30: 69
- 2026-09-29: 18

## Common questions

### What is the io.usefulapi/current-rms MCP server?

io.usefulapi/current-rms is an MCP server listed in the public MCP registry as io.usefulapi/current-rms. Browse opportunities, products, stock, availability and invoices, and create quotes in Current RMS. This page covers its hosted endpoint (https://current-rms.usefulapi.io/mcp).

### Is the io.usefulapi/current-rms MCP server safe to use?

io.usefulapi/current-rms scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.usefulapi/current-rms MCP server expose?

io.usefulapi/current-rms exposes 20 tools: current_rms_list_members, current_rms_get_member, current_rms_list_opportunities, current_rms_get_opportunity, current_rms_list_opportunity_items, and 15 more. Their descriptions and schemas cost roughly 4,579 tokens of context every time the server is loaded.

### Does the io.usefulapi/current-rms MCP server require authentication?

Yes. io.usefulapi/current-rms asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the io.usefulapi/current-rms MCP server still maintained?

io.usefulapi/current-rms is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://current-rms.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-current-rms/current-rms.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-current-rms/current-rms.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-current-rms/current-rms
