Overview
game-plugin-oneshot is a Python package that exposes 7 OneShot tools as a Virtuals Protocol GAME worker. It handles x402 payment signing automatically so your GAME agents can send emails, make phone calls, run research, buy products, and build websites.
This plugin builds on
langchain-oneshot under the hood — it reuses the same HTTP + x402 payment flow, so all payments are signed locally via eth-account.Installation
Requirements
- Python 3.10+
- A wallet private key (for x402 payment signing)
- USDC on Base Mainnet
- A Virtuals GAME API key
Dependencies
| Package | Purpose |
|---|---|
game-sdk | Virtuals GAME Agent / Worker interfaces |
langchain-oneshot | HTTP client + x402 payment signing |
eth-account | EIP-712 typed data signing (via langchain-oneshot) |
Quick Start
The SDK operates on Base Mainnet with real USDC. Fund your agent wallet before making paid tool calls.
Available Tools
See Pricing for current tool costs.
| Tool | Description |
|---|---|
oneshot_email | Send emails to real recipients |
oneshot_sms | Send SMS text messages |
oneshot_voice | Make phone calls with AI voice |
oneshot_research | Deep research reports with sources |
oneshot_commerce_search | Search for products |
oneshot_commerce_buy | Purchase products online |
oneshot_build | Generate and deploy websites |
oneshot_browser | Autonomous browser — navigate, click, extract |
oneshot_browser_create_profile | Create persistent browser profile |
oneshot_browser_list_profiles | List all browser profiles |
oneshot_browser_delete_profile | Delete a browser profile |
oneshot_get_balance | Get USDC wallet balance |
The plugin exposes 12 OneShot tools — the ones most useful for autonomous GAME agents. Inbox and notification tools are omitted since GAME agents don’t typically need them.
How Payments Work
All paid tools use the x402 protocol. The flow is fully automatic:- Your GAME agent invokes a tool (e.g.
oneshot_email) - The plugin POSTs to the OneShot API
- The API returns 402 Payment Required with a USDC quote
- The plugin signs a
TransferWithAuthorization(EIP-3009) locally using your private key - The plugin re-POSTs with the signed payment in the
x-paymentheader - The API processes the job and returns the result
Complex Arguments
GAMEArgument only supports scalar types (string, int, float, bool). For tools that need structured input like commerce_buy and build, pass JSON strings:
Configuration
| Parameter | Default | Description |
|---|---|---|
private_key | required | Hex-encoded Ethereum private key |
base_url | None | Override API URL |
Environment Variables
Links
PyPI Package
View on PyPI
Virtuals Protocol
Virtuals Protocol platform
TypeScript SDK
TypeScript SDK docs
LangChain SDK
LangChain integration