openapi.json. Gecko comprehends the API’s surface, turns every endpoint
into a question-shaped, first-call-correct tool with a JSON schema, and hands your agent
a one-line “add me” string. No client to hand-write, no guessing whether the agent is
calling it right.
Try it in 10 seconds — no install
Give your agent a live, Gecko-comprehended surface and watch it call correctly — nopip, no spec, no key:
claude mcp add and /plugin are Claude-Code-only. In Cursor (~/.cursor/mcp.json),
VS Code, or any other MCP client, add the same endpoint to your mcp.json:2025-11-25), not SSE. From the Python
MCP SDK use mcp.client.streamable_http.streamablehttp_client(url) — an sse_client returns 400.In Claude Code — install the plugin
The plugin bundles the skills + commands and wires that live demo surface, so one install gives your agent working tools and the workflow to make your own API agent-ready:/make-agent-ready <openapi-url> comprehends your API and serves it over MCP; you
also get /setup-x402 and the anti-poisoning guard.
Bring your own API — run the CLI
No install needed — run it straight from PyPI withuvx (the npx equivalent for Python):
gecko-surf; the CLI is gecko; the SDK is from gecko import ….
The gecko CLI has three verbs — serve (this page), test (first-call-correctness
checks), and from-docs (comprehend an API that has no OpenAPI). Bare gecko <url>
is shorthand for gecko serve <url>.
Bundled examples & your keys (the fastest path)
Two ready-to-run surfaces ship in the package — no spec file needed:Local vs hosted. An API that needs your key runs locally — the key stays on
your machine. The hosted
mcp.geckovision.tech serves only the public surfaces
(Gecko never holds a user’s key), so it can’t serve a keyed API like Colosseum.1. Serve any API to your agent (the one-minute path)
gecko serve <openapi-url> SSRF-validates the spec, comprehends it, prints the MCP URL + a
one-click “add” string for Claude Code / Cursor / VS Code, then serves the API over
Streamable-HTTP MCP.

claude mcp add … line (or open the Cursor / VS Code deeplink) and
your agent can call the API — first try, right params:

Auth-gated operations are hidden from the agent unless the session can satisfy them.
The CLI defaults to
--mode recorded ($0, synthesized) — pass --mode live for real
upstream calls. Exposing it to a remote agent? Add --public-url https://<your-tunnel>.2. Embed the SDK
Building your own app or agent loop? Skip the server and import the engine — no extras needed.AgentApiClient is the one object that makes an API agent-usable: point it at a
spec, search for a capability, call it.
search() returns ranked entries (name, summary, path, method). call()
returns {status, request, method, data, mode}. With a no-auth session, any operation
that requires auth is automatically hidden from the agent — it can’t satisfy it, so it
never tries. For a paywalled API, pass a Session whose auth_headers() returns your
credentials (BYOK) — the key is injected at call time and never reaches the agent.
A complete forkable example — an app on any API in ~20 lines — lives in
examples/_starter/;
for a full LLM agent (Telegram + a tool-use loop), see examples/sos_vzla_bot/.
3. Falsify it offline first — $0 recorded mode
mode="recorded" runs the same code path as live, but synthesizes the response from
the API’s own response schema instead of hitting the network. No keys, no subscription,
no spend — so you can prove the agent picks the right call and builds a well-formed
request before you go live.

Recorded mode and the test suite need no API keys and no subscription. The
recorded response is synthesized from the spec’s response schema, so it proves the agent
picked the right call and built a well-formed request — not that the upstream returned
that exact data.
Recorded vs live — what unlocks live.
python -m gecko.demo (and gecko serve) run
recorded ($0) by default, and auto-switch to live the moment a real session or
credential is present — no flag to remember. The demo goes live when it finds a TxODDS
session (~/.gecko/txodds-session.json, or TXODDS_API_TOKEN + TXODDS_JWT); a served
API goes live once you’ve stored its key (gecko auth set <api>). So a recorded run means
everything is wired correctly — you just haven’t supplied a live credential yet. Live data
for a paid/gated API also needs that provider’s real session (e.g. TxODDS’s on-chain
subscription), which is separate from Gecko.Prove it’s correct — gecko test
Generate and run first-call-correctness checks for every usable tool, offline:
No OpenAPI? Comprehend the docs — gecko from-docs
Not every painful API ships a spec. Point Gecko at the doc site and it recovers a draft
OpenAPI, then comprehends it into agent tools:
Going live
Recorded mode needs nothing. For live data you pass a realSession; the call uses the
same code path, differing only at the transport edge: