PayPal, guarded
NPM · FIZZL-PAYPAL-GUARD-MCP
PayPal's Agent Toolkit with limits on refunds and the owner's Approve/Deny above them.
Available components
Last scanned (1 hour ago)
Scores higher than 51% of npm servers
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security89
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects @langchain/core 0.3.6, reached via @paypal/agent-toolkit > @langchain/core. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 77 of 246 dependencies flagged as unhealthy (2 deprecated). View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to Fizzl13/x402-examples). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability61
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 8191 tokens (~167/item across 49 items; 49 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management10
- Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 94% of tool parameters carry a description.Partial
Tool Safety97
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 7 of 8 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "get_refund" implies "refund" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 50 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 24 Oct 26 0
- CVE-2023-54404 affects this package: high ▼ security
- 23 Oct 26 +38
- CVE-2026-41907 affects this package: high ▼ security
- CVE-2026-41139 affects this package: high ▼ security
- CVE-2026-40897 affects this package: high ▼ security
- CVE-2025-9910 affects this package: high ▼ security
- CVE-2026-8657 affects this package: high ▼ security
- CVE-2026-8769 affects this package: high ▼ security
- CVE-2025-68665 affects this package: high ▼ security
- CVE-2026-40190 affects this package: high ▼ security
- CVE-2026-45134 affects this package: high ▼ security
- CVE-2026-41182 affects this package: high ▼ security
- CVE-2025-48985 affects this package: high ▼ security
- Known CVEs: unverified → fail ▼ security
- Injection markers: unverified → pass ▲ security
- Tool coverage: unverified → 100 ▲ functional
- Stability: unverified → 0.07 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Dependency health: unverified → 0.85 ▲ functional
- Package version: 0.1.1 → 0.2.1 functional
- 22 Oct 26 −29
- CVE-2026-41907 affects this package: high ▼ security
- CVE-2026-41139 affects this package: high ▼ security
- CVE-2026-40897 affects this package: high ▼ security
- CVE-2025-9910 affects this package: high ▼ security
- CVE-2026-8657 affects this package: high ▼ security
- CVE-2026-8769 affects this package: high ▼ security
- CVE-2025-68665 affects this package: high ▼ security
- CVE-2026-40190 affects this package: high ▼ security
- CVE-2026-45134 affects this package: high ▼ security
- CVE-2026-41182 affects this package: high ▼ security
- CVE-2025-48985 affects this package: high ▼ security
- Known CVEs: unverified → fail ▼ security
- Stability: 0.00 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Dependency health: unverified → 0.85 ▲ functional
- First check of Schema quality: unverified functional
- Package version: 0.1.1 → 0.2.1 functional
- Package version: 0.1.1 → 0.2.0 functional
- 21 Oct 26 67
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 24 Oct 2026 · Analysed npm/fizzl-paypal-guard-mcp@0.2.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | Fizzl13/x402-examples |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/Fizzl13/x402-examples/.github/workflows/paypal-guard-mcp.yml@refs/heads/main |
| Rekor log index | 3383605435 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:305e55718ef71cb63cb373c85320fe08b3458ff4a17bfabd2d17700802be79fd2cbe627bf8b91603c520abc6945cff494fe4ce370d01f39842c4e9ced |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 12 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-866g-f22w-33x8 | CVE-2026-8769 | medium | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L | yes |
| GHSA-r399-636x-v7f6 | CVE-2025-68665 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N | yes |
| GHSA-rwvc-j5jr-mgvh | CVE-2025-48985 | low | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N | yes |
| GHSA-33vc-wfww-vjfv | CVE-2025-9910 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N | yes |
| GHSA-j4fx-xxwh-2485 | CVE-2026-8657 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L | yes |
| GHSA-3644-q5cj-c5c7 | CVE-2026-45134 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N | yes |
| GHSA-fw9q-39r9-c252 | CVE-2026-40190 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L | yes |
| GHSA-rr7j-v2q5-chgv | CVE-2026-41182 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N | yes |
| GHSA-29qv-4j9f-fjw5 | CVE-2026-40897 | high | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H | yes |
| GHSA-jvff-x2qm-6286 | CVE-2026-41139 | high | CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H | yes |
| GHSA-w5hq-g745-h8pq | CVE-2026-41907 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N | yes |
| GHSA-mrhx-c7xc-m3w5 | CVE-2023-54404 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 246 packages
| Packages resolved | 246 |
|---|---|
| Deprecated | 2 |
| Stale | 74 |
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
accept_dispute_claim ~105
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dispute_id | string | yes | – |
| note | string | yes | A note about why the seller is accepting the claim |
No output schema declared.
No examples provided.
activate_recurring_series ~115
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.
| Name | Type | Req | Description |
|---|---|---|---|
| recurring_series_id | string | yes | The ID of the recurring invoice series to activate. |
No output schema declared.
No examples provided.
cancel_invoice_auto_reminder ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | The ID of the invoice for which to cancel all scheduled automatic reminders. |
No output schema declared.
No examples provided.
cancel_recurring_series ~95
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.
| Name | Type | Req | Description |
|---|---|---|---|
| recurring_series_id | string | yes | The ID of the recurring invoice series to cancel. |
No output schema declared.
No examples provided.
cancel_sent_invoice ~121
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.
| Name | Type | Req | Description |
|---|---|---|---|
| additional_recipients | array | – | Additional email addresses to which to send the cancellation. |
| invoice_id | string | yes | The ID of the invoice to cancel. |
| note | string | – | A cancellation note to the recipient. |
| send_to_recipient | boolean | – | Indicates whether to send the cancellation to the recipient. |
No output schema declared.
No examples provided.
cancel_subscription ~154
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.
| Name | Type | Req | Description |
|---|---|---|---|
| payload | object | yes | Payload for subscription cancellation. |
| subscription_id | string | yes | The ID of the subscription to show details. |
No output schema declared.
No examples provided.
create_conditional_rules_for_invoice ~61
Create conditional rules for an invoice on PayPal.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | The ID of the invoice for which the conditional rules are to be created. |
| rules | array | yes | The list of conditional rules to create for the invoice. |
No output schema declared.
No examples provided.
create_invoice ~770
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.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_partial_payment | boolean | – | Whether the invoice allows a partial payment. If false, the invoice must be paid in full. If true, the invoice allows partial payments. Not available for users in India, Brazil, or Israel. |
| allow_tip | boolean | – | Whether the payer can add a tip when paying. Not available in Hong Kong, Taiwan, India, or Japan. |
| currency_code | string | yes | The three-character ISO-4217 currency code for the invoice (for example, USD). Applies to every monetary amount on the invoice. |
| enable_pay_by_bank | boolean | – | Whether to enable PAY_BY_BANK as a payment method for this invoice, letting the payer pay directly from their bank account. Available only for US-based merchants and invoices with USD currency. |
| invoice_date | string | – | The invoice date in yyyy-MM-DD format. |
| invoice_number | string | – | The invoice number. If omitted, PayPal auto-increments from the last invoice number used. |
| invoicer_address_line_1 | string | – | The first line of the invoicer's address, for example, number and street. |
| invoicer_address_line_2 | string | – | The second line of the invoicer's address, for example, suite or apartment number. |
| invoicer_business_name | string | – | The business name of the invoicer. |
| invoicer_city | string | – | The city, town, or village of the invoicer's address. |
| invoicer_country_code | string | – | The two-character ISO 3166-1 country code of the invoicer's address (for example, US or GB). |
| invoicer_email_address | string | – | The email address of the invoicer. |
| invoicer_given_name | string | – | The first name of the invoicer. |
| invoicer_postal_code | string | – | The postal code of the invoicer's address. |
| invoicer_state | string | – | The state or province of the invoicer's address. |
| invoicer_surname | string | – | The last name of the invoicer. |
| invoicer_tax_id | string | – | The invoicer's tax ID. |
| items | array | yes | The line items on the invoice. |
| minimum_partial_payment_amount | string | – | The minimum amount allowed for a partial payment, in the invoice's currency_code. Valid only when allow_partial_payment is true. |
| note | string | – | A note to the invoice recipient. Also appears on the invoice notification email. |
| pay_by_bank_exclusive_above_threshold | boolean | – | When true, PAY_BY_BANK becomes the only available payment method once the invoice total exceeds PayPal's system-defined threshold ($1000), disabling all other payment methods above that threshold. |
| primary_recipients | array | yes | The recipients who will be billed for this invoice. |
| reference | string | – | A reference value, such as a purchase order number. |
| shipping_cost | string | – | The shipping cost for the invoice, in the invoice's currency_code. |
| theme_color | string | – | The primary color used to render the invoice, as a hex color code (e.g. #000000). If omitted, the default theme is used. |
No output schema declared.
No examples provided.
create_order ~148
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cancelUrl | string | – | – |
| currencyCode | string | yes | Currency code of the amount. |
| discount | number | – | The discount amount for the order. |
| items | array | yes | – |
| notes | – | – | – |
| returnUrl | string | – | – |
| shippingAddress | – | – | The shipping address for the order. |
| shippingCost | number | – | The cost of shipping for the order. |
No output schema declared.
No examples provided.
create_product ~320
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" }
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | The product category. |
| description | string | – | The product description. |
| home_url | string | – | The home page URL for the product. |
| image_url | string | – | The image URL for the product. |
| name | string | yes | The product name. |
| type | string | yes | The product type. Value is PHYSICAL, DIGITAL, or SERVICE. |
No output schema declared.
No examples provided.
create_recurring_series ~744
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.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_partial_payment | boolean | – | Whether each generated invoice allows a partial payment. If false, each invoice must be paid in full. If true, each invoice allows partial payments. Not available for users in India, Brazil, or Israe… |
| allow_tip | boolean | – | Whether the payer can add a tip when paying. Not available in Hong Kong, Taiwan, India, or Japan. |
| currency_code | string | yes | Currency code of the recurring invoice series |
| interval_count | integer | yes | The number of intervals between each recurring invoice cycle. For example, an interval_count of 2 with interval_unit of MONTH means the invoice recurs every 2 months |
| interval_unit | string | yes | The time unit for the recurring invoice cycle interval |
| invoicer_address_line_1 | string | – | The first line of the invoicer's address, for example, number and street. |
| invoicer_address_line_2 | string | – | The second line of the invoicer's address, for example, suite or apartment number. |
| invoicer_business_name | string | – | The business name of the invoicer. |
| invoicer_city | string | – | The city, town, or village of the invoicer's address. |
| invoicer_country_code | string | – | The two-character ISO 3166-1 country code of the invoicer's address (for example, US or GB). |
| invoicer_email_address | string | – | The email address of the invoicer. |
| invoicer_given_name | string | – | The first name of the invoicer. |
| invoicer_postal_code | string | – | The postal code of the invoicer's address. |
| invoicer_state | string | – | The state or province of the invoicer's address. |
| invoicer_surname | string | – | The last name of the invoicer. |
| invoicer_tax_id | string | – | The invoicer's tax ID. |
| items | array | – | The line items that will appear on each invoice in the recurring series |
| minimum_partial_payment_amount | string | – | The minimum amount allowed for a partial payment on each generated invoice, in the series' currency_code. Valid only when allow_partial_payment is true. |
| note | string | – | A note to the invoice recipient. Also appears on the invoice notification email. |
| primary_recipients | array | yes | The primary recipient of the recurring invoices |
| reference | string | – | A reference value, such as a purchase order number. |
| shipping_cost | string | – | The shipping cost for each generated invoice, in the series' currency_code. |
| start_series_date | string | yes | The date when the recurring series begins and the first invoice is generated, in yyyy-MM-DD format. Cannot be a past date. |
| total_cycles | integer | – | The total number of invoices to generate in the series. If omitted, the series runs indefinitely until cancelled. |
No output schema declared.
No examples provided.
create_refund ~272
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | object | – | The amount to refund. If not specified, the full captured amount is refunded. |
| capture_id | string | yes | The ID of the capture to refund. |
| invoice_id | string | – | The invoice ID that is used to track this payment. |
| note_to_payer | string | – | A note to the payer. |
No output schema declared.
No examples provided.
create_shipment_tracking ~331
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/ }
| Name | Type | Req | Description |
|---|---|---|---|
| carrier | string | – | The carrier handling the shipment. |
| order_id | string | – | The ID of the order for which to create a shipment |
| status | string | – | The status of the shipment. It can be "ON_HOLD", "SHIPPED", "DELIVERED", or "CANCELLED". |
| tracking_number | string | yes | The tracking number for the shipment. Id is provided by the shipper. This is required to create a shipment. |
| transaction_id | string | yes | The transaction ID associated with the shipment. Transaction id available after the order is paid or captured. This is required to create a shipment. |
No output schema declared.
No examples provided.
create_subscription ~239
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.
| Name | Type | Req | Description |
|---|---|---|---|
| application_context | object | – | The application context for the subscription. |
| plan_id | string | yes | The ID of the subscription plan to create. |
| quantity | number | – | The quantity of the product in the subscription. |
| shipping_amount | object | – | The shipping amount for the subscription. |
| subscriber | object | – | The subscriber details. |
No output schema declared.
No examples provided.
create_subscription_plan ~227
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.
| Name | Type | Req | Description |
|---|---|---|---|
| billing_cycles | array | yes | The billing cycles of the plan. |
| description | string | – | The subscription plan description. |
| name | string | yes | The subscription plan name. |
| payment_preferences | object | – | The payment preferences for the subscription plan. |
| product_id | string | yes | The ID of the product for which to create the plan. |
| taxes | object | – | The tax details. |
No output schema declared.
No examples provided.
delete_invoice ~120
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.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | The ID of the draft or scheduled invoice to delete. |
No output schema declared.
No examples provided.
delete_recurring_series ~126
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.
| Name | Type | Req | Description |
|---|---|---|---|
| recurring_series_id | string | yes | The ID of the recurring invoice series to delete. Only series in DRAFT status can be deleted; use cancel_recurring_series for an activated series. |
No output schema declared.
No examples provided.
generate_invoice_number ~63
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).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
generate_invoice_qr_code ~83
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.
| Name | Type | Req | Description |
|---|---|---|---|
| height | number | – | The QR code height |
| invoice_id | string | yes | The invoice id to generate QR code for |
| width | number | – | The QR code width |
No output schema declared.
No examples provided.
get_dispute ~80
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dispute_id | string | yes | The order id generated during create call |
No output schema declared.
No examples provided.
get_invoice ~42
Get an invoice from PayPal. This function retrieves details of a specific invoice using its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_id | string | yes | The ID of the invoice to retrieve. |
No output schema declared.
No examples provided.
get_merchant_insights ~153
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.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | yes | The end date range to filter insights |
| insight_type | string | yes | The type of insight to retrieve. It can be "ORDERS" or "SALES" |
| start_date | string | yes | The start date range to filter insights |
| time_interval | string | yes | The time periods used for segmenting metrics data. It can be "DAILY", "WEEKLY", "MONTHLY", "QUARTERLY", or "YEARLY" |
No output schema declared.
No examples provided.
get_order ~69
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The order id generated during create call |
No output schema declared.
No examples provided.
get_recurring_series ~63
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.
| Name | Type | Req | Description |
|---|---|---|---|
| recurring_series_id | string | yes | The ID of the recurring invoice series to retrieve. |
No output schema declared.
No examples provided.
get_refund ~142
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
| Name | Type | Req | Description |
|---|---|---|---|
| refund_id | string | yes | The ID of the refund to get details for. |
No output schema declared.
No examples provided.
get_shipment_tracking ~95
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:
| Name | Type | Req | Description |
|---|---|---|---|
| order_id | string | – | The ID of the order for which to create a shipment. |
| transaction_id | string | – | The transaction ID associated with the shipment tracking to retrieve. |
No output schema declared.
No examples provided.
list_disputes ~64
List disputes from PayPal. This function retrieves a list of disputes with optional pagination and filtering parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| dispute_state | string | – | OPEN_INQUIRIES |
| disputed_transaction_id | – | – | – |
| page | number | – | – |
| page_size | number | – | – |
No output schema declared.
No examples provided.
list_invoices ~82
List invoices from PayPal. This function retrieves a list of invoices with optional pagination parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| page | number | – | The page number of the result set to fetch. |
| page_size | number | – | The number of records to return per page (maximum 100). |
| total_required | boolean | – | Indicates whether the response should include the total count of items. |
No output schema declared.
No examples provided.
list_products ~81
List products from PayPal. This function retrieves a list of products with optional pagination parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| page | number | – | The page number of the result set to fetch. |
| page_size | number | – | The number of records to return per page (maximum 100). |
| total_required | boolean | – | Indicates whether the response should include the total count of products. |
No output schema declared.
No examples provided.
list_subscription_plans ~107
List subscription plans from PayPal. This function retrieves a list of subscription plans with optional product filtering and pagination parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| page | number | – | The page number of the result set to fetch. |
| page_size | number | – | The number of records to return per page (maximum 100). |
| product_id | string | – | The ID of the product for which to get subscription plans. |
| total_required | boolean | – | Indicates whether the response should include the total count of plans. |
No output schema declared.
No examples provided.
list_transactions ~345
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.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | Filters the transactions in the response by an end date and time, in ISO8601 date and time format. Seconds are required. Fractional seconds are optional. The maximum supported range is 31 days. |
| page | number | – | – |
| page_size | number | – | – |
| search_months | number | – | Number of months to search back for a transaction by ID. Default is 12 months. |
| start_date | string | – | Filters the transactions in the response by a start date and time, in ISO8601 date and time format. Seconds are required. Fractional seconds are optional. |
| transaction_id | – | – | The ID of the transaction to retrieve. |
| transaction_status | string | – | – |
No output schema declared.
No examples provided.
pay_order ~60
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The order id generated during create call |
No output schema declared.
No examples provided.
paypal_guard_check ~92
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.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | object | – | The arguments you would pass to it |
| tool | string | yes | A PayPal tool name, like create_refund |
No output schema declared.
No examples provided.
paypal_guard_status ~82
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.
| Name | Type | Req | Description |
|---|---|---|---|
| approval_id | string | – | An approvalId from a result with "waiting": true |
No output schema declared.
No examples provided.
record_payment_for_invoice ~338
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | object | – | The currency and amount for a financial transaction. |
| invoice_id | string | yes | The ID of the invoice to record the payment against. |
| method | string | yes | The payment mode or method through which the invoicer can accept the payments. |
| note | string | – | A note associated with an external cash or check payment. |
| payment_date | string | – | The date when the invoicer recorded the payment, in yyyy-MM-dd format. |
| payment_date_time | string | – | The date and time when the invoicer recorded the payment, in Internet date and time format (ISO 8601), for example 2018-05-13T21:20:00Z or 2018-05-13T21:20:00.000-08:00. Seconds are required. |
| payment_id | string | – | The ID for a PayPal payment transaction. Required for the PAYPAL payment type. |
| shipping_info | object | – | The shipping information associated with this payment. |
No output schema declared.
No examples provided.
record_refund_for_invoice ~181
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | object | – | The currency and amount for a financial transaction. |
| invoice_id | string | yes | The ID of the invoice to mark as refunded. |
| method | string | yes | The payment mode or method through which the invoicer can accept the payments. |
| refund_date | string | – | The date when the invoicer recorded the refund, in yyyy-MM-dd format. |
No output schema declared.
No examples provided.
search_invoicing ~224
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.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_filters | object | – | Filters to apply when resource_type is 'invoice'. Must not be set when resource_type is 'recurring_series'. |
| page | integer | – | The page number of the result set to fetch. |
| page_size | integer | – | The number of records to return per page (maximum 100). |
| recurring_series_filters | object | – | Filters to apply when resource_type is 'recurring_series'. Must not be set when resource_type is 'invoice'. |
| resource_type | string | yes | Which resource type to search. 'invoice' searches individual invoices using invoice_filters; 'recurring_series' searches recurring invoice series using recurring_series_filters. |
| total_required | boolean | – | Indicates whether the response should include the total count of matching invoices. Only applies when resource_type is 'invoice'. |
No output schema declared.
No examples provided.
send_invoice ~118
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.
| Name | Type | Req | Description |
|---|---|---|---|
| additional_recipients | array | – | Additional email addresses to which to send the invoice. |
| invoice_id | string | yes | The ID of the invoice to send. |
| note | string | – | A note to the recipient. |
| send_to_recipient | boolean | – | Indicates whether to send the invoice to the recipient. |
No output schema declared.
No examples provided.
send_invoice_reminder ~99
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.
| Name | Type | Req | Description |
|---|---|---|---|
| additional_recipients | array | – | Additional email addresses to which to send the reminder. |
| invoice_id | string | yes | The ID of the invoice for which to send a reminder. |
| note | string | – | A note to the recipient. |
| subject | string | – | The subject of the reminder email. |
No output schema declared.
No examples provided.
setup_invoice_auto_reminders ~113
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.
| Name | Type | Req | Description |
|---|---|---|---|
| configurations | array | – | An array of up to two invoice auto reminder configurations, one for BEFORE_DUE and one for AFTER_DUE. If omitted, both reminder types are created with the default configuration in INACTIVE state. If… |
No output schema declared.
No examples provided.
show_product_details ~42
List products from PayPal. This function retrieves a list of products with optional pagination parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | yes | The ID of the product to update. |
No output schema declared.
No examples provided.
show_subscription_details ~75
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).
| Name | Type | Req | Description |
|---|---|---|---|
| get_additional_details | boolean | – | Get all detailed information for the subscription. |
| subscription_id | string | yes | The ID of the subscription to show details. |
No output schema declared.
No examples provided.
show_subscription_plan_details ~62
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).
| Name | Type | Req | Description |
|---|---|---|---|
| plan_id | string | yes | The ID of the subscription plan to show. |
No output schema declared.
No examples provided.
update_invoice_auto_reminder ~137
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.
| Name | Type | Req | Description |
|---|---|---|---|
| interval | object | yes | The interval at which to send the reminder. The interval unit is always DAY. |
| notification | object | – | Notification settings for the reminder. |
| reminder_configuration_id | string | yes | The ID of the auto reminder configuration to update. |
| repetition | integer | yes | The number of times to send the reminder. Must be 1 for BEFORE_DUE reminders. |
| status | string | – | Select an option. |
| type | string | yes | – |
No output schema declared.
No examples provided.
update_invoicing ~155
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.
| Name | Type | Req | Description |
|---|---|---|---|
| invoice_update | object | – | Full replacement content for the invoice. Set only when resource_type is 'invoice'. |
| recurring_series_update | object | – | Full replacement content for the recurring series. Set only when resource_type is 'recurring_series'. |
| resource_type | string | yes | Which kind of resource to update. 'invoice' updates an individual invoice; 'recurring_series' updates a recurring invoice series. |
No output schema declared.
No examples provided.
update_plan ~230
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.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_bill_outstanding | string | – | Auto bill outstanding |
| description | string | – | Plan description. |
| name | string | – | Plan name |
| operations | string | yes | The PATCH operations to perform on the plan |
| payment_failure_threshold | string | – | Payment failure threshold |
| percentage | string | – | Taxes percentage |
| plan_id | string | yes | The ID of the plan to update. |
| setup_fee | object | – | Setup fee |
| setup_fee_failure_action | string | – | Setup fee failure action |
No output schema declared.
No examples provided.
update_product ~76
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.
| Name | Type | Req | Description |
|---|---|---|---|
| operations | array | yes | The PATCH operations to perform on the product. |
| product_id | string | yes | The ID of the product to update. |
No output schema declared.
No examples provided.
update_shipment_tracking ~153
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.
| Name | Type | Req | Description |
|---|---|---|---|
| carrier | string | – | The carrier handling the shipment. |
| new_tracking_number | string | – | The new tracking number for the shipment if being updated. |
| status | string | yes | The status of the item shipment. It can be "CANCELLED", "DELIVERED", "LOCAL_PICKUP", "ON_HOLD", or "SHIPPED". |
| tracking_number | string | yes | The tracking number that you want to update. |
| transaction_id | string | yes | The transaction ID associated with the shipment tracking to retrieve. |
No output schema declared.
No examples provided.
update_subscription ~255
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.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_bill_outstanding | boolean | – | Indicates whether to automatically bill outstanding amounts. |
| currency_code | string | – | Currency code of the amount. |
| custom_id | string | – | The custom id for the subscription |
| fixed_price | object | – | The fixed price for a billing cycle. |
| outstanding_balance | string | – | Outstanding Balance in the subscription |
| payment_failure_threshold | number | – | The number of failed payments before the subscription is canceled. |
| shipping_address | object | – | The shipping address. |
| shipping_amount | string | – | The value of the shipping amount. |
| subscription_id | string | yes | The ID of the subscription to update. |
| taxes_inclusive | boolean | – | Indicates whether the tax is inclusive. |
| taxes_percentage | string | – | The tax percentage. |
No output schema declared.
No examples provided.
How do I install the PayPal, guarded MCP server?
PayPal, guarded runs locally as an npm package, launched with npx -y fizzl-paypal-guard-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · fizzl-paypal-guard-mcp
claude mcp add fizzl13-paypal-guard -- npx -y fizzl-paypal-guard-mcp
What is the PayPal, guarded MCP server?
PayPal, guarded is an MCP server listed in the public MCP registry as io.github.Fizzl13/paypal-guard. PayPal's Agent Toolkit with limits on refunds and the owner's Approve/Deny above them. This page covers its npm package (fizzl-paypal-guard-mcp).
Is the PayPal, guarded MCP server safe to use?
PayPal, guarded scores 76 out of 100 on VerifyMCP. We recorded 12 known advisories against it as of 24 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the PayPal, guarded MCP server expose?
PayPal, guarded exposes 49 tools: create_invoice, create_recurring_series, activate_recurring_series, get_recurring_series, cancel_recurring_series, and 44 more. Their descriptions and schemas cost roughly 8,011 tokens of context every time the server is loaded.
Is the PayPal, guarded MCP server still maintained?
PayPal, guarded is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the PayPal, guarded MCP server under?
PayPal, guarded declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.