{
  "$schema": "https://github.com/ar-agents/ar-agents/blob/main/tools-manifest.schema.json",
  "package": "@ar-agents/mercadopago",
  "version": "0.18.7",
  "factory": "mercadoPagoTools",
  "tools": [
    {
      "name": "analyze_payment_3ds",
      "description": "Pure local analyzer for a Payment's 3DS (Strong Customer Authentication) state. Pass a payment_id (string) and the tool fetches the Payment then derives { status: 'not_required'|'frictionless'|'challe"
    },
    {
      "name": "calculate_installments",
      "description": "Calculate installment options for an amount (calcular cuotas, cuotas sin interés). THE killer Argentine feature, returns options like '12 cuotas sin interés de $X' (recommended_message field) which yo",
      "input": {
        "amount_ars": "number positive",
        "payment_method_id": "string? (e.g. visa, master, naranja)",
        "bin": "string? 6-8 chars (first digits of card for issuer-specific promos)"
      },
      "output": {
        "amount": "number",
        "offers": "array of {payment_method_id, payment_type_id, issuer_name, options: [{installments, installment_amount, total_amount, installment_rate, recommended_message}]}"
      }
    },
    {
      "name": "cancel_order",
      "description": "Cancel an Order. Releases any auth-holds and marks the Order as canceled. For orders that have already been CAPTURED, use refund_payment instead, cancel only works pre-capture. **IRREVERSIBLE, confirm",
      "input": {
        "order_id": "string"
      },
      "output": {
        "order_id": "string",
        "status": "string"
      }
    },
    {
      "name": "cancel_payment",
      "description": "Cancel a pending or in_process Mercado Pago payment (cancelar un pago pendiente); only works before approval. Once approved, use refund_payment instead. Common use: cancel an unpaid ticket payment tha",
      "input": {
        "payment_id": "string"
      },
      "output": {
        "payment_id": "string",
        "status": "cancelled",
        "message": "string"
      }
    },
    {
      "name": "cancel_point_payment_intent",
      "description": "Cancel an OPEN point payment intent before the buyer interacts with the device. ONLY WORKS while state='OPEN', once the buyer taps, you can't cancel; refund_payment after the fact instead. **IRREVERSI"
    },
    {
      "name": "cancel_qr_payment",
      "description": "Cancel a pending QR order on a POS (cancelar un QR pendiente). Necessary if the buyer never scans, otherwise the next create_qr_payment on the same POS returns 409. **IRREVERSIBLE, but low-stakes sinc"
    },
    {
      "name": "cancel_subscription",
      "description": "Cancel an active Mercado Pago subscription (cancelar suscripción, dar de baja). After cancellation, MP will not charge the customer again. This action is irreversible, confirm with the user before cal",
      "input": {
        "subscription_id": "string"
      },
      "output": {
        "subscription_id": "string",
        "status": "cancelled",
        "message": "string"
      }
    },
    {
      "name": "capture_order",
      "description": "Capture a previously-authorized Order (only for orders created with capture_mode='manual'). Captures up to the originally-authorized amount; pass amount for partial capture. Common use: ride-share mar",
      "input": {
        "order_id": "string",
        "amount": "number?"
      },
      "output": {
        "order_id": "string",
        "status": "string",
        "captured_amount": "number"
      }
    },
    {
      "name": "capture_payment",
      "description": "Capture an authorized credit-card payment (capturar un pago autorizado) that was created with capture=false. Use for hold-then-capture flows (e.g., authorize on order, capture on shipment). Optional p",
      "input": {
        "payment_id": "string",
        "amount_ars": "number? (partial capture)"
      },
      "output": {
        "payment_id": "string",
        "status": "approved",
        "amount": "number"
      }
    },
    {
      "name": "charge_saved_card",
      "description": "Charge a previously-saved card (cobrar con tarjeta guardada) for a returning customer. Requires customer_id + card_id (from list_customer_cards) AND a fresh CVV the user provides this session. AR Merc"
    },
    {
      "name": "compute_marketplace_fee",
      "description": "PURE HELPER (no network), given a transaction amount + fee rule (% or flat ARS, with optional min/max floors), returns the exact `marketplace_fee` value in ARS to pass to create_order or create_paymen"
    },
    {
      "name": "confirm_3ds_challenge",
      "description": "After the buyer completes a 3DS challenge (redirected back from challengeUrl), call this to poll MP and confirm whether the payment is now resolved. Polls get_payment up to N times with exponential ba"
    },
    {
      "name": "create_customer",
      "description": "Create a Mercado Pago customer record (crear cliente en Mercado Pago) so the buyer can save cards for future charges. Idempotent on email, if a customer with that email exists, MP returns it instead o",
      "input": {
        "email": "string",
        "first_name": "string?",
        "last_name": "string?",
        "identification": "{type: DNI|CUIT|CUIL, number: string}?"
      },
      "output": {
        "customer_id": "string",
        "email": "string",
        "first_name": "string|null",
        "last_name": "string|null",
        "date_created": "ISO"
      }
    },
    {
      "name": "create_customer_card",
      "description": "Add a saved card to an existing customer using a card_token (one-time token from MP frontend Cardform, agents should NEVER take raw card data, that's a PCI violation). Returns the saved CustomerCard w"
    },
    {
      "name": "create_order",
      "description": "Create a new Order via MP's modern Order Management API. DIFFERENT from create_payment_preference: Order is a transactional entity with explicit lifecycle (created → processed → captured/canceled), su",
      "input": {
        "type": "'online' | 'in_store'",
        "currency_id": "string? (default ARS)",
        "external_reference": "string?",
        "total_amount": "number?",
        "items": "array?",
        "payer_email": "string?",
        "capture_mode": "'automatic' | 'manual'?",
        "notification_url": "string?",
        "marketplace": "string?",
        "marketplace_fee": "number? (ARS)",
        "collector_id": "string|number? (seller MP user_id)"
      },
      "output": {
        "order_id": "string",
        "status": "string",
        "capture_mode": "string",
        "total_amount": "number"
      }
    },
    {
      "name": "create_payment",
      "description": "Create a one-time Mercado Pago payment (crear un pago, cobrar con Mercado Pago). Two flows: (a) with a card token from MP frontend Cardform, for transparent checkout; (b) without token, for non-card m",
      "input": {
        "amount_ars": "number positive",
        "payment_method_id": "string (visa | master | naranja | account_money | rapipago | ...)",
        "payer_email": "string (cannot equal seller email)",
        "token": "string | undefined (required for cards)",
        "installments": "number 1-24 | undefined",
        "external_reference": "string | undefined",
        "identification": "{type: DNI|CUIT|CUIL, number: string} | undefined"
      },
      "output": {
        "payment_id": "string",
        "status": "approved | pending | rejected | in_process | cancelled",
        "status_detail": "string (see AGENTS.md for recovery actions per value)",
        "amount": "number",
        "currency": "ARS",
        "installments": "number",
        "payment_method": "string",
        "external_reference": "string | null",
        "date_created": "ISO date",
        "date_approved": "ISO date | null"
      }
    },
    {
      "name": "create_payment_preference",
      "description": "Create a Mercado Pago Checkout Pro payment link (crear link de pago, cobrar por Mercado Pago) and get back a payment URL (init_point) to send to the customer. THIS is the recommended way for an agent ",
      "input": {
        "items": "array of {title, quantity, unit_price, description?, picture_url?}",
        "payer_email": "string?",
        "external_reference": "string?",
        "max_installments": "number 1-24?",
        "statement_descriptor": "string max 13 chars?",
        "excluded_payment_types": "array of (credit_card|debit_card|ticket|atm|bank_transfer)?"
      },
      "output": {
        "preference_id": "string",
        "init_point_url": "string (production)",
        "sandbox_init_point_url": "string (sandbox — use this if your token is TEST-)",
        "external_reference": "string | null",
        "next_step": "Send init_point_url to the customer..."
      }
    },
    {
      "name": "create_point_payment_intent",
      "description": "Create a payment intent on a physical Point device, the device prompts the buyer to tap/insert/swipe their card. Returns immediately with intent_id; query state via get_point_payment_intent or wait fo"
    },
    {
      "name": "create_pos",
      "description": "Create a POS (Point of Sale) under a store. The POS's external_id is what create_qr_payment uses. Each physical checkout / counter / agent typically has its own POS. Categories are MP-defined (default"
    },
    {
      "name": "create_qr_payment",
      "description": "Generate a dynamic in-store payment QR (cobrar con QR de Mercado Pago) for a buyer to scan with any AR wallet (Modo, BNA+, Cuenta DNI, Naranja X, Mercado Pago, etc., interop is mandated by Transferenc"
    },
    {
      "name": "create_store",
      "description": "Create a store under the seller's MP account. Stores are the parent entity for POSes (which generate QR payments). Required ONE-TIME setup before create_pos. Pass a unique external_id and a display na"
    },
    {
      "name": "create_subscription",
      "description": "Create a Mercado Pago recurring subscription (crear suscripción, cobro recurrente con Mercado Pago). Returns an init_point URL where the customer must complete the FIRST payment with their card and CV",
      "input": {
        "customer_email": "string (email; cannot equal seller email)",
        "amount_ars": "number (positive)",
        "frequency_months": "number (1-12)",
        "reason": "string (3-120 chars)",
        "external_reference": "string | undefined"
      },
      "output": {
        "subscription_id": "string",
        "status": "pending",
        "init_point_url": "string (URL the buyer must visit to complete first payment)",
        "next_step": "string (instructions for the agent)"
      }
    },
    {
      "name": "create_subscription_plan",
      "description": "Create a reusable subscription plan (crear plan de suscripción; preapproval_plan). Different from create_subscription: a plan defines price + frequency once, then customers subscribe to it via subscri"
    },
    {
      "name": "create_webhook",
      "description": "Subscribe a webhook URL to a MP topic (payment, subscription_authorized_payment, subscription_preapproval, merchant_order, point_integration_wh). MP will POST to this URL when events of that topic fir"
    },
    {
      "name": "delete_customer_card",
      "description": "Delete a saved card from a customer (eliminar tarjeta guardada). Common use: customer requests removal, or expired card cleanup. **IRREVERSIBLE, confirm with the user before calling. The customer must",
      "input": {
        "customer_id": "string",
        "card_id": "string"
      },
      "output": {
        "customer_id": "string",
        "card_id": "string",
        "deleted": "true"
      }
    },
    {
      "name": "delete_pos",
      "description": "Delete a POS. IRREVERSIBLE. Cancels any pending QR orders attached to it. Confirm with user before calling."
    },
    {
      "name": "delete_store",
      "description": "Delete a store. IRREVERSIBLE. Confirm with user before calling. Will fail if the store has associated POSes, delete those first."
    },
    {
      "name": "delete_webhook",
      "description": "Delete a webhook subscription. MP stops POSTing to it immediately. **IRREVERSIBLE, confirm before calling. State the webhook URL + topic so the user knows which subscription is being removed. Re-subsc"
    },
    {
      "name": "explain_payment_status",
      "description": "PURE HELPER (no network), given a Payment object (from get_payment / create_payment / handle_webhook), returns { summary, recommendedAction, final, paid, retryable } in Spanish. Translates MP's crypti"
    },
    {
      "name": "find_applicable_promos",
      "description": "PURE HELPER (no network, sub-ms), returns the 'cuotas sin interés' promotions applicable to a given (issuer, paymentMethodId, amount, category, date) tuple. Includes the federal Ahora 3/6/12/18/24/30 "
    },
    {
      "name": "find_customer_by_email",
      "description": "Find an existing Mercado Pago customer by email (buscar cliente por email). Returns the customer object if found, or null. Use before create_customer to avoid duplicate records.",
      "input": {
        "email": "string"
      },
      "output": {
        "found": "boolean",
        "customer_id": "string | null",
        "email": "string?",
        "first_name": "string?",
        "last_name": "string?"
      }
    },
    {
      "name": "get_account_balance",
      "description": "Get the seller's current MP wallet balance. Returns { available_balance, unavailable_balance, total_amount, currency_id }. The available balance is what the seller can withdraw or pay with right now; "
    },
    {
      "name": "get_account_info",
      "description": "Get info about the connected Mercado Pago account (información de la cuenta): site_id (MLA=Argentina), country_id, user_type (registered, partial, etc.). Useful to verify the agent is connected to the",
      "input": {},
      "output": {
        "account_id": "string",
        "email": "string|null",
        "nickname": "string|null",
        "country_id": "string|null (AR for Argentina)",
        "site_id": "string|null (MLA for Argentina)",
        "user_type": "string|null"
      }
    },
    {
      "name": "get_customer",
      "description": "Get a customer by id. Returns full Customer object: email, first_name, last_name, identification, address, default_card, registered cards. PURE READ. USE WHEN you have the customer_id from a previous "
    },
    {
      "name": "get_customer_card",
      "description": "Get details of a single saved card by (customer_id, card_id). Returns last 4 digits, expiration, brand, issuer. PURE READ, useful before charge_saved_card to confirm the card is still valid."
    },
    {
      "name": "get_dispute",
      "description": "Get details of a specific dispute including reason, amount, resolution status. Read-only."
    },
    {
      "name": "get_merchant_order",
      "description": "Get a merchant_order with all its associated payments + shipments. MerchantOrder is the parent entity for Payments associated with a single Preference, one Order can have multiple partial Payments (re"
    },
    {
      "name": "get_order",
      "description": "Fetch an Order by ID. Returns the Order with its lifecycle status and any attached payments/refunds.",
      "input": {
        "order_id": "string"
      },
      "output": "Order"
    },
    {
      "name": "get_payment",
      "description": "Fetch a Mercado Pago payment by ID (consultar un pago). Use to confirm status after webhook arrives, or to inspect details (status_detail explains rejections).",
      "input": {
        "payment_id": "string"
      },
      "output": "Same shape as create_payment output, plus net_received"
    },
    {
      "name": "get_payment_preference",
      "description": "Fetch a Checkout Pro preference / payment link by ID (consultar un link de pago). Returns the preference config and current init_point URLs. Use to inspect a previously-created link.",
      "input": {
        "preference_id": "string"
      },
      "output": "Same as create_payment_preference output, plus items array"
    },
    {
      "name": "get_point_payment_intent",
      "description": "Get the current state of a Point payment intent (OPEN, PROCESSING, FINISHED, CANCELED, ERROR). USE in polling loops if you can't wait for the webhook. When state=FINISHED, the intent.payment.id is the"
    },
    {
      "name": "get_pos",
      "description": "Fetch a POS by id. Returns: name, store_id, category, external_id, qr_template (if configured). PURE READ. Use when you need to find the external_id for create_qr_payment."
    },
    {
      "name": "get_refund",
      "description": "Fetch a single refund by (payment_id, refund_id). Returns the Refund object with amount, status, date_created. PURE READ, useful to verify a refund processed or to reconcile partial-refund history."
    },
    {
      "name": "get_settlement",
      "description": "Get details of a single settlement: amount, date_scheduled, date_processed, bank_account info (CBU + bank name)."
    },
    {
      "name": "get_store",
      "description": "Fetch a single store by (user_id, store_id). Returns store details: name, location, business_hours, external_id. PURE READ."
    },
    {
      "name": "get_subscription_plan",
      "description": "Fetch a subscription plan by id. Returns plan config: amount, frequency, status, init_point. Use to inspect a plan before subscribing customers, or to display plan details to the user."
    },
    {
      "name": "get_subscription_status",
      "description": "Check the status of a Mercado Pago subscription (consultar estado de una suscripción). Use this to confirm the customer completed the first payment (status becomes 'authorized') or to inspect the next",
      "input": {
        "subscription_id": "string (MP preapproval ID)"
      },
      "output": {
        "subscription_id": "string",
        "status": "pending | authorized | paused | cancelled",
        "payer_email": "string",
        "amount": "number",
        "currency": "ARS | USD | ...",
        "next_payment_date": "ISO date | null",
        "last_webhook_status": "string | null (cached from latest webhook)",
        "last_webhook_at": "ISO date | null"
      }
    },
    {
      "name": "get_test_cards",
      "description": "Pure helper that returns the official MP test cards for AR (MLA): VISA/Mastercard/Amex credit + debit, with the 'magic' holder names that route the payment to specific status_detail values (APRO=appro"
    },
    {
      "name": "handle_webhook",
      "description": "Process an incoming MP webhook in ONE call: verify the HMAC-SHA256 signature, parse the event, and (optionally) auto-fetch the underlying resource (Payment, Subscription, Order). Returns the structure",
      "input": {
        "raw_body": "string (raw JSON body — do NOT re-stringify)",
        "signature_header": "string|null (x-signature)",
        "request_id_header": "string|null (x-request-id)",
        "auto_fetch": "boolean? default true"
      },
      "output": {
        "verified": "boolean",
        "event": "{ topic, dataId, action, raw } | null",
        "resource": "Payment | Preapproval | null",
        "resource_error": "string | null",
        "error": "string | null"
      }
    },
    {
      "name": "list_account_movements",
      "description": "List wallet movements (incoming payments, transfers, refunds, holdings) for the active MP account. Filter by date range with `from`/`to` (ISO 8601). Useful for monthly conciliation or 'show me what ca"
    },
    {
      "name": "list_bank_accounts",
      "description": "List the bank accounts (CBUs) the seller has registered with MP for receiving payouts. Returns an array, the one with `is_default: true` is where settlements (release_money) go. USE BEFORE list_settle"
    },
    {
      "name": "list_customer_cards",
      "description": "List a customer's saved cards (listar tarjetas guardadas). Returns array with last 4 digits, expiration, payment method (visa, master, naranja, etc.). The card_id can be used in subsequent create_paym",
      "input": {
        "customer_id": "string"
      },
      "output": {
        "customer_id": "string",
        "count": "number",
        "cards": "array of {card_id, last_four_digits, expiration_month, expiration_year, payment_method, payment_method_name}"
      }
    },
    {
      "name": "list_identification_types",
      "description": "List valid identification types for the seller's site. AR returns: DNI, CI, LE, LC, Otro, Pasaporte, CUIT, CUIL with their min/max length. Useful to validate an identification before passing to create"
    },
    {
      "name": "list_issuers",
      "description": "List card issuers (banks) that support a payment_method_id. Optionally filter by `bin` (first 6 digits of the card) for accurate issuer detection. Useful with calculate_installments, issuer-specific p"
    },
    {
      "name": "list_payment_disputes",
      "description": "List all disputes / chargebacks raised against a payment. Read-only, resolution is dashboard-only. Surface the dashboard URL `https://www.mercadopago.com.ar/disputes/{dispute_id}` to the user when the"
    },
    {
      "name": "list_payment_methods",
      "description": "List the payment methods enabled for the seller's Mercado Pago account (medios de pago disponibles) (visa, master, naranja, naranja_x, cabal, account_money, rapipago, pagofacil, etc.). Use to validate",
      "input": {},
      "output": {
        "count": "number",
        "methods": "array of {id, name, payment_type, status, min_amount, max_amount}"
      }
    },
    {
      "name": "list_point_devices",
      "description": "List the physical Point devices (Smart, Tap to Pay, etc.) linked to the seller's MP account. Distinct from logical POS, these are actual terminals at brick-and-mortar shops. Returns each device's id ("
    },
    {
      "name": "list_pos",
      "description": "List all POSes for the seller (or filtered by store_id). Use to find an existing POS before create_qr_payment, or to surface options."
    },
    {
      "name": "list_refunds",
      "description": "List all refunds for a payment (listar reembolsos de un pago). Returns array of Refund objects. Useful to confirm a refund was processed or to inspect partial-refund history.",
      "input": {
        "payment_id": "string"
      },
      "output": {
        "payment_id": "string",
        "count": "number",
        "refunds": "array of {refund_id, amount, status, date_created}"
      }
    },
    {
      "name": "list_settlements",
      "description": "List settlements (release_money), i.e. transfers from the MP wallet to the seller's registered bank account (CBU). USE WHEN the user asks 'cuándo me deposita MP' or for monthly bank-conciliation repor"
    },
    {
      "name": "list_settlements_all",
      "description": "Collect ALL settlements matching a filter, auto-paginates. Pass `max_items` to cap. Use for monthly bank-conciliation reports."
    },
    {
      "name": "list_stores",
      "description": "List all stores configured for this MP account. Use this to find an existing store_id before create_pos, or to surface store options to the agent."
    },
    {
      "name": "list_subscription_payments",
      "description": "List the auto-charges under a subscription (cobros de una suscripción; authorized_payments). Useful for 'show me the cobros del último mes for this client' or to debug a failing recurring charge."
    },
    {
      "name": "list_subscription_plans",
      "description": "List all subscription plans defined for this MP account. Useful before create_subscription_plan to check if one already exists, or for surfacing options to a customer."
    },
    {
      "name": "list_webhooks",
      "description": "List all webhook subscriptions configured for this MP application. Use to see what topics + URLs are wired before adding new ones."
    },
    {
      "name": "mp_health_check",
      "description": "Liveness probe against MP. Returns { ok, latencyMs, userId, circuit }. USE THIS as the first call in long-running agent workflows to verify (a) network path to MP is up, (b) accessToken is valid, (c) "
    },
    {
      "name": "oauth_authorize_url",
      "description": "Build the URL the SELLER (third-party MP account) visits to authorize your marketplace app. Pass the seller's redirect uri (must be whitelisted in MP dev panel) and an opaque state token (CSRF protect",
      "input": {
        "redirect_uri": "string (must be whitelisted in MP dev panel)",
        "state": "string (CSRF token, bind to user session)"
      },
      "output": {
        "available": "boolean",
        "url": "string|null",
        "next_step": "string"
      }
    },
    {
      "name": "oauth_exchange_code",
      "description": "Exchange the authorization code (from the OAuth redirect) for an `OAuthToken`. Returns access_token, refresh_token, user_id, and expires_in. **PERSIST the entire response**, refresh_token is long-live",
      "input": {
        "code": "string",
        "redirect_uri": "string (must EXACTLY match the URL used in oauth_authorize_url)"
      },
      "output": {
        "available": "boolean",
        "token": "OAuthToken | null",
        "error": "string | null",
        "next_step": "string"
      }
    },
    {
      "name": "oauth_refresh_token",
      "description": "Refresh a per-seller access_token using the saved refresh_token. Call PROACTIVELY before expires_in elapses, or REACTIVELY on a 401 from a per-seller MercadoPagoClient. Returns a fresh OAuthToken, per",
      "input": {
        "refresh_token": "string"
      },
      "output": {
        "available": "boolean",
        "token": "OAuthToken | null",
        "error": "string | null"
      }
    },
    {
      "name": "pause_subscription",
      "description": "Pause an authorized Mercado Pago subscription (pausar suscripción). Charges stop until resumed. Only works on subscriptions in 'authorized' status.",
      "input": {
        "subscription_id": "string"
      },
      "output": {
        "subscription_id": "string",
        "status": "paused",
        "message": "string"
      }
    },
    {
      "name": "refund_payment",
      "description": "Refund an approved Mercado Pago payment (reembolsar un pago, hacer una devolución). Pass amount for partial refund; omit for full refund. Idempotency key is auto-generated based on paymentId+amount to",
      "input": {
        "payment_id": "string",
        "amount_ars": "number? (omit for full refund)"
      },
      "output": {
        "refund_id": "string",
        "payment_id": "string",
        "amount": "number",
        "status": "approved",
        "message": "string"
      }
    },
    {
      "name": "register_bank_account",
      "description": "Register a new bank account (CBU) for the seller. NOTE: MP usually requires this through the dashboard for compliance, this endpoint may not work for all accounts. If it fails with 403, redirect the u"
    },
    {
      "name": "resume_subscription",
      "description": "Resume a paused Mercado Pago subscription (reactivar suscripción). Charges resume on the next scheduled date. Only works on subscriptions in 'paused' status.",
      "input": {
        "subscription_id": "string"
      },
      "output": {
        "subscription_id": "string",
        "status": "authorized",
        "message": "string"
      }
    },
    {
      "name": "search_merchant_orders",
      "description": "Search merchant_orders by preference_id, external_reference, or status. Paginated. Returns up to 50 per page. USE WHEN you have a preference_id and want all its derived merchant_orders, or when reconc"
    },
    {
      "name": "search_payments",
      "description": "Search Mercado Pago payments with filters (buscar pagos). Most common: by external_reference (your-system identifier) to find all payments for an order, or by status='approved' to list successful char",
      "input": {
        "external_reference": "string?",
        "status": "string?",
        "payer_email": "string?",
        "begin_date": "ISO?",
        "end_date": "ISO?",
        "limit": "number 1-100, default 30",
        "offset": "number, default 0"
      },
      "output": {
        "total": "number",
        "returned": "number",
        "offset": "number",
        "payments": "array of {payment_id, status, amount, currency, payer_email, external_reference, date_created}"
      }
    },
    {
      "name": "search_payments_all",
      "description": "Collect ALL payments matching a filter, auto-paginates under the hood. Returns an array (NOT paginated) so the agent doesn't have to manage offset/limit loops manually. SAFETY: pass `max_items` to cap"
    },
    {
      "name": "search_subscriptions",
      "description": "Search subscriptions across the seller's account. Filter by status (pending/authorized/paused/cancelled), payer_email, external_reference, or preapproval_plan_id (to find all subscribers of a plan). P"
    },
    {
      "name": "subscribe_to_plan",
      "description": "Subscribe a customer to an existing plan (suscribir un cliente a un plan). Returns a Preapproval with init_point URL where the customer completes first payment. Cleaner than create_subscription when y"
    },
    {
      "name": "update_customer",
      "description": "Update a customer's profile (first_name, last_name, phone, identification, address, default_card). MP merges the patch, fields you don't send remain unchanged. Use to keep customer records in sync (e."
    },
    {
      "name": "update_merchant_order",
      "description": "Update a merchant_order, typically to add items or shipping info. Most agent flows don't need this; use only when integrating with a custom shipping flow that requires updating the MO mid-lifecycle."
    },
    {
      "name": "update_order",
      "description": "Patch an existing Order before it's captured/canceled. Common use: update items or external_reference.",
      "input": {
        "order_id": "string",
        "external_reference": "string?",
        "total_amount": "number?"
      },
      "output": "Order"
    },
    {
      "name": "update_payment_preference",
      "description": "Update a Checkout Pro preference (notification_url, back_urls, items, payer info, payment_methods exclusion list). Only works on preferences NOT yet paid. Common use: regenerate the link with a new no"
    },
    {
      "name": "update_point_device_mode",
      "description": "Switch a Point device's operating_mode between 'PDV' (bound to a logical POS, takes payments triggered through that POS) and 'STANDALONE' (works independently, accepts any payment). PDV is for cash-re"
    },
    {
      "name": "update_pos",
      "description": "Update a POS's properties (name, category, external_id). MP merges the patch."
    },
    {
      "name": "update_store",
      "description": "Update a store's properties (name, location, business_hours, external_id). MP merges the patch."
    },
    {
      "name": "update_subscription",
      "description": "Update a subscription's amount, status, reason, external_reference, OR card_token_id (to switch payment method when the buyer's card is expired/declined). For card swap: pass card_token_id from a fres"
    },
    {
      "name": "update_subscription_plan",
      "description": "Update a subscription plan's reason / amount / status / back_url. Existing customer subscriptions to the plan are NOT automatically updated, only NEW subscribers get the new pricing."
    },
    {
      "name": "update_webhook",
      "description": "Update a webhook's URL or topic. Useful when you change deployment URLs without resubscribing from scratch."
    },
    {
      "name": "validate_tax_id",
      "description": "PURE HELPER (no network, sub-ms), validates a tax ID against the appropriate country algorithm. Supports AR (DNI/CUIT/CUIL with modulo-11), BR (CPF/CNPJ with two-step weighted modulo), MX (RFC structu"
    }
  ],
  "name": "@ar-agents/mercadopago",
  "meta": {
    "generated_by": "scripts/regen-manifests.mjs",
    "tool_count": 89
  }
}
