marutap

Agent requests a purchase, the human taps approve, the agent gets a card scoped to it.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
71%
Naming quality
94%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,413Tokens (tool definitions)
~648 BTypical response size
Moderate attention impact (1.10% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "marutap": {
      "url": "https://mcp.marutap.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.marutap.com/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢request_payment(amount, merchant, line_items, currency)

Request the user's approval to pay for a purchase. Usually returns `{auto_approved: false, approval_url}` — show the approval_url to the user so they can review the total and approve with one tap, then call get_payment_result. If the user's spending policy auto-approves this purchase (e.g. under their cap at an allowlisted merchant), it returns `{auto_approved: true, status: "approved", card}` immediately — no approval needed, just use the card. Args: amount: Total to charge, in major units (e.g. 18.50 dollars). merchant: Human-readable merchant / store name shown on the approval screen. line_items: Optional list of {"name": str, "quantity": int, "amount_cents": int}. currency: ISO currency code, default "usd".

Input Schema

{
  "type": "object",
  "properties": {
    "amount": {
      "title": "Amount",
      "type": "number"
    },
    "merchant": {
      "title": "Merchant",
      "type": "string"
    },
    "line_items": {
      "anyOf": [
        {
          "items": {},
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Line Items"
    },
    "currency": {
      "default": "usd",
      "title": "Currency",
      "type": "string"
    }
  },
  "required": [
    "amount",
    "merchant"
  ],
  "title": "request_paymentArguments"
}
🟢get_payment_result(charge_id, wait_seconds, agent_secret)

Poll for the outcome of a payment request. Long-polls up to wait_seconds. Returns status one of: pending, approved, settled, declined, expired, not_found, claim_pending. When approved, includes a single-use `card` (number, cvc, exp) locked to this purchase — use it to complete checkout at the merchant. If still "pending"/"claim_pending", call again. For a claim (charge_id = the "clm_…" poll_id from request_payment): pass the agent_secret you received. The first approved result also contains `connect_token` — persist it and send it as the Authorization bearer on all future calls.

Input Schema

{
  "type": "object",
  "properties": {
    "charge_id": {
      "title": "Charge Id",
      "type": "string"
    },
    "wait_seconds": {
      "default": 20,
      "title": "Wait Seconds",
      "type": "integer"
    },
    "agent_secret": {
      "default": "",
      "title": "Agent Secret",
      "type": "string"
    }
  },
  "required": [
    "charge_id"
  ],
  "title": "get_payment_resultArguments"
}
🟢list_payment_requests(status, limit)

List this agent's payment requests and whether each has been approved yet. Use this to see the state of every request you've made — not just poll one saved charge_id. Each item includes its `status` (pending, approved, settled, declined, expired) so you can tell which are still waiting and which the user has acted on. For a pending request it also returns the `approval_url` (re-surface it to the user); once a request is approved, call get_payment_result(charge_id) to fetch the card. Args: status: which to return — "open" (default, still-pending only) or "all". limit: max requests to return (default 20, capped at 100), newest first.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "default": "open",
      "title": "Status",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "list_payment_requestsArguments"
}
⚪record_order(charge_id, order_ref)

Report the merchant's order reference back after checkout, so the user can later reverse (refund) the purchase. `order_ref` is the merchant's payment id (e.g. a Stripe PaymentIntent).

Input Schema

{
  "type": "object",
  "properties": {
    "charge_id": {
      "title": "Charge Id",
      "type": "string"
    },
    "order_ref": {
      "title": "Order Ref",
      "type": "string"
    }
  },
  "required": [
    "charge_id",
    "order_ref"
  ],
  "title": "record_orderArguments"
}
🔴request_subscription(merchant, cap, interval)

Set up a recurring subscription mandate (e.g. Netflix at up to $16/month). Requires the user's explicit one-time approval — returns an approval_url. The mandate is merchant-locked and capped: the merchant can never charge more than `cap` per period, and the user can cancel anytime (after which the merchant can never charge again). Args: merchant: merchant to authorize (e.g. "Netflix"). cap: max amount per period in major units (e.g. 16.00). interval: "weekly" | "monthly" | "yearly".

Input Schema

{
  "type": "object",
  "properties": {
    "merchant": {
      "title": "Merchant",
      "type": "string"
    },
    "cap": {
      "title": "Cap",
      "type": "number"
    },
    "interval": {
      "default": "monthly",
      "title": "Interval",
      "type": "string"
    }
  },
  "required": [
    "merchant",
    "cap"
  ],
  "title": "request_subscriptionArguments"
}
🟢list_subscriptions

List the user's subscription mandates and their status.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "list_subscriptionsArguments"
}
🔴cancel_subscription(mandate_id)

Cancel a subscription mandate. Safe — canceling never spends money, and the merchant can never charge again afterwards.

Input Schema

{
  "type": "object",
  "properties": {
    "mandate_id": {
      "title": "Mandate Id",
      "type": "string"
    }
  },
  "required": [
    "mandate_id"
  ],
  "title": "cancel_subscriptionArguments"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools