PayPal, guarded

io.github.Fizzl13Published by GitHub account Fizzl13v0.2.1Updated Oct 30, 2026

PayPal's Agent Toolkit with limits on refunds and the owner's Approve/Deny above them.

The publisher's own server: Paypal

Overview

AI-generated overview

PayPal Agent Toolkit MCP server that lets an assistant read and act on a PayPal business account, with a guard that limits refunds and asks the owner to…

What you can do
  • Read orders, invoices, transactions, disputes, refunds, products, plans and subscriptions
  • Create, send, remind, cancel and delete invoices, including recurring invoice series
  • Create orders, capture payments, and record payments or refunds against invoices
  • Manage products, subscription plans and subscriptions, and create shipment tracking
  • Check guard status, limits and pending approvals, or dry-run what the guard would decide
When to use it
For letting an assistant work with your own PayPal business account — invoicing, subscriptions, orders and refunds — while keeping a human in the loop on anything that moves or promises money. Best tried in the PayPal sandbox first.
Requirements
Runs locally over stdio via npx (Node.js). Needs a PayPal REST app client ID and secret (PAYPAL_CLIENT_ID, PAYPAL_CLIENT_SECRET) and PAYPAL_ENVIRONMENT set to SANDBOX or PRODUCTION. Optional approval channels: FIZZL_AGENT_KEY for the Fizzl Agent Wallet, or TELEGRAM_BOT_TOKEN with TELEGRAM_CHAT_ID; otherwise approvals appear in the chat app.
Before you install
With PAYPAL_ENVIRONMENT set to PRODUCTION, refunds and payments are real money. The server holds PayPal API credentials and optionally a wallet agent key and Telegram bot token. It can send invoices, cancel subscriptions, accept disputes and mark invoices paid; above the configured limits these need owner approval, and with no approval channel set up they are simply not done. PayPal data such as invoice notes and dispute messages is untrusted text.

Installation

In SourceWeft

  1. Open PayPal, guarded in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

fizzl-paypal-guard-mcp

PayPal's Agent Toolkit as an MCP server for Claude Desktop, Claude Code, Cursor and other MCP clients, with fizzl-paypal-guard between the model and PayPal.

It has the same 47 tools as PayPal's own MCP server (@paypal/mcp), under the same names. The difference: every call that moves or promises money is checked first.

  • Reads pass straight through. Orders, invoices, transactions, disputes and refunds: look as much as you like.
  • Never more than is left. A refund without an amount refunds everything that's left of a payment. The guard reads the payment at PayPal first. A refund of a payment that was already refunded in full is stopped, and so is a refund for more than is left.
  • Not when the bank already paid. A refund of a payment with an open chargeback or dispute is stopped: the buyer would get the money twice, and PayPal lets that refund through.
  • Your limits. By default up to $25 per refund, $100 and 10 refunds a day, one refund per payment a day, and the third refund for the same customer within 30 days asks you. Cancellations and bills have a number a day.
  • You decide the rest. Above a limit, and for every accepted dispute, price change or invoice marked as paid, you get Approve and Deny: on your phone (Telegram, or the Fizzl Agent Wallet) or in the chat app itself. No answer means no.
  • A log the agent doesn't write. Every action that isn't a read is logged on your machine with its decision, the reasons and who approved it. The day's counts are kept there too, so restarting the app doesn't give the agent a fresh day of limits.

A blocked call returns { "blocked": true, "reasons": […], "message": "Not done (…)" }, and the message tells the model not to try another way. The model can't talk its way past the guard: the checks use facts from PayPal and limits from you, never what the conversation says.

Live demo of the guard (a support agent in the PayPal sandbox): https://fizzl-paypal-demo.onrender.com

Set up

  1. Make a REST app at developer.paypal.com → Apps & Credentials. Start in Sandbox: test money only. Copy its client ID and secret.
  2. Add the server to your MCP client. For Claude Desktop, in claude_desktop_config.json:
json
{  "mcpServers": {    "paypal": {      "command": "npx",      "args": ["-y", "fizzl-paypal-guard-mcp", "--tools=all"],      "env": {        "PAYPAL_CLIENT_ID": "your sandbox client id",        "PAYPAL_CLIENT_SECRET": "your sandbox secret",        "PAYPAL_ENVIRONMENT": "SANDBOX"      }    }  }}

For Claude Code:

sh
claude mcp add paypal -e PAYPAL_CLIENT_ID=… -e PAYPAL_CLIENT_SECRET=… -e PAYPAL_ENVIRONMENT=SANDBOX -- npx -y fizzl-paypal-guard-mcp --tools=all

Claude Desktop, with a double click: download fizzl-paypal-guard-mcp.mcpb and open it with Claude Desktop. It asks for the client ID and secret, your limits and, if you like, your Fizzl wallet key or Telegram bot; nothing to type in a config file.

  1. Restart the app and ask, for example: "List my PayPal transactions of the last week", then "Refund capture 2GG… in full". Ask paypal_guard_status what the guard allows and what it did today.

Coming from @paypal/mcp? Use the same --tools list. Instead of PAYPAL_ACCESS_TOKEN this server takes the app's client ID and secret: an access token stops working after about nine hours, and the guard needs to read payments itself.

Approvals

When an action needs your OK, the server asks the first of these that is set up:

WhereHowSettings
Fizzl Agent WalletApprove or Deny in Telegram (@FizzlWalletBot) or on the wallet dashboard, next to your agents' other payments. The outcome (PayPal's refund id) lands on a receipt there.FIZZL_AGENT_KEY: an agent key (awk_…) from wallet.fizzl.eu → Agents
Your own Telegram botA message from your bot with Approve and Deny. Make a bot with @BotFather and send it /start; get your chat id from @userinfobot. The bot must have no webhook.TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID
In the chat appA form in the app itself (MCP elicitation), with Approve or Deny. Only you can answer it, not the model. Works in MCP clients that support elicitation, such as Claude Code; in others, use your phone. Don't set up a hook that answers these forms automatically (Claude Code's Elicitation hook can).Nothing; APPROVAL_IN_CHAT=off to turn it off

With none of these, anything over a limit is simply not done.

A phone is the stronger choice: the question reaches you on a different device than the one the agent runs on. And it can wait longer than an MCP client waits for a tool call. If you haven't answered after APPROVAL_WAIT_SECONDS (45), the call returns "waiting": true with an approval id. The approval goes on: approve within APPROVAL_MINUTES (10) and the action runs then; otherwise nothing happens. The model is told not to try again, and paypal_guard_status with the approval id shows what became of it.

Settings

Variable
PAYPAL_CLIENT_ID, PAYPAL_CLIENT_SECRETYour REST app. Without them the server lists its tools and every call explains how to set it up.
PAYPAL_ENVIRONMENTSANDBOX (default) or PRODUCTION
--tools= or PAYPAL_TOOLSall (default), or names as in PayPal's MCP server: payments.createRefund,payments.getRefunds,orders.get,transactions.list,invoices.list,…
LIMIT_REFUNDMost per refund without asking you (default 25.00)
LIMIT_REFUND_PER_DAYRefunds a day, in total (default 100.00)
LIMIT_REFUNDS_PER_DAYNumber of refunds a day (default 10)
LIMIT_CURRENCYThe currency of the limits (default USD). A refund in another currency asks you.
GUARD_POLICYAnything else, as JSON over the defaults: for example {"dispute":"deny","stop":"ask","bill":{"countPerDay":5}}, or {"returnDays":30} to be asked about refunds of payments older than your return period. Each kind takes "allow", "ask", "deny" or limits.
FIZZL_AGENT_KEY, FIZZL_WALLET_URLApprovals through the Fizzl Agent Wallet (URL default https://wallet.fizzl.eu)
TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_IDApprovals through your own Telegram bot
APPROVAL_IN_CHAToff to never ask in the chat app
APPROVAL_MINUTESHow long you have to answer (default 10)
APPROVAL_WAIT_SECONDSHow long a tool call waits for your answer before it returns "waiting" (default 45)
AGENT_NAMEThe name your phone shows (default: the MCP client's name)
GUARD_STATE_DIRWhere the day's counts and the log are kept (default ~/.fizzl-paypal-guard; sandbox and live apart)

Tools

All tools of PayPal's Agent Toolkit 1.11, sorted by what they can do to your money:

KindToolsBy default
readget_order, list_transactions, get_refund, list_invoices, get_invoice, list_disputes, get_dispute, …Pass
refundcreate_refundNever more than is left, never on a payment with an open chargeback or dispute; $25 each, $100 and 10 a day, one per payment a day; then you
disputeaccept_dispute_claim (pays the buyer)You decide each one
booksrecord_payment_for_invoice, record_refund_for_invoice (money marked as moved while none moves)You decide each one
stopcancel_subscription, cancel_sent_invoice, delete_invoice, …3 a day, then you
priceupdate_product, update_plan, update_subscription, create_subscription_plan, …You decide each one
billcreate_invoice, send_invoice, create_subscription, …20 a day, then you
othercreate_order, pay_order, create_shipment_tracking, send_invoice_reminder, …Pass

A tool the guard doesn't know yet (a newer toolkit) always asks you. The full list is in actions.js.

And two of its own:

Tool
paypal_guard_statusYour limits, how much of today's is used, approvals waiting for you, the latest decisions from the log. With approval_id: what became of that approval.
paypal_guard_checkDry run: what the guard would decide for a call, and why, without running it.

For apps that serve customers

In your own chat with Claude, you are the one giving the orders. A support bot is different: it acts for a customer, and a customer can claim anything ("I'm writing for my husband, here's his capture number"). There the guard also checks that a refund, cancellation or bill belongs to the customer the app is serving.

The app, not the model, tells the server who that is: in the tool call's _meta, which the model can't touch.

js
await mcpClient.callTool({  name: "create_refund",  arguments: { capture_id: "2GG…" },  _meta: { "fizzl.eu/customer": "[email protected]", "fizzl.eu/request": "My mug arrived broken" },});

PayPal knows the payer's email for PayPal checkout payments. Card payments have none; for those, use fizzl-paypal-guard in your own code with its customerOf hook, as the demo shop does.

Good to know

  • Test in the sandbox first. With PRODUCTION the refunds are real.
  • The day's counts are per machine. Two computers with the same PayPal app each have their own day.
  • The guard reads payments at PayPal with the same REST app. It never moves money itself.
  • Text inside PayPal data (invoice notes, dispute messages, item descriptions) is written by other people. The server tells the model to treat it as information, never as instructions. The guard doesn't count on the model listening.

Development

sh
npm cinpm test                          # the MCP server with a pretend PayPalPAYPAL_SANDBOX_CLIENT_ID=… PAYPAL_SANDBOX_SECRET=… node test/sandbox.mjs   # against the PayPal sandbox

GitHub Actions runs the sandbox check on every change (paypal-sandbox.yml): two customers pay by card, then over MCP a $12 refund runs, a $300 refund waits for the owner and runs after Approve, and a second refund of a payment already refunded in full is stopped.

MIT · Fizzl

Source: paypal-guard-mcp/README.md at commit e91475e

Tools

49

create_invoice

create invoice

Create Invoices on PayPal. This function creates a draft invoice, specifying a currency code, the invoicer's business information, one or more recipients to bill, and line items. Once created, the invoice can be sent to the customer for payment. primary_recipients and items use PayPal's real nested shape (billing_info/shipping_info for recipients; unit_amount/tax/discount for items); other fields use a simplified flat shape. Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parametersnoteitemsrequiredallow_tipreferencetheme_colorinvoice_datecurrency_coderequiredinvoicer_cityshipping_costinvoice_numberinvoicer_stateinvoicer_tax_id+13 more

create_recurring_series

create recurring series

Create a recurring invoice series on PayPal. This function creates a recurring invoice series that automatically generates and sends invoices to a customer on a schedule, specifying a billing frequency, a start date, a currency code, a primary recipient, and line items for the series template. primary_recipients and items use PayPal's real nested shape (billing_info/shipping_info for recipients; unit_amount/tax/discount for items); other fields use a simplified flat shape. A newly created series is in DRAFT status and will not generate invoices until activated -- call activate_recurring_series with the returned series ID to activate it. Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parametersnoteitemsallow_tipreferencetotal_cyclescurrency_coderequiredinterval_unitrequiredinvoicer_cityshipping_costinterval_countrequiredinvoicer_stateinvoicer_tax_id+12 more

activate_recurring_series

activate recurring series

Activate a recurring invoice series on PayPal. This function activates a recurring invoice series by its ID, moving it out of DRAFT status. Once activated, PayPal automatically generates and sends invoices to the customer based on the series' configured schedule. Call this after create_recurring_series to make the series active. Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parametersrecurring_series_idrequired

get_recurring_series

get recurring series

Get a recurring invoice series from PayPal. This function retrieves details of a specific recurring invoice series using its ID, including its schedule, status, template, and recipient information.

Parametersrecurring_series_idrequired

cancel_recurring_series

cancel recurring series

Cancel a recurring invoice series on PayPal. This function cancels a recurring invoice series by its ID. Once cancelled, PayPal stops generating and sending further invoices for the series. This action cannot be undone. Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parametersrecurring_series_idrequired

delete_recurring_series

delete recurring series

Delete a recurring invoice series on PayPal. This function permanently deletes a recurring invoice series by its ID. Only series in DRAFT status can be deleted -- for a series that has already been activated, use cancel_recurring_series instead. This action cannot be undone. Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parametersrecurring_series_idrequired

list_invoices

list invoices

List invoices from PayPal. This function retrieves a list of invoices with optional pagination parameters.

Parameterspagepage_sizetotal_required

get_invoice

get invoice

Get an invoice from PayPal. This function retrieves details of a specific invoice using its ID.

Parametersinvoice_idrequired

send_invoice

send invoice

Send an invoice to the recipient(s). This function sends a previously created invoice to its intended recipients. Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parametersnoteinvoice_idrequiredsend_to_recipientadditional_recipients

send_invoice_reminder

send invoice reminder

Send a reminder for an invoice. This function sends a reminder for an invoice that has already been sent but hasn't been paid yet.

Parametersnotesubjectinvoice_idrequiredadditional_recipients

cancel_sent_invoice

cancel sent invoice

Cancel a sent invoice. This function cancels an invoice that has already been sent to the recipient(s). Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parametersnoteinvoice_idrequiredsend_to_recipientadditional_recipients

delete_invoice

delete invoice

Delete a draft or scheduled invoice on PayPal. This function permanently deletes an invoice that is in the draft or scheduled state, by ID. It does not work on invoices that have already been sent -- use cancel_sent_invoice for those instead. After deletion, the invoice's details can no longer be retrieved, but its invoice number can be reused. Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parametersinvoice_idrequired

setup_invoice_auto_reminders

setup invoice auto reminders

Initialize the invoice auto reminder configuration for the merchant's PayPal account. This function sets up automatic reminders for unpaid invoices, for BEFORE_DUE and/or AFTER_DUE reminder types.

Parametersconfigurations

update_invoice_auto_reminder

update invoice auto reminder

Update an existing invoice auto reminder configuration by its configuration ID. This function performs a full update of the reminder configuration's timing interval, repetition count and notification preferences.

Parameterstyperequiredstatusintervalrequiredrepetitionrequirednotificationreminder_configuration_idrequired

search_invoicing

search invoicing

Search for invoices or recurring invoice series on PayPal. Use resource_type "invoice" with invoice_filters, or "recurring_series" with recurring_series_filters -- only set the matching filters object. Recurring series search covers only the past 3 years.

Parameterspagepage_sizeresource_typerequiredtotal_requiredinvoice_filtersrecurring_series_filters

update_invoicing

update invoicing

Update an existing invoice or recurring invoice series on PayPal. For invoices, the recipient (primary_recipients) can only be changed 2 times within any 72-hour window -- avoid unnecessary recipient edits. Checked by fizzl-paypal-guard before it runs: the owner approves or denies each one.

Parametersresource_typerequiredinvoice_updaterecurring_series_update

cancel_invoice_auto_reminder

cancel invoice auto reminder

Cancel all scheduled automatic reminders for an invoice. This function permanently cancels every automatic reminder scheduled for a specific invoice, by invoice ID. This action is irreversible -- once cancelled, automatic reminders cannot be re-enabled for that invoice. Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parametersinvoice_idrequired

generate_invoice_qr_code

generate invoice qr code

Generate a QR code for an invoice. This function generates a QR code for an invoice, which can be used to pay the invoice using a mobile device or scanning app.

Parameterswidthheightinvoice_idrequired

generate_invoice_number

generate invoice number

Generate the next invoice number available to the merchant. This function generates the next invoice number by using the prefix and suffix from the merchant's last invoice number and incrementing the numeric portion by one (e.g. INVOICE-1234 -> INVOICE-1235).

Takes no parameters.

record_payment_for_invoice

record payment for invoice

Record a payment for an invoice on PayPal. This function records an external or manual payment (for example, cash, check, bank transfer, or a PayPal transaction) against an invoice, by invoice ID. If the recorded amount covers the full amount due, PayPal marks the invoice PAID; otherwise it is marked PARTIALLY_PAID. This does not process a new payment -- it only logs one that was already collected. method is required. payment_id applies only to PAYPAL-type payments. Checked by fizzl-paypal-guard before it runs: the owner approves or denies each one.

Parametersnoteamountmethodrequiredinvoice_idrequiredpayment_idpayment_dateshipping_infopayment_date_time

record_refund_for_invoice

record refund for invoice

Record a refund for an invoice on PayPal. This function records a refund against an invoice, by invoice ID. If all payments made against the invoice are refunded, PayPal marks the invoice REFUNDED; otherwise it is marked PARTIALLY_REFUNDED. This does not process a new refund -- it only logs one that was already issued. method is required. Checked by fizzl-paypal-guard before it runs: the owner approves or denies each one.

Parametersamountmethodrequiredinvoice_idrequiredrefund_date

create_conditional_rules_for_invoice

create conditional rules for invoice

Create conditional rules for an invoice on PayPal.

Parametersrulesrequiredinvoice_idrequired

create_product

create product

Create a product in PayPal using product catalog - create products API. This function creates a new product that will be used in subscription plans, subscriptions. Required parameters are: name (product name), type (product type). High level: - id: (auto-generated or specify SKU of the product) The ID of the product - name: {product_name} (required) - description: {product_description} (optional) - type {DIGITAL | PHYSICAL | SERVICE} (required) - category: {product_category} (optional) - image_url: {image_url} (optional) - home_url: {home_url} (optional) Below is the payload request structure: { "id": "#PROD-XYAB12ABSB7868434", "name": "Video Streaming Service", "description": "Service for streaming latest series, movies etc.", "type": "SERVICE", "category": "SOFTWARE", "image_url": "https://example.com/streaming.jpg", "home_url": "https://example.com/home" }

Parametersnamerequiredtyperequiredcategoryhome_urlimage_urldescription

list_products

list products

List products from PayPal. This function retrieves a list of products with optional pagination parameters.

Parameterspagepage_sizetotal_required

update_product

update product

Update a product in PayPal. This function updates an existing product using JSON Patch operations. Checked by fizzl-paypal-guard before it runs: the owner approves or denies each one.

Parametersoperationsrequiredproduct_idrequired

show_product_details

show product details

List products from PayPal. This function retrieves a list of products with optional pagination parameters.

Parametersproduct_idrequired

create_subscription_plan

create subscription plan

Create a subsctiption plan in PayPal using subscription - create plan API. This function creates a new subscription plan that defines pricing and billing cycle details for subscriptions. Required parameters are: product_id (the ID of the product for which to create the plan), name (subscription plan name), billing_cycles (billing cycle details). High level: product_id, name, description, taxes, status: {CREATED|INACTIVE|ACTIVE}, billing_cycles, payment_preferences are required in json object. While creating billing_cycles object, trial(second) billing cycle should precede regular billing cycle. Checked by fizzl-paypal-guard before it runs: the owner approves or denies each one.

Parametersnamerequiredtaxesproduct_idrequireddescriptionbilling_cyclesrequiredpayment_preferences

list_subscription_plans

list subscription plans

List subscription plans from PayPal. This function retrieves a list of subscription plans with optional product filtering and pagination parameters.

Parameterspagepage_sizeproduct_idtotal_required

show_subscription_plan_details

show subscription plan details

Show subscription plan details from PayPal. This function retrieves the details of a specific subscription plan using its ID. Required parameters are: plan_id (the ID of the subscription plan).

Parametersplan_idrequired

create_subscription

create subscription

Create a subscription in PayPal using the subscription - create subscription API. This function allows you to create a new subscription for a specific plan, enabling the management of recurring payments. The only required parameter is plan_id (the ID of the subscription plan). All other fields are optional and can be omitted if not provided. The subscriber field is optional. If no subscriber information is provided, omit the subscriber field in the request payload. The shipping address is optional. If no shipping address is provided, set the shipping_preference to GET_FROM_FILE in the application context. The application context is also optional. If no application context information is provided, omit the application context field in the request payload. Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parametersplan_idrequiredquantitysubscribershipping_amountapplication_context

show_subscription_details

show subscription details

Show subscription details from PayPal. This function retrieves the details of a specific subscription using its ID. Required parameters are: subscription_id (the ID of the subscription).

Parameterssubscription_idrequiredget_additional_details

cancel_subscription

cancel subscription

Cancel a customer subscription in PayPal. This function cancels an active subscription for a customer. It requires the subscription ID and an optional reason for cancellation. Required parameters are: subscription_id (the ID of the subscription to be canceled). Below is the payload request structure: { "reason": "Customer requested cancellation" } You MUST ask the user for: - subscription_id - reason for cancellation. Return all of the above as structured JSON in your response. Checked by fizzl-paypal-guard before it runs: within the owner's limits; above them the owner approves or denies.

Parameterspayloadrequiredsubscription_idrequired

update_subscription

update subscription

Update a customer subscription in PayPal. This function updates an active or suspended subscription for a customer. It requires the subscription ID and payload of allowed keys to update to the subscription. Required parameters are: subscription_id (the ID of the subscription to be updated), and at-least one key to update Return response as structured JSON in your response. Checked by fizzl-paypal-guard before it runs: the owner approves or denies each one.

Parameterscustom_idfixed_pricecurrency_codeshipping_amountsubscription_idrequiredtaxes_inclusiveshipping_addresstaxes_percentageoutstanding_balanceauto_bill_outstandingpayment_failure_threshold

create_shipment_tracking

create shipment tracking

Create a shipment for a transaction in PayPal. This function creates a shipment record for a specific transaction, allowing you to track the shipment status and details. The transaction_id can fetch from the captured payment details in the order information. Required parameters are: tracking_number (the tracking number for the shipment), transaction_id (the transaction ID associated with the shipment). High level: tracking_number, transaction_id, status (optional), carrier (optional) are required json objects. Below is the payload request structure: { "tracking_number": "1234567890", "transaction_id": "9XJ12345ABC67890", "status": "SHIPPED", // Required: ON_HOLD, SHIPPED, DELIVERED, CANCELLED "carrier": "UPS" // Required: The carrier handling the shipment. Link to supported carriers: http://developer.paypal.com/docs/tracking/reference/carriers/ }

Parametersstatuscarrierorder_idtransaction_idrequiredtracking_numberrequired

get_shipment_tracking

get shipment tracking

Get tracking information for a shipment by ID. This function retrieves tracking information for a specific shipment using the transaction ID and tracking number. The transaction_id can fetch from the captured payment details in the order information. Below is the payload request structure:

Parametersorder_idtransaction_id

update_shipment_tracking

update shipment tracking

Update tracking information for a shipment by ID and status. This tool updates tracking information such as the carrier or the tracking number for a specific shipment using the transaction ID and status.

Parametersstatusrequiredcarriertransaction_idrequiredtracking_numberrequirednew_tracking_number

create_order

create order

Create an order in PayPal. This tool is used to create a new order in PayPal. This is typically the first step in initiating a payment flow. It sets up an order with specified details such as item(s) to be purchased, quantity, amount, currency, and other details.

ParametersitemsrequirednotesdiscountcancelUrlreturnUrlcurrencyCoderequiredshippingCostshippingAddress

get_order

get order

Retrieves the order details from PayPal for a given order ID. This tool is used to retrieve details of an existing order in PayPal. It provides information about the order, including items, amounts, status, and other relevant details.

Parametersidrequired

pay_order

pay order

Capture a payment for an order. This tool is used to capture a payment for an order. It allows you to capture funds that have been authorized for a specific order but not yet captured.

Parametersidrequired

list_disputes

list disputes

List disputes from PayPal. This function retrieves a list of disputes with optional pagination and filtering parameters.

Parameterspagepage_sizedispute_statedisputed_transaction_id

get_dispute

get dispute

Get details for a specific dispute from PayPal. This tool is used to lists disputes with a summary set of details, which shows the dispute_id, reason, status, dispute_state, dispute_life_cycle_stage, dispute_channel, dispute_amount, create_time and update_time fields.

Parametersdispute_idrequired

accept_dispute_claim

accept dispute claim

Accept liability for a dispute claim. This tool is used to accept liability for a dispute claim. When you accept liability for a dispute claim, the dispute closes in the customer's favor and PayPal automatically refunds money to the customer from the merchant's account. Checked by fizzl-paypal-guard before it runs: the owner approves or denies each one.

Parametersnoterequireddispute_idrequired

list_transactions

list transactions

List transactions from PayPal. This tool is used to list transactions with optional filtering parameters within a date range of 31 days. This tool can also be used to list details of a transaction given the transaction ID. - The start_date and end_date should be specified in ISO8601 date and time format. Example dates: 1996-12-19T16:39:57-08:00, 1985-04-12T23:20:50.52Z, 1990-12-31T23:59:60Z - The transaction_status accepts the following 4 values: 1. "D" - represents denied transactions. 2. "P" - represents pending transactions. 3. "S" - represents successful transactions. 4. "V" - represents transactions that were reversed. - The transaction_id is the unique identifier for the transaction.

Parameterspageend_datepage_sizestart_datesearch_monthstransaction_idtransaction_status

update_plan

update plan

Update a billing plan in PayPal using the Plans API (PATCH). This function updates an existing plan with status CREATED or ACTIVE. For INACTIVE plans, only status updates are allowed. You can patch the following attributes and objects in one call: - name - description - payment_preferences.auto_bill_outstanding - payment_preferences.payment_failure_threshold - payment_preferences.setup_fee - payment_preferences.setup_fee_failure_action - taxes.percentage Checked by fizzl-paypal-guard before it runs: the owner approves or denies each one.

Parametersnameplan_idrequiredsetup_feeoperationsrequiredpercentagedescriptionauto_bill_outstandingsetup_fee_failure_actionpayment_failure_threshold

create_refund

create refund

Initiate a refund for a PayPal payment capture. If you have an order ID instead of a capture ID, first use the get order tool to obtain the capture ID from the order details. This function allows you to return funds to a customer by refunding a previously captured payment. You can issue a full refund or specify a partial amount. If multiple captures exist for an order, request clarification on which specific capture to refund. Required parameters: - Capture ID: The ID of the capture to refund - Amount (optional): For partial refunds, specify the amount to refund (must be less than or equal to the captured amount) - Note to Payer (optional): Additional explanation visible to the customer Response details include: - Refund ID and status - Refunded amount and currency Checked by fizzl-paypal-guard before it runs: never more than is left of the payment, within the owner's limits; above them the owner approves or denies.

Parametersamountcapture_idrequiredinvoice_idnote_to_payer

get_refund

get refund

Retrieve detailed information about a PayPal payment refund. If you have an order ID instead of a refund ID, first use the get order tool to obtain the refund ID from the order details. This function returns comprehensive details about a refund, including its current status (completed, pending, cancelled), refunded amount, and processing information. When multiple refunds exist for an order or capture, request clarification on which specific refund to retrieve. Response details include: - Refund status and ID - Refunded amount and currency - Reason for refund (if provided) - Source transaction details

Parametersrefund_idrequired

get_merchant_insights

get merchant insights

Retrieve business intelligence metrics and analytics for a merchant, filtered by start date, end date, insight type, and time interval. This tool returns actionable insights into orders and sales data, supporting data-driven business decisions.

Parametersend_daterequiredstart_daterequiredinsight_typerequiredtime_intervalrequired

paypal_guard_status

PayPal guard: status

What fizzl-paypal-guard allows and has done: the owner's limits, how much of today's limits is used, approvals waiting for the owner, and the latest decisions (from a log the agent doesn't write). With approval_id: what became of that one approval.

Parametersapproval_id

paypal_guard_check

PayPal guard: dry run

Dry run: what fizzl-paypal-guard would decide for a PayPal tool call (allow, ask the owner, or deny, and why), without running it, counting it or asking anyone. Reads the payment, invoice or dispute at PayPal.

Parameterstoolrequiredarguments

Version history

2
  1. v0.2.1LatestOct 22, 2026
  2. v0.1.1Oct 21, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Paypal integrations