Agent skill

REST Client

by mendixlabs in mendixlabs/mxcli

Call external REST APIs from Mendix — the three approaches (inline REST CALL, consumed REST client document, generated from OpenAPI) and how to choose.

Apache-2.0Auto-check passedBackend & APIs

Install REST Client

skills CLI
$ npx skills add mendixlabs/mxcli --skill rest-client -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mendixlabs/mxcli rest-client --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/mendix/rest-client .claude/skills/rest-client && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
rest-client
GitHub stars
128
Used in
1 other repo
Token cost
~3.9k tokens
SKILL.md length
999 words
Files
1
Skills in repo
75
Repo updated
First seen
Licence
Apache-2.0

At a glance

Call external REST APIs from Mendix — the three approaches (inline REST CALL, consumed REST client document, generated from OpenAPI) and how to choose.

  • Works in 2 steps: Create the REST Client → Call from a Microflow
  • Integrating with any external REST API
  • SKILL.md covers Three Approaches, Approach 0: OpenAPI Import…, Approach 1: REST Client (Manual) and Approach 2: REST CALL (Inline…, plus 5 more sections
  • Reaches petstore3.swagger.io and api.open-meteo.com

What it does

REST Client is an agent skill from mendixlabs/mxcli. Call external REST APIs from Mendix — the three approaches (inline REST CALL, consumed REST client document, generated from OpenAPI) and how to choose. Use when integrating with any external REST API.

Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Third-party API integration, REST APIs and OpenAPI specifications. It works with OpenAPI. The repository describes itself as: Mendix cli tool, a headless way to work with Mendix projects. Enables Mendix projects for use with 3rd party agentic coding tools like Claude Code and Copilot. Includes a… The licence is Apache-2.0.

When your agent uses it

  • Integrating with any external REST API
  • Tasks that involve Third-party API integration
  • Tasks that involve REST APIs

Example prompts

  • “/rest-client”

Workflow steps

2 steps, taken from the step headings in SKILL.md.

  1. Create the REST Client
  2. Call from a Microflow

What it can do on your machine

Read from SKILL.md and the folder at commit a924d11. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are sql).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • petstore3.swagger.io
    • api.open-meteo.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

REST Client loads about 3.9k tokens when it runs. Until then it costs about 53 tokens; SKILL.md has 999 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~53
When it runs · the whole SKILL.md, loaded when a task matches
~3.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from mendixlabs/mxcli at commit a924d11, republished under its Apache-2.0 licence (© mendixlabs). 999 words, ~3,869 tokens.

Download SKILL.mdSave it as .claude/skills/rest-client/SKILL.md (or your agent's skills folder).
name
rest-client
description
Call external REST APIs from Mendix — the three approaches (inline REST CALL, consumed REST client document, generated from OpenAPI) and how to choose. Use when integrating with any external REST API.

REST Integration Skill

Use this skill when integrating with external REST APIs from Mendix.

Three Approaches

Mendix offers three ways to call REST APIs from microflows. Choose based on the use case:

ApproachWhen to UseArtifacts
OpenAPI importAPI has an OpenAPI 3.0 spec — auto-generate from the specREST client document generated in one command
REST Client (manual)No spec available, or need fine-grained controlREST client document + microflow
REST CALL (inline)One-off calls, quick prototyping, dynamic URLs, low-level HTTP controlMicroflow only

Both REST Client approaches can be combined with Data Transformers (Mendix 11.9+) and Import/Export Mappings to map between JSON and entities.

No API to call against yet — or one you would rather not depend on while building? mock-rest-apis covers standing up an endpoint you control and pointing the app at it.


Approach 0: OpenAPI Import (Fastest)

If the API has an OpenAPI 3.0 spec (JSON or YAML), generate the REST client in one command:

sql
mdl 1;
-- From a local file (relative to the .mpr file)
create or modify consumed rest service CapitalModule.CapitalAPI (
  OpenAPI: 'specs/capital.json'
);

-- From a URL
create or modify consumed rest service PetStoreModule.PetStoreAPI (
  OpenAPI: 'https://petstore3.swagger.io/api/v3/openapi.json'
);

-- Override the base URL (replaces servers[0].url from the spec)
create or modify consumed rest service PetStoreModule.PetStoreStaging (
  OpenAPI: 'https://petstore3.swagger.io/api/v3/openapi.json',
  BaseUrl: 'https://staging.petstore.example.com/api/v3'
);

This generates:

  • All operations with correct HTTP method, path, parameters, headers, body, and response type
  • Resource groups based on OpenAPI tags
  • Basic auth if the spec declares it at the top level
  • The spec stored inside the document for Studio Pro parity

BaseUrl is optional. When omitted, servers[0].url from the spec is used — but only if it is absolute. A relative server URL (/api/v3) cannot be a BaseUrl: the import warns ("server URL … is relative and cannot be used as BaseUrl") and leaves the client without one, which fails at call time rather than at import time. Set BaseUrl explicitly in that case.

When provided, BaseUrl overrides the spec's value — useful when the spec points at production but you need to import against staging, a different version, or a local mock (see mock-rest-apis).

Preview without writing:

sql
describe contract operation from openapi 'specs/capital.json';

After import: the REST client is ready to use with SEND REST REQUEST. No manual operation definition needed.


Approach 1: REST Client (Manual)

Define the API once as a REST client document, then call its operations from microflows.

Step 1 — Create the REST Client
sql
mdl 1;
create consumed rest service Module.OpenMeteoAPI (
  BaseUrl: 'https://api.open-meteo.com/v1',
  authentication: none
)
{
  operation GetForecast (
    method: get,
    path: '/forecast',
    query: ($latitude: decimal, $longitude: decimal, $current: string),
    headers: ('Accept': 'application/json'),
    timeout: 30,
    response: json as $WeatherJson
  )

  operation PostData (
    method: post,
    path: '/submit',
    headers: ('Content-Type': 'application/json'),
    body: json from $JsonPayload,
    response: none
  )
};

A header value is a template, like the path: {Name} is the operation parameter Name, which must be declared in Parameters: (CE7056 otherwise).

text
parameters: ($Token: string),
headers: ('Authorization': 'Bearer {Token}')

'Bearer ' + $Token is the old spelling of the same header (MDL-DEPR711); mxcli fmt --upgrade rewrites it. It used to store only Bearer .

Authentication
sql
-- No authentication
authentication: none

-- Basic auth
authentication: basic (username: 'user', password: 'secret')
Body Types
sql
-- JSON variable (Mendix expression stored on the operation)
body: json from $JsonPayload

-- String template with parameter placeholders
body: template '{ "name": "{name}", "value": {value} }'

-- Export mapping (entity → JSON, aligned with export mapping syntax)
body: mapping Module.RequestEntity {
  name = Name,
  email = Email,
}

There is no binary/file body here. A consumed operation's body is one of Rest$JsonBody, Rest$StringBody or Rest$ImplicitMappingBody, so a file document has nowhere to go. body: file from $Doc is refused as MDL-REST02 — it used to be written as a string body holding the literal text $Doc, which returns HTTP 200 with a 4-byte payload.

Upload binary from a microflow instead, which does have a binary body:

sql
call rest service post 'https://api.example.com/upload' (
  Headers: ('ContentType': 'application/pdf'),
  Body: binary $Doc/Contents,
) returns response;

response: file as $Doc on an operation is unaffected — downloads work.

Response Types
sql
-- Simple types (variable binding is at the call site, not stored on the operation)
response: json as $Result
response: string as $text
response: file as $Document
response: status as $Code
response: none

-- Import mapping (JSON → entity, aligned with import mapping syntax)
response: mapping Module.ResponseEntity {
  "Id" = "id",
  "status" = "status",
  create Module.Items_Response/Module.Item = items {
    "Sku" = "sku",
    "Quantity" = "quantity",
  }
}

mapping takes an ENTITY plus a body — never a mapping document. The name after mapping is the target entity, and the { ... } body lists the JSON fields; Mendix stores the result inline on the operation (Rest$ImplicitMappingResponseHandling). A consumed REST operation has nowhere to put a reference to a standalone import/export mapping — the metamodel defines only the inline handler and "no response handling". So this is wrong, and is now rejected by mxcli check as MDL-REST01:

sql
response: mapping Module.IMM_Something   -- ✗ names a mapping document, no body

If you already have an import mapping document you want to reuse, call it from the microflow instead — send rest request with response: json as $Raw, then $Obj = import from mapping Module.IMM_Something($Raw).

Show full SKILL.md (427 more words)Show less
Reaching a nested JSON member

A member several levels down is written with /, exactly as in a mapping document — you do NOT need an entity for the levels in between:

sql
response: mapping Module.FlatProbe {
  "ItemId" = "id",
  "Title"  = "fields/Title",     -- reaches {"fields": {"Title": …}}
}

Mendix stores that as the pipe path (Object)|fields|Title. Before mxcli 0.19.x the inline serializer appended the text verbatim, producing (Object)|fields/Title — one member with a slash in its name — which passed mxcli check, exec, mx check and describe, and returned an empty column at runtime with no diagnostic. If you are on an older build, give each level its own entity instead.

An export body's nested elements

Body: MAPPING is an EXPORT mapping, and its nested elements must not be "create". mxcli writes them correctly, but it is worth knowing what a wrong one looks like, because mxbuild does not report it as a check error — it throws while loading the project, so the app cannot be opened at all:

System.AggregateException: … (Export Object Mappings cannot have
ObjectHandling set to 'Create')

Query parameters carry no type in the Mendix model: Rest$QueryParameter stores a name only. MDL still requires $name: Type for the sake of the grammar, but the type is dropped at write time, so describe re-emits every query parameter as String.

Step 2 — Call from a Microflow
sql
mdl 1;
create microflow Module.ACT_GetWeather ()
returns Module.WeatherInfo as $Weather
begin
  -- Call the REST client operation
  send rest request Module.OpenMeteoAPI.GetForecast;

  -- Extract response body from system variable
  declare $RawJson string = $latestHttpResponse/content;

  -- (Optional) Transform with JSLT
  $SimplifiedJson = transform $RawJson with Module.SimplifyWeather;

  -- Import into entity
  $Weather = import from mapping Module.IMM_Weather($SimplifiedJson);

  return $Weather;
end;

CRITICAL: After send rest request, the response is in $latestHttpResponse (System.HttpResponse):

  • $latestHttpResponse/content — response body (String)
  • $latestHttpResponse/StatusCode — HTTP status (Integer)
Show / Describe / Drop
sql
list consumed rest services [in module];
describe consumed rest service Module.ClientName;
drop consumed rest service Module.ClientName;
create or modify consumed rest service Module.ClientName ...  -- idempotent

Approach 2: REST CALL (Inline HTTP)

Call an HTTP endpoint directly from a microflow — no REST client document needed. Best for one-off calls, dynamic URLs, or low-level control.

sql
-- Simple GET returning a string
$response = call rest service get 'https://api.example.com/data' (
  Headers: ('Accept': 'application/json'),
  Timeout: 30,
) returns string;

-- GET with URL template parameters
$response = call rest service get 'https://api.example.com/users/{1}' with (
  {1} = toString($UserId)
) (
  Headers: ('Accept': 'application/json'),
) returns string;

-- POST with body
$response = call rest service post 'https://api.example.com/items' (
  Headers: ('Content-Type': 'application/json'),
  Body: template '{"name": "test"}',
) returns string;

-- With basic auth
$response = call rest service get 'https://api.example.com/secure' (
  Authentication: basic (Username: 'username', Password: 'password'),
) returns string;

-- With import mapping (JSON → entity)
$item = call rest service get 'https://api.example.com/item/1' (
  Headers: ('Accept': 'application/json'),
) returns mapping Module.IMM_Item as Module.Item;

-- Fire and forget
call rest service delete 'https://api.example.com/item/1'
  returns nothing;

-- Error handling
$response = call rest service get 'https://api.example.com/data'
  returns string
  on error continue;

Data Transformers (JSLT — Mendix 11.9+)

Transform complex JSON responses into simpler structures before import mapping.

sql
-- Define the transformer
create data transformer Module.SimplifyWeather
source json '{"latitude": 52.52, "current": {"temperature_2m": 12.8, "wind_speed_10m": 18.3}}'
{
  jslt $$
{
  "temp": .current.temperature_2m,
  "wind": .current.wind_speed_10m,
  "lat": .latitude
}
  $$;
};

-- Use in a microflow
$SimplifiedJson = transform $RawJson with Module.SimplifyWeather;

Single-line JSLT: jslt '{ "temp": .current.temperature_2m }'; Multi-line JSLT: jslt $$ { ... } $$; (dollar-quoting, same as Java actions)

sql
list data transformers [in module];
describe data transformer Module.Name;
drop data transformer Module.Name;

JSON Structures & Mappings

See json-structures-and-mappings for full reference. Quick summary:

sql
mdl 1;
-- JSON structure from snippet
create json structure Module.JSON_Weather
sample '{"temp": 12.8, "wind": 18.3, "lat": 52.52}';

-- Non-persistent entity
create non-persistent entity Module.WeatherInfo (
  Temperature: decimal,
  WindSpeed: decimal,
  Latitude: decimal
);

-- Import mapping (JSON → entity)
create import mapping Module.IMM_Weather
  with json structure Module.JSON_Weather
{
  create Module.WeatherInfo {
    Temperature = temp,
    WindSpeed = wind,
    Latitude = lat
  }
};

Use them in a microflow:

sql
$Weather = import from mapping Module.IMM_Weather($JsonString);
$JsonOutput = export to mapping Module.EMM_Weather($WeatherEntity);

Complete Pipeline Example

Full example: call weather API → transform → import → show on page.

sql
mdl 1;
-- 1. Entity
create non-persistent entity Module.CurrentWeather (
  Temperature: decimal,
  WindSpeed: decimal,
  Latitude: decimal,
  ObservationTime: datetime
);

-- 2. Data Transformer (simplify API response)
create data transformer Module.SimplifyWeather
source json '{"latitude":52.52,"current":{"time":"2024-01-15T14:00","temperature_2m":12.8,"wind_speed_10m":18.3}}'
{
  jslt $$
{
  "temperature": .current.temperature_2m,
  "windSpeed": .current.wind_speed_10m,
  "latitude": .latitude,
  "observationTime": .current.time
}
  $$;
};

-- 3. JSON Structure + Import Mapping (for transformed output)
create json structure Module.JSON_Weather
sample '{"temperature":12.8,"windSpeed":18.3,"latitude":52.52,"observationTime":"2024-01-15T14:00"}';

create import mapping Module.IMM_Weather
  with json structure Module.JSON_Weather
{
  create Module.CurrentWeather {
    Temperature = temperature,
    WindSpeed = windSpeed,
    Latitude = latitude,
    ObservationTime = observationTime
  }
};

-- 4. REST Client
create consumed rest service Module.WeatherAPI (
  BaseUrl: 'https://api.open-meteo.com/v1',
  authentication: none
)
{
  operation GetCurrent (
    method: get,
    path: '/forecast',
    query: ($latitude: decimal, $longitude: decimal, $current: string),
    headers: ('Accept': 'application/json'),
    response: json as $Result
  )
};

-- 5. Microflow (REST Client → Transform → Import)
create microflow Module.ACT_GetWeather ()
returns Module.CurrentWeather as $Weather
begin
  send rest request Module.WeatherAPI.GetCurrent;
  declare $RawJson string = $latestHttpResponse/content;
  $SimplifiedJson = transform $RawJson with Module.SimplifyWeather;
  $Weather = import from mapping Module.IMM_Weather($SimplifiedJson);
  return $Weather;
end;

Mendix Validation Rules

RuleErrorFix
Every operation MUST have an Accept headerCE7062Auto-added by serializer if missing
POST/PUT/PATCH MUST have a bodyCE7064Auto-added by serializer (empty JSON body)
Template placeholders must match parametersCE7056{name} requires a parameter named name
No custom error handling on SEND REST REQUESTCE6035Always uses abort-on-error semantics
Data Transformer requires 11.9+version checkcheckFeature("integration", "data_transformer", ...)

BSON Types Reference

MDL ConceptBSON Type
REST client documentrest$ConsumedRestService
Operationrest$RestOperation
GET/DELETE methodrest$RestOperationMethodWithoutBody
POST/PUT/PATCH methodrest$RestOperationMethodWithBody
JSON bodyrest$JsonBody
Template bodyrest$StringBody
Export mapping bodyrest$ImplicitMappingBody
No responserest$NoResponseHandling
Import mapping responserest$ImplicitMappingResponseHandling
Headerrest$HeaderWithValueTemplate
Path parameterrest$OperationParameter
Query parameterrest$QueryParameter
Data transformerDataTransformers$DataTransformer
JSLT stepDataTransformers$JsltAction
Transform actionmicroflows$TransformJsonAction
Send request actionmicroflows$RestOperationCallAction
Inline HTTP actionmicroflows$RestCallAction

© mendixlabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/mendix/rest-client of mendixlabs/mxcli.

Open the folder on GitHubat commit a924d11

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in mendixlabs/mxcli, which our catalogue first saw on October 7, 2026.

Compare with similar skills

REST Client next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

REST Client compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
REST Client this skillmendixlabs/mxcli1281 repos~3.9kAutomated safety check: PassApache-2.0
OpenAPI CLI CallerEvilFreelancer/openapi-to-cli265—~879Automated safety check: PassMIT
Soundcloud API Integrationsoundcloud/api257—~787Automated safety check: PassNone
ToolJet Marketplace Plugin BuilderToolJet/ToolJet41k—~2.1kAutomated safety check: PassAGPL-3.0
API DesignerJeffallan/claude-skills12k2 repos~2kAutomated safety check: PassMIT
OpenAPI to MCP Servermcp-use/mcp-use11k—~5.2kAutomated safety check: PassApache-2.0

Similar skills

  • OpenAPI CLI Caller

    EvilFreelancer/openapi-to-cli

    Turns an OpenAPI, Swagger or OpenRPC spec into CLI commands the agent can search and call, with no MCP server or code generation.

    265 GitHub stars~879 tokensUpdated 15 days ago
    Backend & APIsAuto-check passed
  • Integrates applications with the SoundCloud HTTP API using OAuth 2.1, OpenAPI, and developer docs.

    257 GitHub stars~787 tokensUpdated 7 days ago
    Backend & APIsAuto-check passed
  • Turns an API description, such as an OpenAPI file or a Postman collection, into a connector plugin for ToolJet's marketplace and checks it with the repo's validator.

    41k GitHub stars~2.1k tokensUpdated today
    Backend & APIsAuto-check passed
  • API Designer

    Jeffallan/claude-skills

    Designs REST and GraphQL APIs from resource modeling to an OpenAPI 3.1 contract, with versioning, pagination and RFC 7807 error handling.

    12k GitHub starsUsed in 2 repos~2k tokens
    Backend & APIsAuto-check passed
  • OpenAPI to MCP Server

    mcp-use/mcp-use

    Turns an OpenAPI or Swagger spec into an MCP server with the mcp-use TypeScript SDK, mapping each operation to a tool, wiring auth, testing and deploying.

    11k GitHub stars~5.2k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Use Yaak

    mountain-loop/yaak

    A skill your agent uses when the user mentions Yaak, a Yaak workspace, or the yaak command, or asks to call, hit, or smoke test HTTP/REST endpoints, save or organize API requests for reuse or manual…

    19k GitHub stars~1.9k tokensUpdated today
    Backend & APIsAuto-check passed

More from mendixlabs/mxcli

All 75 skills in this repo
  • Mendix Odata Pushdown

    mendixlabs/mxcli

    Push OData query options into the SQL of a Mendix resource served by a read microflow, so $filter, $orderby, $top, $skip, $count and the key lookup reach the database instead of being silently…

    128 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Mendix Vega Charts

    mendixlabs/mxcli

    Chart a Mendix app with Vega-Lite through a pluggable widget that takes the specification and the data as separate properties, so the model emits rows and never assembles a chart payload.

    128 GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Agents

    mendixlabs/mxcli

    Author Mendix AI agent documents in MDL — Model, Knowledge Base, Consumed MCP Service and Agent, with variables, tools and multi-line prompts.

    128 GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed
  • Mendix Bulk Oql Dml

    mendixlabs/mxcli

    Run set-based INSERT, UPDATE and DELETE against Mendix entities through OQL statements, which the runtime supports and Studio Pro cannot author.

    128 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Mock REST APIs

    mendixlabs/mxcli

    Stand up an HTTP endpoint you control instead of a live third-party API, and point the Mendix app at it — Prism from an OpenAPI contract, a constant swap, or a forward proxy.

    128 GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Analyze Runtime

    mendixlabs/mxcli

    Find out what a running Mendix app actually does — logs, Prometheus metrics, OpenTelemetry traces and the model catalog, joined across sources.

    128 GitHub stars~2.8k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about REST Client

What does REST Client do?

Call external REST APIs from Mendix — the three approaches (inline REST CALL, consumed REST client document, generated from OpenAPI) and how to choose. REST Client is an agent skill from mendixlabs/mxcli. Call external REST APIs from Mendix — the three approaches (inline REST CALL, consumed REST client document, generated from OpenAPI) and how to choose.

When should I use REST Client?

REST Client fits situations like: integrating with any external REST API; tasks that involve Third-party API integration; tasks that involve REST APIs.

How do I install REST Client in Claude Code?

Run `npx skills add mendixlabs/mxcli --skill rest-client -a claude-code`. Or copy the skill folder (.claude/skills/mendix/rest-client in mendixlabs/mxcli) into .claude/skills/rest-client in your project. Claude Code loads it when a task matches its description.

How do I install REST Client in Codex?

Run `npx skills add mendixlabs/mxcli --skill rest-client -a codex`. Or copy the skill folder (.claude/skills/mendix/rest-client in mendixlabs/mxcli) into .agents/skills/rest-client in your project. Codex loads it when a task matches its description.

Can I use REST Client in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mendixlabs/mxcli --skill rest-client -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rest-client, .gemini/skills/rest-client, .github/skills/rest-client and .opencode/skills/rest-client in your project.

What does REST Client need to run?

SKILL.md names no scripts, command-line tools or credentials: REST Client is instructions for the agent only.

Does REST Client access the network?

SKILL.md names 2 domains. In commands or code: petstore3.swagger.io and api.open-meteo.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is REST Client safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does REST Client use?

REST Client is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does REST Client use?

About 3.9k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to REST Client?

Skills that share tags, products or a category with REST Client: OpenAPI CLI Caller (EvilFreelancer/openapi-to-cli, 265 stars), Soundcloud API Integration (soundcloud/api, 257 stars), ToolJet Marketplace Plugin Builder (ToolJet/ToolJet, 41k stars) and API Designer (Jeffallan/claude-skills, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains REST Client?

mendixlabs (a GitHub organization) maintains it in mendixlabs/mxcli, which has 128 GitHub stars. The repository holds 75 skills in this directory. The repository was last updated on October 7, 2026.

Source: mendixlabs/mxcli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.