Give any AI agent the ability to browse the web, fill forms, login to services, sign crypto transactions, send and receive email, watch for changes, and make payments. 9 primitives, 2 site skills + template, an intelligent router, and an MCP server.
import { Reach } from 'reach';
const reach = new Reach();
// Read a webpage
const page = await reach.fetch('https://example.com');
console.log(page.content);
// Click a button
await reach.act('https://example.com', 'click', { text: 'Sign Up' });
// Login to a service
await reach.authenticate('github', 'cookie');
// Sign a message
const sig = await reach.sign('hello world');
// Send an email
await reach.email('client@example.com', 'Audit Complete', 'Found 3 issues...');
// Watch for changes
const watcher = await reach.observe('https://api.example.com/price', {
interval: 60000,
field: 'data.price',
threshold: 100,
direction: 'above',
}, (event) => console.log('Price alert!', event));
// Send ETH
await reach.pay('0x1234...', '0.01', { token: 'USDC' });
// Natural language
await reach.do('search github for solidity audit tools');
await reach.close();
Register a name on ExoHost and get myagent.mfer.one (website) + myagent@mfer.one (email inbox). Free for 5+ character names. Remote inbox API for reading email without running a local server.
| Primitive | Purpose | Example |
|---|---|---|
| ----------- | --------- | --------- |
fetch(url) | Read any webpage (HTTP or browser) | reach.fetch('https://example.com', { format: 'json' }) |
act(url, action, params) | Interact with pages (click, type, submit) | reach.act(url, 'click', { text: 'Submit' }) |
authenticate(service, method) | Login and stay logged in | reach.authenticate('github', 'cookie') |
sign(payload) | Crypto signing (message, tx, EIP-712) | reach.sign('hello', { type: 'message' }) |
persist(key, value) / recall(key) | State memory | reach.persist('count', 42) |
observe(target, options, cb) | Watch for changes | reach.observe(url, { interval: 30000 }, cb) |
pay(recipient, amount, opts) | Send ETH/ERC-20/x402 payments | reach.pay('0x...', '0.01') |
see(url) | Screenshot + accessibility tree | reach.see('https://example.com') |
email(to, subject, body) | Send and receive email (mfer.one) | reach.email('x@y.com', 'Hi', 'Hello') |
reach.do('search github for solidity') parses and executesPicks the best interaction layer: API > HTTP > Browser > Vision
node src/mcp.js
Tools: web_fetch, web_act, web_authenticate, web_sign, web_see, web_email
node src/cli.js fetch https://example.com
node src/cli.js act https://example.com click "Sign Up"
node src/cli.js do "search github for solidity jobs"
node src/cli.js inbox --unread
node src/cli.js replay
node src/cli.js webhook --port 8430 --on /github
PRIVATE_KEY=0x... # Wallet private key for signing/payments
RPC_URL=https://... # RPC endpoint (default: Base mainnet)
RESEND_API_KEY=re_... # Email sending via Resend
CAPSOLVER_API_KEY=CAP-... # CAPTCHA solving
GITHUB_TOKEN=ghp_... # GitHub API access
共 1 个版本
暂无安全检测报告