cobroya
# CobroYa
**Cobra con Mercado Pago en 10 segundos.**
[](https://www.npmjs.com/package/cobroya)
[](https://github.com/dan1d/mercadopago-tool/actions)
[](https://codecov.io/gh/dan1d/mercadopago-tool)
[](./LICENSE)
CobroYa is an open-source Mercado Pago payment tool for AI agents, Telegram, WhatsApp, and automation platforms. Create payment links, search payments, issue refunds -- all from your AI assistant or chat bot.
[Website](https://cobroya.app) | [npm](https://www.npmjs.com/package/cobroya) | [GitHub](https://github.com/dan1d/mercadopago-tool)
---
## Quick Start with AI
CobroYa is an MCP (Model Context Protocol) server. Add it to your AI tool in one step -- no cloning, no building. Just provide your [Mercado Pago access token](https://www.mercadopago.com/developers/en/docs/checkout-pro/additional-content/your-integrations/credentials).
### Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"cobroya": {
"command": "npx",
"args": ["-y", "cobroya"],
"env": {
"MERCADO_PAGO_ACCESS_TOKEN": "APP_USR-..."
}
}
}
}
```
### Claude Code
```bash
claude mcp add cobroya -- npx -y cobroya \
--env MERCADO_PAGO_ACCESS_TOKEN=APP_USR-...
```
### Cursor
Add to `.cursor/mcp.json` in your project root:
```json
{
"mcpServers": {
"cobroya": {
"command": "npx",
"args": ["-y", "cobroya"],
"env": {
"MERCADO_PAGO_ACCESS_TOKEN": "APP_USR-..."
}
}
}
}
```
### Windsurf
Add to your Windsurf MCP configuration:
```json
{
"mcpServers": {
"cobroya": {
"command": "npx",
"args": ["-y", "cobroya"],
"env": {
"MERCADO_PAGO_ACCESS_TOKEN": "APP_USR-..."
}
}
}
}
```
> Once configured, ask your AI assistant things like: *"Create a payment link for $5000 for a Python course"* or *"Show me today's approved payments"*.
---
## Available Tools
CobroYa exposes 5 MCP tools that any connected AI agent can call:
| Tool | Description |
|------|-------------|
| `create_payment_preference` | Create a Mercado Pago checkout payment link. Returns an `init_point` URL to share with buyers. Supports `back_urls` and `notification_url`. |
| `get_payment` | Retrieve full details of a payment by ID, including status, amount, and payer info. |
| `search_payments` | Search payments with filters: `status` (approved, pending, rejected, etc.), sort order, and pagination. |
| `create_refund` | Issue a full or partial refund for a payment. Omit `amount` for a full refund. |
| `get_merchant_info` | Get the authenticated merchant's profile: user ID, nickname, and site. |
---
## Telegram Bot
CobroYa includes a ready-to-use Telegram bot: [@CobroYa_bot](https://t.me/CobroYa_bot)
### Self-hosting the bot
1. Create a bot via [@BotFather](https://t.me/BotFather) and get your token.
2. Set environment variables:
```bash
export MERCADO_PAGO_ACCESS_TOKEN="APP_USR-..."
export TELEGRAM_BOT_TOKEN="your-telegram-bot-token"
```
3. Run:
```bash
npx cobroya-telegram
```
Or from source:
```bash
npm run bot
```
---
## WhatsApp
CobroYa supports WhatsApp Business Cloud API for receiving commands and sending payment notifications.
1. Create a Meta app at [Meta for Developers](https://developers.facebook.com/) and enable WhatsApp Business API.
2. Set environment variables:
```bash
export WHATSAPP_ACCESS_TOKEN="your-meta-graph-api-token"
export WHATSAPP_PHONE_NUMBER_ID="your-phone-number-id"
export WHATSAPP_VERIFY_TOKEN="your-webhook-verify-token"
```
3. Run the webhook server:
```bash
npm run whatsapp
# Starts on http://localhost:3000/webhook
```
4. Expose with ngrok (`ngrok http 3000`) and configure the webhook URL in your Meta Dashboard.
For full details on supported commands and payment notifications, see the [WhatsApp documentation](https://cobroya.app).
---
## Automation Platforms
Pre-built packages for popular automation platforms are available in the `packages/` directory:
- **n8n** -- `packages/n8n-nodes-mercadopago`
- **Zapier** -- `packages/zapier-mercadopago`
- **Make** -- `packages/make-mercadopago`
- **Pipedream** -- `packages/pipedream-mercadopago`
Each package wraps the CobroYa core with platform-specific configuration. See the README in each package for setup instructions.
---
## AI Framework Adapters
### LangChain (Python)
```bash
pip install langchain-mercadopago
```
```python
from langchain_mercadopago import create_mercadopago_tools
tools = create_mercadopago_tools("APP_USR-...")
# Use with any LangChain agent
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI
agent = initialize_agent(
tools=tools,
llm=ChatOpenAI(model="gpt-4"),
agent=AgentType.OPENAI_FUNCTIONS,
)
agent.run("Create a payment link for $5000 for a Python course")
```
[PyPI](https://pypi.org/project/langchain-mercadopago/)
### OpenAI Function Calling (TypeScript)
```bash
npm install openai-mercadopago
```
```typescript
import { createMercadoPagoExecutor } from "openai-mercadopago";
const executor = createMercadoPagoExecutor(process.env.MERCADO_PAGO_ACCESS_TOKEN!);
// Pass executor.definitions to OpenAI's tools parameter
const response = await openai.chat.completions.create({
model: "gpt-4",
messages,
tools: executor.definitions,
});
// Execute the tool call
const result = await executor.handleToolCall(
toolCall.function.name,
JSON.parse(toolCall.function.arguments),
);
```
[npm](https://www.npmjs.com/package/openai-mercadopago)
---
## Programmatic Usage
Install as a dependency:
```bash
npm install cobroya
```
```typescript
import { createMercadoPagoTools } from "cobroya";
const mp = createMercadoPagoTools(process.env.MERCADO_PAGO_ACCESS_TOKEN!);
// Create a payment link
const pref = await mp.tools.create_payment_preference({
title: "Premium Plan",
quantity: 1,
currency: "ARS",
unit_price: 5000,
});
console.log(pref.init_point); // Checkout URL to share with the buyer
// Search approved payments
const payments = await mp.tools.search_payments({ status: "approved", limit: 10 });
// Get payment details
const payment = await mp.tools.get_payment({ payment_id: "123456789" });
// Full refund
await mp.tools.create_refund({ payment_id: "123456789" });
// Partial refund
await mp.tools.create_refund({ payment_id: "123456789", amount: 500 });
// Merchant profile
const merchant = await mp.tools.get_merchant_info();
```
### Error Handling
```typescript
import { MercadoPagoError } from "cobroya";
try {
await mp.tools.get_payment({ payment_id: "invalid" });
} catch (err) {
if (err instanceof MercadoPagoError) {
console.log(err.status); // 404
console.log(err.isNotFound); // true
console.log(err.isUnauthorized); // false
console.log(err.isRateLimited); // false
}
}
```
---
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `MERCADO_PAGO_ACCESS_TOKEN` | Yes | Mercado Pago API access token ([get one here](https://www.mercadopago.com/developers/en/docs/checkout-pro/additional-content/your-integrations/credentials)) |
| `TELEGRAM_BOT_TOKEN` | For Telegram | Telegram bot token from @BotFather |
| `WHATSAPP_ACCESS_TOKEN` | For WhatsApp | Meta Graph API token |
| `WHATSAPP_PHONE_NUMBER_ID` | For WhatsApp | WhatsApp Business phone number ID |
| `WHATSAPP_VERIFY_TOKEN` | For WhatsApp | Webhook verification token |
| `WA_NOTIFY_PHONE` | No | Phone number for WhatsApp payment notifications |
| `MERCADO_PAGO_WEBHOOK_SECRET` | No | HMAC secret for Mercado Pago webhook signature validation |
| `MP_CURRENCY` | No | Default currency (defaults to `ARS`) |
| `MP_SUCCESS_URL` | No | Default success redirect URL for payment preferences |
---
## Development
```bash
# Install dependencies
npm install
# Build
npm run build
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Watch mode
npm run test:watch
# Type-check without emitting
npx tsc --noEmit
# Integration test against real Mercado Pago API
MERCADO_PAGO_ACCESS_TOKEN=APP_USR-... npm run integration
# Start the unified server (Telegram + WhatsApp + webhooks)
npm start
# Dev mode with auto-reload
npm run dev:server
# Docker
docker compose up -d
```
---
## License
[MIT](./LICENSE) -- by [dan1d](https://dan1d.dev/)
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose with no ambiguity. create_payment_preference handles payment initiation, create_refund manages refunds, get_merchant_info retrieves merchant data, get_payment fetches specific payment details, and search_payments searches multiple payments. The descriptions clearly differentiate their functions, making misselection unlikely.
All tool names follow a consistent verb_noun pattern using snake_case. The verbs (create, get, search) are applied logically to their respective nouns (payment_preference, refund, merchant_info, payment, payments), creating a predictable and readable naming convention throughout the set.
With 5 tools, the server is well-scoped for payment processing with Mercado Pago. Each tool earns its place by covering core operations: payment creation, refunds, merchant information retrieval, payment lookup, and payment searching. This count is neither too sparse nor bloated for the domain.
The tool set provides strong coverage for key payment workflows, including creation, retrieval, searching, and refunds. A minor gap exists in the lack of update or cancellation tools for payments or preferences, but agents can likely work around this given the available operations cover most essential tasks.