AI agents hire people for work they can't finish alone, paid via stablecoin escrow on Base.
The marketplace where AI agents hire people.
π Production dApp β’ π€ Agent Index (/llms.txt) β’ π Integration Guide (/llms-full.txt) β’ π Agent Manifest (/agents.txt)
Mercadopleis is an open-source marketplace on Base Mainnet where AI agents, and the people who build them, hire humans for the work models can't finish alone.
Agents already pay for APIs and compute on their own. What they still can't do is curate and validate a dataset, red-team their own prompts, get data out of a hard site, build an automation in someone else's stack or transcribe messy audio. People can. Mercadopleis connects the two: an agent (or its builder) finds a service through MCP, the API or the web, funds a non-custodial stablecoin escrow (native USDC on Base today), and the seller is paid when the work is approved or the 5-day review ends. The fee is a fixed 3%, paid by the seller.
It is not a micropayments rail for machine-to-machine calls, and it is not trying to replace general freelance platforms: it sits where agent demand meets human work.
submitDelivery() before funds can be released. For files uploaded to the platform it is the hash of the file itself, so any later change is detectable. For external links it is the hash of the link text: it proves which link was delivered, not what the link serves, so sellers should link to a fixed version (a Git commit or release, an IPFS CID)./llms.txt, /agents.txt, /api/services) let an agent find a service and prepare the payment for its own wallet; human sellers and buyers use the web app. MERCADO PLEIS
β
βββββββββββββββΌββββββββββββββ
βΌ βΌ βΌ
HUMANOS LLM/AGENT DEVELOPERS
β β β
Web UI llms.txt API docs
β agents.txt β
βββββββββββββββ¬ββββββββββββββ
βΌ
SERVICE REGISTRY
/api/services
(filter by capability + price)
βΌ
USDC ESCROW
(Base Mainnet)
βΌ
REAL ORDERS
βΌ
REPUTATION ON-CHAIN
Mercadopleis exposes a 3-tier discovery surface designed for LLM models, agents, and automated clients:
| File / Endpoint | Purpose | Audience |
|---|---|---|
/llms.txt | Curated, lightweight overview and index linking to core resources | LLM tools & AI crawlers |
/llms-full.txt | Comprehensive technical manual, Solidity ABI methods, and Viem walkthrough | Agent developers |
/agents.txt | Machine-readable manifest of identity, network, and capabilities | Autonomous agents |
/api/services | REST API supporting capability, minPrice, maxPrice, maxDeliveryDays | Programmatic consumers |
@mercadopleis/mcp-server | MCP server: search, compare, prepare unsigned escrow orders and buyer follow-ups (approve, dispute, timeout refund), sign in with the agent's wallet, message the seller, download and verify deliverables. Non-custodial, holds no keys. npx -y @mercadopleis/mcp-server | MCP clients (Claude Code, Claude Desktop, Cursor) |
import { createWalletClient, parseUnits } from 'viem';
import { base } from 'viem/chains';
const ESCROW_ADDRESS = '0x18E51cB821A90EE1DA678492DdFDBe54332f35f3';
const USDC_ADDRESS = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
// 1. Search services by capability
const res = await fetch('https://mercadopleis.club/api/services?capability=spanish-audio-transcription&maxPrice=25');
const { services } = await res.json();
const targetService = services[0];
// 2. Approve USDC
await walletClient.writeContract({
address: USDC_ADDRESS,
abi: erc20Abi,
functionName: 'approve',
args: [ESCROW_ADDRESS, parseUnits(targetService.priceUsdc, 6)],
});
// 3. Fund Escrow Order on Base
const txHash = await walletClient.writeContract({
address: ESCROW_ADDRESS,
abi: marketplaceEscrowAbi,
functionName: 'createAndFundOrder',
args: [targetService.seller.walletAddress, USDC_ADDRESS, parseUnits(targetService.priceUsdc, 6), targetService.deliveryDays],
});
0x18E51cB821A90EE1DA678492DdFDBe54332f35f3 (source verified on BaseScan and Sourcify)0x41880C194F31b1D9AbAC53513De176f2892315EA0x9E5b4C1112F026568233DC571Dd4120DbE9fBF480x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913)ReentrancyGuard and Checks-Effects-Interactions pattern across all state-mutating methods.The contract inherits OpenZeppelin's Ownable2Step and Pausable for safe protocol maintenance:
FEE_BPS = 300), a constant in the contract. It is charged on the amount paid to the seller when the escrow ends (approval, auto-release or arbitrated payout), so on a normal order it is 3% of the total. It cannot be changed by anyone, including the owner, and a full refund to the buyer carries no fee.arbitrator role authorized to resolve open disputes by splitting the order amount between buyer and seller. During the current validation stage the arbitrator is the platform operator; the plan to move disputes to a neutral, decentralized court (without a token) is in docs/DISPUTE_RESOLUTION.md.See SECURITY.md for vulnerability disclosure policies and ROADMAP.md for the public roadmap.
The same contract code is deployed on Base Sepolia (chain ID 84532) at 0x41880C194F31b1D9AbAC53513De176f2892315EA, so builders can test the full flow with free test tokens: mint test USDC at /faucet, fund an escrow order, deliver and release. Testnet activity never counts toward reputation. Details for agents are in /llms-full.txt (section 7). For the MCP server, set MERCADOPLEIS_CHAIN_ID=84532.
mercadopleis/
βββ apps/
β βββ web/ # Next.js 15 App Router web dApp and API routes
βββ contracts/ # Foundry smart contracts, tests, and deployment scripts
β βββ src/MarketplaceEscrow.sol
β βββ test/MarketplaceEscrow.t.sol
β βββ script/DeployMainnet.s.sol
βββ packages/
β βββ contracts-abi/ # Typed ABIs and deployed address registry
β βββ database/ # Drizzle ORM schema, relations, and Neon client
β βββ mcp-server/ # MCP server for AI agents (stdio)
β βββ types/ # Domain models and marketplace categories
βββ apps/web/public/ # llms.txt, llms-full.txt, agents.txt (served at the site root)
βββ docs/DISPUTE_RESOLUTION.md # Design: decentralized dispute resolution and contract governance
βββ .github/workflows/ci.yml # Lint, typecheck, unit tests, web build, forge test
βββ .env.example # Local environment template
βββ LICENSE # Apache-2.0
βββ ROADMAP.md # Public roadmap
βββ SECURITY.md # Security & responsible disclosure policy
βββ CONTRIBUTING.md # Contribution guidelines
# 1. Clone repository
git clone https://github.com/castiquark/mercadopleis.git
cd mercadopleis
# 2. Install dependencies
pnpm install
# 3. Configure environment
cp .env.example apps/web/.env.local
# 4. Start local web server
pnpm run dev
# 5. Run unit tests (SIWE, auth, fee math, MCP)
pnpm test
# 6. Run smart contract test suite
cd contracts
forge test -vvv
| Purpose | Address |
|---|---|
| General, partnerships, builders | hello@mercadopleis.club |
| Order, payment or dispute help | support@mercadopleis.club |
| Security vulnerability reports | security@mercadopleis.club (see SECURITY.md) |
Mercadopleis is open-source software licensed under the Apache License 2.0.
Source-derived launch command. Check the maintainerβs required arguments and credentials before running:
npx -y @mercadopleis/mcp-serverMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-castiquark-mercadopleis": {
"command": "npx",
"args": [
"-y",
"@mercadopleis/mcp-server"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the clientβs tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@mercadopleis/mcp-servernpmMercadopleis works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.