This repo ships fast-pay-mcp as a local stdio MCP server. The recommended first CI integration is still Claude Code, but the same Fast marketplace MCP setup can also be used from Codex and Gemini workflows in GitHub Actions.
The ready-to-copy workflow templates live at:
- examples/github-actions/claude-code-fast-pay.yml
- examples/github-actions/codex-fast-pay.yml
- examples/github-actions/gemini-fast-pay.yml
They stay outside .github/workflows/ on purpose so they do not run in this repo by default.
npm cion a GitHub-hosted runner- inline MCP config for
fast-pay-mcp - a dedicated Fast CI wallet passed in through GitHub secrets
- local spend controls through
FAST_MARKETPLACE_CONFIG - one sync route example and one async route example
- post-run spend review through
/me/spend
- Action:
anthropics/claude-code-base-action - Auth:
ANTHROPIC_API_KEYorCLAUDE_CODE_OAUTH_TOKEN - MCP config: inline
mcp_config
- Action:
openai/codex-action - Auth:
OPENAI_API_KEY - MCP config:
config.tomlinsidecodex-home
There is no GitHub Actions equivalent of Claude Code OAuth for Codex in the official action today. The supported production path is API-key based.
- Action:
google-github-actions/run-gemini-cli - Auth:
GEMINI_API_KEY - MCP config:
settingswritten to.gemini/settings.json
Add these as repository or organization Actions secrets before copying the example workflow into a live repo:
MARKETPLACE_API_BASE_URL: Fast marketplace API base URL, for examplehttps://api.marketplace.fast.xyzMARKETPLACE_FAST_NETWORK:mainnetortestnetFAST_PRIVATE_KEY: dedicated CI wallet private key as a 32-byte hex string
Then add the runner-specific model credential:
- Claude:
ANTHROPIC_API_KEYorCLAUDE_CODE_OAUTH_TOKEN - Codex:
OPENAI_API_KEY - Gemini:
GEMINI_API_KEY
Do not reuse a personal day-to-day wallet for CI. Use a dedicated wallet with a small balance and narrow local spend controls.
Point FAST_MARKETPLACE_CONFIG at a checked-in config file such as examples/fast-marketplace.ci.config.json.
The recommended baseline is:
- strict route allowlist
- conservative
maxPerCall - optional
manualApprovalAboveonly for attended runs - optional
dailyCapwith a runner-local caveat
dailyCap is stored in the local CLI config ledger. On default GitHub-hosted runners that state does not persist across jobs, so dailyCap is not a reliable cross-run budget unless you add your own persistence layer.
fast-pay-mcp exposes the following tools:
marketplace_searchmarketplace_showmarketplace_callmarketplace_topupmarketplace_get_job
The template currently standardizes on this pair:
- sync:
tavily.search - async:
apify-google-search.search-results
The template assumes two common CI paths:
- A sync enrichment call, for example research or documentation lookup through a Fast-executed proxy route
- An async job kickoff followed by
marketplace_get_jobpolling
Both refs map to currently deployed marketplace-operated services:
tavily.searchfrom the Tavily proxy atfast-mainnet-provider-tavilyapify-google-search.search-resultsfrom the Google Search Results Scraper atfast-provider-apify-google-search
- The templates run the MCP server from source with
npx tsx packages/mcp/src/index.ts. That avoids requiring a prebuilt published MCP package. - The runner still needs this repo checked out because the MCP server and CLI live in the workspace.
- The Claude example uses
anthropics/claude-code-base-action@betabecause it has an explicitmcp_configinput for inline stdio server setup. - The Codex example uses
openai/codex-action@v1and writes aconfig.tomlintocodex-homebefore invoking the action. - The Gemini example uses
google-github-actions/run-gemini-cli@v0and passes an inlinesettingsJSON payload withmcpServers. - Keep the templates outside
.github/workflows/until you are ready to run them for real.
- Copy one of the templates into your repo’s
.github/workflows/ - Confirm the route refs still match the published marketplace services in your target environment
- Add the required GitHub secrets for the selected runner
- Fund the dedicated CI wallet
- Start with
workflow_dispatchbefore enabling automatic PR triggers
After the first run, review marketplace spend in the wallet-authenticated spend dashboard at /me/spend.
Use the smoke check below to verify the non-interactive stdio path locally:
npm run test:mcp:ci-smokeThat command launches fast-pay-mcp as a subprocess, connects to it over stdio, and exercises a mock marketplace route with env-only wallet configuration.