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.
Call external REST APIs from Mendix — the three approaches (inline REST CALL, consumed REST client document, generated from OpenAPI) and how to choose.
$ npx skills add mendixlabs/mxcli --skill rest-client -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mendixlabs/mxcli rest-client --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "rest-client" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/rest-client into .claude/skills/rest-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rest-client", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/rest-clientType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mendixlabs/mxcli --skill rest-client -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mendixlabs/mxcli rest-client --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/mendix/rest-client .agents/skills/rest-client && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "rest-client" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/rest-client into .agents/skills/rest-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rest-client", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mendixlabs/mxcli --skill rest-client -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mendixlabs/mxcli rest-client --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/mendix/rest-client .cursor/skills/rest-client && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "rest-client" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/rest-client into .cursor/skills/rest-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rest-client", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mendixlabs/mxcli.git --path .claude/skills/mendix/rest-client--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mendixlabs/mxcli --skill rest-client -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mendixlabs/mxcli rest-client --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/mendix/rest-client .gemini/skills/rest-client && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "rest-client" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/rest-client into .gemini/skills/rest-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rest-client", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mendixlabs/mxcli rest-clientInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mendixlabs/mxcli --skill rest-client -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/mendix/rest-client .github/skills/rest-client && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "rest-client" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/rest-client into .github/skills/rest-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rest-client", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mendixlabs/mxcli --skill rest-client -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mendixlabs/mxcli rest-client --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/mendix/rest-client .opencode/skills/rest-client && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "rest-client" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/rest-client into .opencode/skills/rest-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rest-client", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
rest-clientCall 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. 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.
2 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a924d11. It shows what the files ask for, not the result of running them.
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.
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.
Hosts in commands or code, which the agent is likely to contact:
petstore3.swagger.ioapi.open-meteo.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from mendixlabs/mxcli at commit a924d11, republished under its Apache-2.0 licence (© mendixlabs). 999 words, ~3,869 tokens.
.claude/skills/rest-client/SKILL.md (or your agent's skills folder).Use this skill when integrating with external REST APIs from Mendix.
Mendix offers three ways to call REST APIs from microflows. Choose based on the use case:
| Approach | When to Use | Artifacts |
|---|---|---|
| OpenAPI import | API has an OpenAPI 3.0 spec — auto-generate from the spec | REST client document generated in one command |
| REST Client (manual) | No spec available, or need fine-grained control | REST client document + microflow |
| REST CALL (inline) | One-off calls, quick prototyping, dynamic URLs, low-level HTTP control | Microflow 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.
If the API has an OpenAPI 3.0 spec (JSON or YAML), generate the REST client in one command:
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:
tagsBaseUrl 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:
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.
Define the API once as a REST client document, then call its operations from microflows.
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).
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 .
-- No authentication
authentication: none
-- Basic auth
authentication: basic (username: 'user', password: 'secret')-- 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:
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.
-- 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:
response: mapping Module.IMM_Something -- ✗ names a mapping document, no bodyIf 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).
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:
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.
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.
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)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 ... -- idempotentCall an HTTP endpoint directly from a microflow — no REST client document needed. Best for one-off calls, dynamic URLs, or low-level control.
-- 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;Transform complex JSON responses into simpler structures before import mapping.
-- 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)
list data transformers [in module];
describe data transformer Module.Name;
drop data transformer Module.Name;See json-structures-and-mappings for full reference. Quick summary:
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:
$Weather = import from mapping Module.IMM_Weather($JsonString);
$JsonOutput = export to mapping Module.EMM_Weather($WeatherEntity);Full example: call weather API → transform → import → show on page.
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;| Rule | Error | Fix |
|---|---|---|
| Every operation MUST have an Accept header | CE7062 | Auto-added by serializer if missing |
| POST/PUT/PATCH MUST have a body | CE7064 | Auto-added by serializer (empty JSON body) |
| Template placeholders must match parameters | CE7056 | {name} requires a parameter named name |
| No custom error handling on SEND REST REQUEST | CE6035 | Always uses abort-on-error semantics |
| Data Transformer requires 11.9+ | version check | checkFeature("integration", "data_transformer", ...) |
| MDL Concept | BSON Type |
|---|---|
| REST client document | rest$ConsumedRestService |
| Operation | rest$RestOperation |
| GET/DELETE method | rest$RestOperationMethodWithoutBody |
| POST/PUT/PATCH method | rest$RestOperationMethodWithBody |
| JSON body | rest$JsonBody |
| Template body | rest$StringBody |
| Export mapping body | rest$ImplicitMappingBody |
| No response | rest$NoResponseHandling |
| Import mapping response | rest$ImplicitMappingResponseHandling |
| Header | rest$HeaderWithValueTemplate |
| Path parameter | rest$OperationParameter |
| Query parameter | rest$QueryParameter |
| Data transformer | DataTransformers$DataTransformer |
| JSLT step | DataTransformers$JsltAction |
| Transform action | microflows$TransformJsonAction |
| Send request action | microflows$RestOperationCallAction |
| Inline HTTP action | microflows$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
Just SKILL.md in .claude/skills/mendix/rest-client of mendixlabs/mxcli.
Open the folder on GitHubat commit a924d11
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.
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| REST Client this skillmendixlabs/mxcli | 128 | 1 repos | ~3.9k | Automated safety check: Pass | Apache-2.0 | |
| OpenAPI CLI CallerEvilFreelancer/openapi-to-cli | 265 | — | ~879 | Automated safety check: Pass | MIT | |
| Soundcloud API Integrationsoundcloud/api | 257 | — | ~787 | Automated safety check: Pass | None | |
| ToolJet Marketplace Plugin BuilderToolJet/ToolJet | 41k | — | ~2.1k | Automated safety check: Pass | AGPL-3.0 | |
| API DesignerJeffallan/claude-skills | 12k | 2 repos | ~2k | Automated safety check: Pass | MIT | |
| OpenAPI to MCP Servermcp-use/mcp-use | 11k | — | ~5.2k | Automated safety check: Pass | Apache-2.0 |
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.
soundcloud/api
Integrates applications with the SoundCloud HTTP API using OAuth 2.1, OpenAPI, and developer docs.
ToolJet/ToolJet
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.
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.
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.
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…
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…
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.
mendixlabs/mxcli
Author Mendix AI agent documents in MDL — Model, Knowledge Base, Consumed MCP Service and Agent, with variables, tools and multi-line prompts.
mendixlabs/mxcli
Run set-based INSERT, UPDATE and DELETE against Mendix entities through OQL statements, which the runtime supports and Studio Pro cannot author.
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.
mendixlabs/mxcli
Find out what a running Mendix app actually does — logs, Prometheus metrics, OpenTelemetry traces and the model catalog, joined across sources.
Works with
Categories
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.
REST Client fits situations like: integrating with any external REST API; tasks that involve Third-party API integration; tasks that involve REST APIs.
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.
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.
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.
SKILL.md names no scripts, command-line tools or credentials: REST Client is instructions for the agent only.
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.
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.
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.
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.
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.
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.