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.
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.
$ npx skills add mendixlabs/mxcli --skill mock-rest-apis -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mendixlabs/mxcli mock-rest-apis --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/mock-rest-apis .claude/skills/mock-rest-apis && 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 "mock-rest-apis" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/mock-rest-apis into .claude/skills/mock-rest-apis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mock-rest-apis", 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/mock-rest-apisType 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 mock-rest-apis -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mendixlabs/mxcli mock-rest-apis --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/mock-rest-apis .agents/skills/mock-rest-apis && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "mock-rest-apis" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/mock-rest-apis into .agents/skills/mock-rest-apis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mock-rest-apis", 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 mock-rest-apis -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mendixlabs/mxcli mock-rest-apis --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/mock-rest-apis .cursor/skills/mock-rest-apis && 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 "mock-rest-apis" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/mock-rest-apis into .cursor/skills/mock-rest-apis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mock-rest-apis", 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/mock-rest-apis--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 mock-rest-apis -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mendixlabs/mxcli mock-rest-apis --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/mock-rest-apis .gemini/skills/mock-rest-apis && 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 "mock-rest-apis" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/mock-rest-apis into .gemini/skills/mock-rest-apis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mock-rest-apis", 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 mock-rest-apisInstalls 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 mock-rest-apis -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/mock-rest-apis .github/skills/mock-rest-apis && 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 "mock-rest-apis" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/mock-rest-apis into .github/skills/mock-rest-apis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mock-rest-apis", 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 mock-rest-apis -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 mock-rest-apis --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/mock-rest-apis .opencode/skills/mock-rest-apis && 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 "mock-rest-apis" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/mock-rest-apis into .opencode/skills/mock-rest-apis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mock-rest-apis", 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.
mock-rest-apisStand 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.
Mock REST APIs is an agent skill from 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. Use when building or debugging a REST integration without the real API, forcing a 404/500 through an error handler, or running offline or in CI.
Its SKILL.md is about 2.5k 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 REST APIs, Third-party API integration 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.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 20a6c89. 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.
Shell commands in SKILL.md call:
curlnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl and npm, which can reach the network depending on how they are called.
From 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.
Mock REST APIs loads about 2.5k tokens when it runs. Until then it costs about 84 tokens; SKILL.md has 1,276 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 20a6c89, republished under its Apache-2.0 licence (© mendixlabs). 1,276 words, ~2,484 tokens.
.claude/skills/mock-rest-apis/SKILL.md (or your agent's skills folder).Use this skill when a REST integration needs an endpoint you control instead of a live third-party API — while building it, while reproducing a bug, or while verifying the app in a browser or a test run.
Developing against the real API means network, rate limits, credentials, and a payload that can change under you. None of that is where Mendix integration defects live: those are in the mapping, the entity types, the error handler, and the BSON. A mock removes the variables that are not the bug.
REST CALL microflow before (or without) real credentialstest-app) or running a suite (test-microflows) offline or in CIAlmost every wasted hour here comes from conflating them:
| Problem | Answer |
|---|---|
| Something must answer the request | A mock server: Prism (from a contract), WireMock, mitmproxy |
| The app must send the request there | A constant, a BaseUrl, or a forward proxy — see below |
A mock server is not an interceptor. Prism serves one contract at one port and answers only clients that address it. Asking it to "catch all calls the app already makes" is a category error — that is the forward-proxy job, further down.
Three routes, cheapest first. Pick by how the URL is built.
A REST CALL URL is an expression, so it can be assembled from a constant
(@Module.Constant is Mendix's constant reference — $Name is a variable):
mdl 1;
create constant MyModule.ApiBaseUrl ( Type: String, DefaultValue: 'https://api.example.com/v1' );
create microflow MyModule.CallApi() returns string
begin
$response = call rest service get @MyModule.ApiBaseUrl + '/rates' (
Headers: ('Accept': 'application/json'),
) returns string;
return $response;
end;Then swap the endpoint per run, with no model change and nothing committed:
# this run only — never written to the project
mxcli run --local -p app.mpr --constant MyModule.ApiBaseUrl=http://127.0.0.1:4020
# a test suite against the mock (--constant needs --local)
mxcli test tests/ -p app.mpr --local --constant MyModule.ApiBaseUrl=http://127.0.0.1:4020
# machine-local default, gitignored: every run picks it up
mxcli constant set MyModule.ApiBaseUrl http://127.0.0.1:4020 -p app.mpr
# flip it on an app that is already running
mxcli constant set MyModule.ApiBaseUrl http://127.0.0.1:4020 -p app.mpr --applyconstant set refuses a name the project does not define, so a typo cannot
silently apply to nothing. mxcli constant list -p app.mpr shows the winning
value for every constant and which layer set it — read it first whenever a
run does not use the endpoint you expected.
BaseUrlA REST client document's BaseUrl is a literal; it cannot reference a
constant. Point it at the mock by re-running the create, which is a one-line diff:
mdl 1;
create or modify consumed rest service MyModule.RatesAPI (
OpenAPI: 'specs/rates.json',
BaseUrl: 'http://127.0.0.1:4020'
);BaseUrl also overrides servers[0].url at import time, so one contract can be
imported against the mock and later re-pointed at production.
See §3. This is the most work and the last resort.
npm install -g @stoplight/prism-cli # ~15s
prism mock specs/rates.json --port 4020 # serves the contract's `example` valuesEverything below cost real time to find out and is not on Prism's front page:
servers[0].url. Address it as http://127.0.0.1:4020, not
http://127.0.0.1:4020/v1 — otherwise every path 404s while the server looks
perfectly healthy.servers[0].url absolute in the contract you import. mxcli's OpenAPI
import only accepts an http:// or https:// URL as BaseUrl; a relative one
(/api/v3) is skipped with the warning "server URL … is relative and cannot
be used as BaseUrl; set BaseUrl explicitly in CREATE CONSUMED REST SERVICE", and a
client with no BaseUrl fails at call time, not at import time.Prefer: code=404 on the request forces any status the contract documents.
This is the only practical way to drive a Mendix error handler through a real
HTTP response rather than by hand-editing the model.prism mock -d returns schema-generated random data instead of the
example values. Run the suite both ways: a mapping that quietly depends on
one fixed payload passes under example and fails under -d.security, so a call with no Authorization
header gets a real 401. Useful — but know the ceiling before you design around
it: a REST client document's header value may be a literal, a $Variable, or a
literal prefix plus a variable ('Bearer ' + $Token), and nothing else. A
token that must be computed per call belongs in a REST CALL expression, not
in the document.A contract small enough to read is the point. Hand-cut one path with one
example per response code you care about, and keep it in the project under
specs/ next to the .mpr — the same relative path the OpenAPI: clause takes.
For an app whose model you must not touch, redirect the JVM instead. The Mendix
runtime honours the standard Java proxy properties, and mxcli run --local
passes your environment through to the runtime JVM — including JAVA_TOOL_OPTIONS,
which mxcli appends to rather than replaces, so an exported value survives
even alongside --trace. No model change, nothing committed:
export JAVA_TOOL_OPTIONS="-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080"
mxcli run --local -p app.mprTwo things to know before committing to this route:
http:// targets need none of this — one more reason to have
the mock on loopback HTTP.127.0.0.1 sits in the runtime's
http.nonProxyHosts, so app→mock traffic on loopback works inside a proxied
container without any exemption of your own. It also means a proxy on
127.0.0.1 will not intercept loopback calls — that is not a bug to hunt.For consumed OData services specifically there is a fourth route that needs
no JVM flags: System.ConsumedODataConfiguration carries ProxyConfiguration,
ProxyHost and ProxyPort as data (see system-module), so the proxy can be
set per service at runtime.
Always prove the endpoint from the shell first. A Mendix error message cannot distinguish "the mock is not running" from "the mapping is wrong".
curl -sS -i http://127.0.0.1:4020/rates # 200 + the example payload?
curl -sS -i -H 'Prefer: code=404' http://127.0.0.1:4020/ratesThen, and only then, run the microflow and check the payload actually reached it
(mxcli oql, or the runtime log under mxcli run --local).
| Symptom | Cause | Fix |
|---|---|---|
| Every path 404s, server looks fine | The client address includes the contract's base path | Address Prism at the root: http://127.0.0.1:4020 |
Import produced a client with no BaseUrl | servers[0].url is relative — mxcli warned and skipped it | Make it absolute, or pass BaseUrl: explicitly |
| Prism never finishes starting | Vendor contract is tens of MB | Cut the paths you need into a small contract |
| Mock returns 401 | The contract declares security; the call sent no credentials | Add the header, or drop security from your cut contract |
| Calls still reach the real API | Proxy properties not applied, or the target is loopback (never proxied) | Check the JVM args; prefer the constant route over a proxy |
| Endpoint swapped but the app disagrees | An override on a different layer wins | mxcli constant list -p app.mpr — it names the layer |
Works with example values, fails in CI | The mapping depends on one fixed payload | Run prism mock -d locally and fix the mapping |
rest-client — the three ways to call a REST API; where the contract goes once you have onerest-call-from-json — JSON structure → entities → import mapping → REST CALLtest-app — browser verification; a REST app's prerequisite is a reachable endpointtest-microflows — running a suite; --constant points it at the mockrun-local — mxcli run --local, the warm loop the mock plugs into© 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/mock-rest-apis of mendixlabs/mxcli.
Open the folder on GitHubat commit 20a6c89
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.
Mock REST APIs 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 |
|---|---|---|---|---|---|---|
| Mock REST APIs this skillmendixlabs/mxcli | 128 | 1 repos | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| OpenAPI CLI CallerEvilFreelancer/openapi-to-cli | 265 | — | ~879 | Automated safety check: Pass | MIT | |
| Soundcloud API Integrationsoundcloud/api | 258 | — | ~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
Define event-driven APIs over Kafka with Mendix business event services — publish and subscribe contracts, CREATE/DROP/DESCRIBE.
mendixlabs/mxcli
Search the Mendix Catalog platform service registry (catalog.mendix.com) from the CLI to find services published across an organisation.
Works with
Categories
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. Mock REST APIs is an agent skill from 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.
Mock REST APIs fits situations like: debugging a REST integration without the real API; forcing a 404/500 through an error handler; running offline.
Run `npx skills add mendixlabs/mxcli --skill mock-rest-apis -a claude-code`. Or copy the skill folder (.claude/skills/mendix/mock-rest-apis in mendixlabs/mxcli) into .claude/skills/mock-rest-apis in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mendixlabs/mxcli --skill mock-rest-apis -a codex`. Or copy the skill folder (.claude/skills/mendix/mock-rest-apis in mendixlabs/mxcli) into .agents/skills/mock-rest-apis 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 mock-rest-apis -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mock-rest-apis, .gemini/skills/mock-rest-apis, .github/skills/mock-rest-apis and .opencode/skills/mock-rest-apis in your project.
Going by SKILL.md and its folder, Mock REST APIs needs the command-line tools its instructions call (curl and npm). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use curl and npm, which can reach the network depending on how they are called. 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.
Mock REST APIs 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 2.5k tokens (SKILL.md is roughly 9.9k 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 Mock REST APIs: OpenAPI CLI Caller (EvilFreelancer/openapi-to-cli, 265 stars), Soundcloud API Integration (soundcloud/api, 258 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 72 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.