Surf

tech.geckovision由 geckovision.tech 發布官方發布者v0.2.0更新於 Oct 27, 2026

Point Gecko at an OpenAPI spec; get first-call-correct, auth-hidden agent tools.

已驗證Streamable HTTP可網頁執行金融開發者工具AI 與機器學習

概覽

AI 產生的概覽

Surf(Gecko)把 OpenAPI 規格、文件網站或 Solana 程式轉成助理可呼叫的 MCP 工具,隱藏驗證資訊,並在花錢的呼叫前先做模擬。

可以做什麼
  • 列出此主機上提供的 API 介面,並給出可重新連線的 MCP 位址
  • 把已理解的 API 介面以貼近問題的 MCP 工具形式提供給助理,憑證在呼叫時注入
  • 在簽章之前,對涉及花費的呼叫在分叉上模擬並回傳收據
  • 為規格評分、從文件還原草稿規格、繪製某個介面的呼叫圖
  • 執行首次呼叫正確性測試,並核對文件宣稱與實際是否一致
適用情境
當助理需要呼叫混亂的 API(付費牆、頻繁變動、沒有文件或鏈上),或要在無人看管下以憑證或資金執行高風險動作,並希望呼叫先被驗證而不是靠猜時,值得加入。若 API 乾淨且有人審閱變更,可能並不需要。
執行需求
可使用託管的 Streamable-HTTP 端點,或在本機安裝:npm 套件 @geckovision/gecko(預先編譯的執行檔)或 PyPI 套件 gecko-surf(可選 serve 附加元件)。即時模式需透過 gecko auth 指令主動設定供應商憑證,憑證存放於作業系統鑰匙圈。未宣告任何環境變數或標頭。
安裝前請注意
即時模式會在呼叫時注入真實的供應商憑證,鑰匙圈設定應視為一次刻意的操作。涉及花費的呼叫會先模擬,但 README 中有一個真實主網付款的例子,核准計畫前應確認其實際行為。此伺服器儲存介面與正確性中繼資料;README 稱其從不儲存回應內容、餘額或密鑰,也從不簽章或廣播。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Surf,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/tech.geckovision%2Fsurf/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "surf": {
      "type": "http",
      "url": "https://mcp.geckovision.tech/mcp"
    }
  }
}

README

[Gecko — the web wasn't built for agents. Yet.]

Stop letting your agent guess

Check the call before it counts. Gecko is open-source and runs on your machine:
one command maps any API — messy, paywalled, or on-chain — into a call graph your agent
checks instead of guesses from, and anything that spends is simulated to a receipt first.
No wallet, no payment rail, no key held — 64 mainnet transactions, 49 with a cost predicted before signing, 47 of those exact to the unit (re-read from the chain, 2026-09-19).

[Python 3.11+] [MCP] [tests] [Apache 2.0] [x402]

Quickstart · Docs · Architecture · FAQ · Security

Built for the calls your agent must not get wrong. Two axes, either one qualifies: a messy surface (paywalled, drifting, undocumented, on-chain) or a high-stakes action (your agent runs unattended with credentials or money).

What Gecko is

Gecko is an open-source knowledge graph built specifically for AI agents that call APIs. Point it at an OpenAPI spec, a docs site, or a Solana program's IDL and source, and it reads that surface into a graph your agent traverses — every fact tagged with where it came from, and anything it cannot establish flagged rather than guessed.

A specification tells your agent what a call looks like. It cannot tell it whether the call will work. That gap is in every spec, including a perfect one, and it is where agents fail expensively: not on the call that errors, but on the call that is accepted and wrong. Gecko closes it by handing back one specific call — and, for anything that spends, by simulating that call against real state first and returning a receipt.

It is not the agent and not an orchestrator. It holds no key, signs nothing, broadcasts nothing, and stores no response payload — it stores surfaces and correctness metadata, never your data.

Quick start

No install:

bash
npx @geckovision/gecko doctor              # 1. check your environmentnpx @geckovision/gecko add <spec-or-docs>  # 2. comprehend it — $0, no live callnpx @geckovision/gecko report <spec>       # 3. get the scorecard — grade + findingsnpx @geckovision/gecko serve <spec>        # 4. your agent uses it over MCP

Or install once:

bash
npm install -g @geckovision/gecko          # prebuilt binary — no Python neededuv tool install "gecko-surf[serve]"        # or pip, if you want the Python package
gecko add <spec-or-docs>

Plug into your agent:

bash
# Claude Codeclaude mcp add my-api -- npx -y @geckovision/gecko serve <spec> --stdio
# Cursor / VS Code / any MCP client — mcp.json{ "mcpServers": { "my-api": { "command": "npx", "args": ["-y", "@geckovision/gecko", "serve", "<spec>", "--stdio"] } } }

Going live is a separate, deliberate step:

bash
gecko auth set <provider>                  # key goes to your OS keychain — never mcp.json

Then your agent asks questions, not endpoints:

Which fixtures kick off in the next hour, and what are the current odds?What is the peg state of USDC right now?Plan a swap of SOL for USDC on Meteora, bin_step 4.

Why

An OpenAPI says what exists. An IDL says what a program looks like. Neither is enough to act:

  • Docs drift. Working integrations broke twice in 2026 from silent layout changes.
  • IDLs drop facts. A required Pump.fun account never appears in the IDL at all.
  • Agents guess. A wrong guess posts a charge, reverts a transaction, burns fees.

Gecko replaces the guess with a graph:

  • Every edge carries provenance — extracted from the surface, recovered from source, or honestly flagged as unknown. Never fabricated.
  • Every action can be verified first — simulated on a $0 mainnet fork to a receipt: pass, or a classified revert, before any spend.
  • Every failure teaches — outcomes land in a categorical corpus; a drift series flags when a provider ships a change that breaks a working call.
  • Auth is invisible to the agent — keys injected at call time from your keychain. The model never sees a credential.

Under the hood

Most agent-tool layers are thin wrappers. Gecko is a memory substrate, and three of its design choices are deliberately different from the textbook:

ChoiceWhy it matters
Deterministic semantic memory — lexical retrieval, no vector DBthe graph never "approximately" remembers; BM25 and vectors sit behind evidence gates
Self-generated episodic memory — categorical outcomes + a drift seriesGecko re-simulates to create its own episodes; no dependence on your data plane, no payloads stored
Typed procedural memory — plans as executable JSONlanding plans and derive orders a builder can run; text loses the join, ours can't

And the depth is measured, not asserted:

  • The overlay artifact. For every auto-comprehended program, Gecko emits the exact list of facts that could not be derived from any public surface (overlays/) — the value of comprehension, quantified per program.
  • Seven security layers, fail-closed: spec sanitizer · per-tool quarantine · image Skill Guard · SSRF netguard · out-of-band auth anchoring · verdict signing gate · an AST-enforced never-sign boundary.
  • The numbers: 5,043 tests · 64 mainnet transactions, 47/49 predictions exact · 5 paid by a fee relay, the buyer holding no SOL, the last four a USDG→USDC→purchase route · 8 Solana programs wired, 4 differential-proven · 2 live receipt-pairs · −77%/−89% measured context cuts · a 4,534-program catalog listed · 0 auth headers exposed across 14 real specs.

Explore the diagrams: architecture on docs.geckovision.tech (all three views, rendered) · the map in this repo

Proof, not promises

Live, on a mainnet fork, $0:

CaseNaive pathGecko
Pump.fun buy❌ reverts — AccountNotInitialized (3012)✅ lands — 86,669 CU
Pump.fun sell❌ transfers the tokens, then reverts — InvalidBondingCurveV2 (6074)✅ lands — 50,783 CU
Meteora DLMM swap❌ reverts — derive-only, no ATA/wrap/bin-array preludes✅ wrap → swap → unwrap — 81,964 CU
Meteora pool derivation❌ stale 3-seed scheme → the wrong pool, silently✅ correct 4-seed derivation, differential-proven
Docs-only API (no spec)agent invents endpoints✅ draft spec recovered, verified VERIFIED/REFUTED

The facts behind those passes are not on any surface: a 4th PDA seed the SDK added in 2024, an account the IDL only mentions in prose, a fee field resolved by a refuting simulation. That is the graph your agent traverses.

Use cases

TxLINE (paywalled sports odds) — without vs with Gecko

[70-second demo — 18 first-call-correct tools, 8/8 poisoned attacks blocked, 32/32 correctness checks] · MP4

Cross-API correlation — three APIs, one question

Pegana × Birdeye × Jupiter joined on a declared entity; the agent plans across surfaces first-try. Try it: gecko graph svg <spec> renders any surface's call graph.

Solana programs — buy a coffee on mainnet

Everything above is a $0 fork. This one is not: real mainnet, real USDC, a real espresso.

let_me_buy is a storefront program on Solana. A merchant stands up a store and lists products priced in USDC; a buyer scans a QR code and pays. One account per store — PDA(["receipts", store_name]) — holds the menu, the receipts, the running count and the merchant's authority.

[An agent resolves a store name to its own on-chain accounts, predicts the compute cost, signs in an enclave, and settles a real 0.1 USDC espresso on Solana mainnet]

MP4 version — one unedited take. The receipt says 24,956 CU before anything is signed; the chain charges 24,956 CU (4X8dCyZU…, slot 439046190). The key never leaves its enclave.

bash
uvx --from "gecko-surf[serve,solana]" gecko-orquestra --program let_me_buy --stdio

Two facts the IDL does not carry, and both break the call:

  • mark_as_delivered declares its receipts seed as store_name, but that instruction's own arguments are _store_name and receipt_id. The seed names an argument that does not exist, so a deriver resolving seeds by argument name gets nothing for the one seed that selects the store. Gecko binds by seed value.
  • In make_purchase the store's authority is writable but not a signer. The buyer pays from ATA(signer, mint); the store is credited at ATA(authority, mint) — same mint, different owner. Derive both from one owner and you have built a purchase that pays the buyer back. Gecko refuses that plan before a builder is ever asked.

The prediction tracks state, not a memorised constant. Three purchases at this one storefront were charged 23,789 → 24,183 → 24,956 CU; the last two are the same product. Each sale appends a receipt to the store's account, so the program does more work — and the receipt predicted the new number each time it was asked.

Gecko recovers what the surface drops, Orquestra builds the instruction, and the receipt says whether it lands — before any signature.

Architecture

[Gecko architecture — untrusted surfaces → provenance knowledge graph → verified action (simulate → receipt → external signer)]

Control plane, never data plane. Gecko stores surfaces + correctness metadata — never response payloads, user data, or secrets.

  1. Ingest — OpenAPI / docs / IDL / program source → sanitized, quarantine-checked.
  2. Comprehend — normalized ops, recovered PDA seeds, generated configs + measured overlays.
  3. Know — the provenance graph (surface, program, cross-API joins).
  4. Project — question-shaped tools over MCP; auth stripped; −77%/−89% context cuts measured on two real specs.
  5. Verify — plan → external builder → simulate → receipt → fail-closed signing gate. Gecko never signs, never broadcasts.
  6. Learn — categorical outcomes → drift series → back into the graph.

Interactive diagrams · llms.txt · Receipt semantics

What you get

CapabilityEntry point
Serve any API to agents over MCPgecko serve <spec>
Scorecard: grade + fixable findings + Playgroundgecko report <spec>
Recover a draft spec from human docsgecko from-docs <url>
First-call-correctness tests for CIgecko test <spec>
The surface graph, renderedgecko graph svg <spec>
Program Surface: recovered seeds + derive plansgecko orquestra --program <name>
find_start: intent → the right starting instructiongecko orquestra find-start "..."
Simulate → receipt on a built transactiongecko/simulate.py (engine)
Embed the SDKfrom gecko import AgentApiClient
Verify docs claims against realitygecko verify-docs <spec>
Scan a skill image for hidden payloadsgecko scan-image <path>

Skills

The engine is the product; the skills are how an agent learns to drive it. Six of them ship as one plugin — markdown the agent reads, no executable logic of its own.

/plugin marketplace add GeckoVision/gecko-surf/plugin install gecko-surf@geckovision
SkillForWhat it does
use-any-apiagent builderCall an unfamiliar API first-call-correct — point Gecko at OpenAPI or docs, get intent-shaped MCP tools with auth hidden
read-js-docsagent builderExtract the API surface from JS-rendered docs, when curl returns an empty shell
anti-poisoningagent builderDefend against a poisoned spec — one written to route your agent's arguments or exfiltrate your key
skill-guardagent builderDefend against a poisoned artifact — an image or convention page carrying an instruction your agent will follow and your reviewer cannot see
api-agent-readyAPI providerMake your own API's whole surface agent-usable, alongside whatever MCP you already ship
x402-payai-setupAPI providerWire pay-per-call onto your API. You keep 100% — Gecko is not the rail and takes no cut

The two defense skills are one disease with two deliveries: a poisoned spec aims at what your agent calls, a poisoned artifact aims at what your agent does. Full map and status in skills/README.md.

Modes

  • Recorded (default): $0, schema-synthesized responses, fully offline. Falsify everything before any live call.
  • Live: same code path; credentials injected from your keychain at the edge. gecko auth set <provider> — deliberate, never implicit.

Hosted

The engine in this repo also runs at mcp.geckovision.tech — comprehended surfaces served over Streamable-HTTP MCP, keys injected server-side. Developers never pay; providers pay a flat price per API. Gecko takes no cut, holds no funds, signs nothing. → docs.geckovision.tech

Repo map

PathWhat
gecko/the engine — ingest, catalog, tools, graphs, simulate, corpus
gecko/providers/program surfaces (Meteora, Pump.fun, Jupiter, ORE, MetaDAO) + configs
scripts/, gecko/cli.pythin transport — parse, call the package, format
skills/the agent-facing plugin — six skills, agents, commands
docs/architecture, receipt semantics, specs, benchmarks
examples/forkable starters

Development

bash
uv run ruff format && uv run ruff check --fixuv run mypy geckouv run pytest                # 5,043 passinguv run python -m gecko.demo  # $0 recorded E2E
FAQ

Is this a tool-generation wrapper? No. Tool generation is the table stakes. The product is the verified graph (provenance on every edge), the receipt (simulate before money moves), and the drift series (know when a provider breaks you).

Who is it for? Two axes — either one qualifies: a messy surface (paywalled, drifting, undocumented, on-chain), or a high-stakes action (your agent runs unattended with credentials or money). Clean API + a human reviewing the diff? You may not need us — and that's fine.

Does Gecko sign or hold funds? Never. Gecko never signs, never broadcasts, never builds the production transaction — sim-only unsigned assembly is the documented carve-out, AST-enforced at the sign/send boundary. Building belongs to builders (e.g. Orquestra), signing to signers (wallet / TEE / you).

What does Gecko store? Surfaces and correctness metadata. Never payloads, balances, pubkeys-in-outcomes, or secrets. The corpus is categorical, closed-vocabulary, audited.

Vector database? No — retrieval is lexical and deterministic (token-overlap; BM25 and semantic tiers both sit behind evidence gates that flip only on measured recall failure — including one measured negative result on embeddings).

Is it free? The engine is Apache-2.0, complete, self-hostable. The hosted layer is what an API provider buys. Developers never pay.

Contributing

PRs welcome. Run the toolchain above before pushing. Security findings → SECURITY.md.

License

Apache-2.0 — see LICENSE.

來源:README.md,提交 18dd707

工具

1

list_surfaces

List hosted surfaces

Every API surface served on this host, with the MCP URL to reconnect to. Use it when you landed on the host root and need a specific API. Free, instant, and it lists only what the public index lists.

無需輸入參數。

版本歷史

1
  1. v0.2.0最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分