Plugin Distribution
One local MCP package, thin host wrappers.
Use llms.txt for the no-install hosted proof. Use froglet-mcp and plugins for real local/self-hosted Froglet actions.
- Official MCP Registry: publish
server.jsonafter the matching npm package version exists. - Codex plugin bundle: use
plugins/froglet/plus.agents/plugins/marketplace.jsonfor repo-local coding-agent distribution. - Claude Code marketplace: use
.claude-plugin/marketplace.jsonplus the sameplugins/froglet/bundle. - OpenClaw package: ship the checked-in source plugin after host install verification.
- NemoClaw package: verify NemoClaw-specific sandbox and HTTPS deltas before claiming support.
- Third-party MCP directories: submit only after the official registry entry is live.
A hosted consumer app directory path is intentionally out of scope for this repo slice. If that path returns later, it should be a separate consumer app, not the local stdio MCP package.
MCP Registry
Section titled “MCP Registry”The repository carries the MCP Registry metadata:
cat server.jsonThe npm package also declares the registry name:
"mcpName": "io.github.armanas/froglet"Publish order:
npm run check:mcpnpm run test:mcpnpm pack --dry-runnpm publish --provenance=false --otp <npm-otp>mcp-publisher login githubmcp-publisher publishcurl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.armanas/froglet"Expected live result: the registry search returns
io.github.armanas/froglet, package identifier froglet-mcp, version 0.4.0,
and isLatest: true.
Verification commands:
npm view froglet-mcp versionnode -e 'fetch("https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.armanas/froglet&limit=20").then(r=>r.json()).then(j=>{const row=j.servers?.find(x=>x.server?.name==="io.github.armanas/froglet"&&x._meta?.["io.modelcontextprotocol.registry/official"]?.isLatest); const s=row?.server; console.log(JSON.stringify({name:s?.name, package:s?.packages?.[0]?.identifier, version:s?.version, isLatest:row?._meta?.["io.modelcontextprotocol.registry/official"]?.isLatest}, null, 2));})'node -e 'fetch("https://froglet.dev/learn/plugin-distribution/").then(r=>console.log(r.status, r.headers.get("content-type")))'Do not use curl https://froglet.dev/learn/plugin-distribution/ as a proof
command. That URL is a rendered documentation page, so raw curl output is
HTML by design.
Repo-local artifacts:
plugins/froglet/.codex-plugin/plugin.jsonplugins/froglet/.mcp.jsonplugins/froglet/skills/froglet/SKILL.mdplugins/froglet/commands/froglet.md.agents/plugins/marketplace.json.cursor/mcp.json
The plugin starts the published MCP package in local mode:
{ "mcpServers": { "froglet": { "type": "stdio", "command": "npx", "args": ["-y", "froglet-mcp"], "env": { "FROGLET_PROFILE": "local", "FROGLET_PROVIDER_URL": "http://127.0.0.1:8080", "FROGLET_RUNTIME_URL": "http://127.0.0.1:8081", "FROGLET_PROVIDER_AUTH_TOKEN_PATH": "data/runtime/froglet-control.token", "FROGLET_RUNTIME_AUTH_TOKEN_PATH": "data/runtime/auth.token" } } }}First call status. If the local node is not ready, use plan_install and
get_install_guide before shell commands. After local health is verified, use
plan_use_case before implementing the user’s first consumer, provider,
evidence, payments, batch, or GPU workflow.
Codex CLI 0.114.0 exposes codex mcp, but no public plugin install or
plugin validate command. Until Codex exposes that host workflow, Codex plugin
verification means metadata inspection plus direct MCP stdio smoke, not a clean
plugin-install claim.
The npm MCP package version and the host-plugin wrapper version are separate.
Bump package.json and server.json for froglet-mcp package or registry
changes. Bump plugin manifests and Claude marketplace metadata for wrapper-only
skills, commands, or host packaging changes.
Cursor
Section titled “Cursor”The repo includes .cursor/mcp.json for project-scoped Cursor MCP setup. It
starts npx -y froglet-mcp against the local provider/runtime and token paths.
Cursor host verification still requires Cursor or cursor-agent; when neither
binary is installed, only config, MCP server tests, and direct stdio smoke are
verified.
Claude Code
Section titled “Claude Code”GitHub-hosted install path:
claude plugin marketplace add armanas/froglet --sparse .claude-plugin pluginsclaude plugin install froglet@frogletLocal validation path:
claude plugin validate .claude plugin marketplace add . --scope localclaude plugin install froglet@froglet --scope localExpected proof: the plugin installs, starts the bundled MCP server, reports local
status, then performs one real local action once the provider/runtime and token
paths are available.
Claude Code also exposes /froglet, a command that follows the same local
status, install-planning, and real-use-case flow through the MCP tool.
OpenClaw And NemoClaw
Section titled “OpenClaw And NemoClaw”OpenClaw/NemoClaw use the checked-in source plugin until their package/registry surface is verified:
node --check integrations/openclaw/froglet/index.jsnode --check integrations/openclaw/froglet/scripts/doctor.mjsnode --test integrations/openclaw/froglet/test/plugin.test.js \ integrations/openclaw/froglet/test/config-profiles.test.mjs \ integrations/openclaw/froglet/test/doctor.test.mjs \ integrations/openclaw/froglet/test/froglet-client.test.mjsOpenClaw usually talks to loopback. NemoClaw usually runs inside a sandbox and must reach the host over HTTPS, so do not claim NemoClaw marketplace/package completion until that path is run in a real NemoClaw environment.
Current OpenClaw evidence covers static checks, plugin tests, doctor runtime checks, and direct source-plugin tool invocation. Full OpenClaw gateway-mediated invocation remains separate evidence.
NemoClaw remains blocked until a real NemoClaw/OpenShell sandbox can stage the
plugin source and token, reach the host over HTTPS, and run one froglet tool
action.
Third-Party MCP Directories
Section titled “Third-Party MCP Directories”Reusable submission metadata lives in docs/MCP_DIRECTORY_SUBMISSIONS.md.
The official MCP Registry is active for io.github.armanas/froglet at 0.4.0;
third-party listings are not complete until each public listing points at
froglet-mcp, Apache-2.0, the GitHub repository, and the local/self-hosted
MCP boundary.
Boundary
Section titled “Boundary”Every host must keep the same product boundary:
- no-install hosted proof:
https://froglet.dev/llms.txt, public freedemo.*services, receipt/feed evidence, and no local secrets - installed MCP/plugins: local/self-hosted provider/runtime actions, paid rails, persistent identity, service publication, marketplace write flows, long jobs, batch, GPU, and production use cases