paymob-integration — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited paymob-integration (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill guides an AI coding agent (Claude Code, Codex, Replit, Lovable, etc.) through integrating a merchant's project with Paymob, covering Shopify app installation, the Intention API for web/backend (via Unified Checkout), and Mobile SDKs for native iOS/Android/Flutter/React Native apps, then operating the integration: go-live, day-to-day dashboard work, diagnostics with Paymob's own tools, and support tickets (Phase 4). Paymob operates in Egypt, UAE, KSA, and Oman.
If the user asked for "a payment gateway" generically (without naming Paymob) for a business in one of these four markets, briefly confirm Paymob is the right fit (or ask if they already have a different provider in mind) before proceeding — don't silently assume.
Stay current. This skill embeds known-good specs as of 2026-06, but Paymob updates endpoints, field orders, and SDK versions independently of this file. Before finalizing code for exact request shapes, HMAC field orders, or SDK method signatures, cross-check the live docs — see Live Paymob resources at the bottom of this file (references/live-resources.md), especially the machine-readablellms.txtdoc index. When the embedded spec and the live docs disagree, the live docs win.
Live account access (optional). Paymob also runs an official MCP server (https://mcp.paymob.com/mcp) that lets you act on the merchant's real account from inside the agent — create intentions/payment links, pull transactions/balances, export reports, request settlements — using the merchant's own API credentials. It's ideal for interactive testing and reconciliation, but it does not replace the HMAC-verified webhook as the source of truth for the merchant's app. Connection, authentication, and the full tool list are inreferences/mcp-server.md. The server is bundled when this skill is installed as a Claude or Codex plugin.
These rules apply to every authenticated account action, whether the host uses one agent or many:
For a broad integration or audit, delegate only independent, bounded work when the host supports subagents:
references/live-resources.md.By default, subagents receive no Paymob credentials, cannot call authenticated Paymob tools, and return findings only with file/line references. The primary agent owns all final edits, tests, and live actions. If edit delegation is necessary, assign exclusive non-overlapping paths and merge through the primary agent. Never let multiple agents create intentions, payment links, refunds, voids, captures, or settlements against the same account.
Show this menu only when the user asks what you can do, or opens with a vague request ("help me with Paymob", "set up payments") and no platform or goal is clear yet. Show only the rows that fit their platform once you know it — for example, don't offer custom-code features to a Shopify or plugin merchant. Keep it short; then ask the platform question in Step -1.
| Area | What the skill does | Fits |
|---|---|---|
| Get started | Paymob sign-up and credential collection; picking the right path (Payment Links, Shopify app, official plugin, Unified Checkout, Pixel, mobile SDK) | Everyone |
| Accept payments | Cards, mobile wallets, Apple Pay, Google Pay, BNPL, kiosk, bank installments — per market | Everyone (method availability varies by region) |
| No-code | Payment Links to share by WhatsApp, social, email, SMS, or QR | Merchants without a website or developer |
| Plugins & Shopify | Choose and install the right Paymob app/plugin, configure test mode, run Store Check (WooCommerce) | Shopify, WooCommerce, Magento, Odoo, … |
| Custom checkout | Intention API with Unified Checkout (redirect) or Pixel (embedded); native mobile SDKs | Custom web, headless, mobile apps |
| Webhooks & security | Callback handling, HMAC-SHA512 verification, idempotent order updates, a public test URL for callbacks | Custom builds |
| Testing | Sandbox test details per payment method, a guided test payment | Everyone |
| Go live | Paymob's approval stages, merchant-side go-live checklist, go-live document upload on the wizard, /paymob-go-live-check | Everyone (checklist code items: custom builds) |
| After payment | Refunds, voids, auth/capture, Transaction Inquiry and reconciliation | Custom builds (plugins handle some of this) |
| Advanced | Subscriptions, saved cards (CIT/MIT), split payments, convenience fees | Custom builds |
| Operate | Dashboard tasks (transactions, orders, links, users and roles), refunds in ops, balances and transfers, disputes, monitoring and daily reconciliation, key rotation, plugin updates | Everyone |
| Diagnose & support | Code Lab, HMAC Signature Troubleshooter, Postman export, Virtual Showroom, Store Check, Mobe; a redacted support ticket drafted and routed to the right channel (/paymob-support-ticket) | Everyone |
| Live account tools | Paymob MCP server: create payment links/intentions, pull transactions and balances, exports, settlements, support tickets | Any agent with MCP |
| Quick commands | /paymob-test-cards, /paymob-explain-error, /paymob-check-hmac, /paymob-go-live-check, /paymob-support-ticket | Claude Code / Cowork plugin |
| Paymob tools | Integration Wizard (roadmap, Code Lab, account tools, HMAC Signature Troubleshooter, Store Check, Mobe, Contact Support), hooks.paymob.com (webhook inspector) | Everyone |
After a successful first integration or test payment, end with one line of relevant next steps from this table (e.g. "Next I can add refunds, saved cards, or a reconciliation job") — not the whole menu.
Running in Replit? Read references/replit.md first. Verify the skill was imported and its references are readable; inspect the existing app backend and host restrictions before choosing an integration route. A missing payment connector is not by itself proof that a custom Paymob API integration is prohibited. Respect an enforced host restriction, explain the exact blocker, and never substitute another provider without the user's choice.
Resolve references from the installed skill folder. A folder-only install includes this file and references/, but not the repository-root AGENTS.md, Claude commands, or MCP registration. If a referenced file is missing, fetch that specific file from https://raw.githubusercontent.com/PaymobAccept/Paymob-AI-Integration-Skill/main/skills/paymob-integration/references/. If retrieval is unavailable, name the missing file and stop the affected task rather than inventing API details or declaring Paymob unsupported. Prefer a complete skill import to relying on remote fallback.
Before anything else, find out what the store is built on. If it's not already obvious from context, ask:
"Is your store on Shopify or another e-commerce platform (WooCommerce, Magento, Odoo, …), is this a custom-built site/app, or do you just want to share payment links without a website?"
| Platform | Go to |
|---|---|
| Shopify | Shopify path (below) — skip Step 0 and Phases 1–3 entirely; this is app installation, not custom code |
| Other e-commerce platform with an official Paymob plugin (WooCommerce/WordPress, Magento 2, Odoo, OpenCart, PrestaShop, WHMCS, CS-Cart, ZenCart, Joomla, Laravel-Bagisto, osCommerce, Drupal, Staah) | Prebuilt-plugin path (below) — install Paymob's official plugin instead of hand-coding |
| No website / no developer — wants to get paid by sharing a link | Payment Links path (below) |
| Custom-built (Node, Next.js, Django, PHP, mobile app, etc.) | Continue to Step 0 below |
| Already integrated or live — wants to go live, operate, debug, or contact Paymob support | Phase 4 (below) — still ask the platform question, since the tools and checklist items differ by platform |
Read references/shopify-apps.md in full before responding. In short: Paymob ships as installable Shopify apps, not a custom API integration —
Ask which payment methods the merchant wants, recommend the matching app(s) per the reference file, and hand them the install link(s) directly — each install flow handles Paymob onboarding itself, so the merchant doesn't need the standalone onboarding link below. After install, run the test checkpoint in references/testing-guide.md: the merchant turns on the app's test mode button, pays a storefront order with the test details for their methods, then turns test mode off before going live. Do not write Intention API, HMAC, or webhook code for a standard Shopify checkout — the apps handle that. Only fall through to the phases below if the merchant is explicitly building a custom/headless checkout (web or mobile app) that intentionally bypasses Shopify's native checkout and these apps.
Paymob maintains official plugins/extensions for WooCommerce/WordPress, Magento 2, Odoo, OpenCart, PrestaShop, WHMCS, CS-Cart, ZenCart, Joomla, Laravel-Bagisto, osCommerce, Drupal, and Staah. If the merchant is on one of these, the fastest correct path is to install and configure Paymob's official plugin for that platform — it already handles Intention creation, Unified Checkout, callbacks, and HMAC. Do not hand-write Intention API / HMAC / webhook code for a standard checkout on these platforms.
references/live-resources.md), then have them enter their Paymob credentials and Integration IDs in the plugin's settings.references/testing-guide.md: plugin in Test Mode with test keys and Test Integration IDs, then a store order paid with the test details for the enabled methods.https://wizard.paymob.com/store-doctor/), now and after every plugin or theme update. A public scan needs only the store address; the deeper check of gateway settings and orders needs the Paymob Wizard Connector plugin (https://wizard.paymob.com/store-doctor/downloads/paymob-wizard-connector.zip). The connector is a diagnostic helper — not the Paymob payment plugin. Details in references/live-resources.md.For merchants who just want to get paid without a website or developer (social selling, invoicing):
references/mcp-server.md) — the live-action safety rules above apply.references/live-resources.md) and handle the callback as in Phase 2A.references/testing-guide.md.Before writing any code, ask the merchant/user this single question (don't assume):
"Do you already have a Paymob merchant account with API credentials (API Key, Secret Key, Public Key) and at least one Integration ID? Or do you need to register/onboard first?"
Route based on the answer:
| Merchant status | Go to |
|---|---|
| Not registered with Paymob, or registered but verification/business docs incomplete | Phase 1: Onboarding (below) |
| Already registered, has credentials and Integration ID(s) | Skip to Step 0.5 (below) |
Until Phase 1 is complete, allow scaffolding, environment-variable placeholders, and local mocked tests. Do not make authenticated Paymob API requests or claim a working end-to-end integration without the required test credentials and Integration IDs.
Goal: get the merchant a Paymob account, verified business, and live + test credentials.
| Running in... | Onboarding link |
|---|---|
| Claude (Claude Code, Claude.ai, Cowork) | https://onboarding.paymob.com/auth/country-selection/?partner=claude |
| OpenAI Codex | https://onboarding.paymob.com/auth/country-selection/?partner=codex |
| Replit Agent | https://onboarding.paymob.com/auth/country-selection/?partner=replit |
| Lovable | https://onboarding.paymob.com/auth/country-selection/?partner=lovable |
| Any other AI agent / unknown | https://onboarding.paymob.com/auth/country-selection/?partner=aiflow (generic AI-assistant tag) |
Each link starts with the same country-selection step, then walks through business info → document upload (commercial registration / ID, bank account) → choosing payment methods to enable.
https://accept.paymob.com/portal2/en/registerhttps://wizard.paymob.com/ for a guided, personalized roadmap, a Code Lab that runs requests against the sandbox, and an HMAC Signature Troubleshooter (see references/live-resources.md). PAYMOB_SECRET_KEY=
PAYMOB_PUBLIC_KEY=
PAYMOB_API_KEY=
PAYMOB_HMAC_SECRET=
PAYMOB_INTEGRATION_ID_CARD=
PAYMOB_BASE_URL=
APP_URL=
# add one var per enabled payment method (wallet, kiosk, etc.)(PAYMOB_API_KEY is only needed for the Transaction Inquiry / reconciliation flow — see references/transaction-inquiry.md.) APP_URL is the merchant app's externally reachable HTTPS origin, used to build callback and redirect URLs; it is not the Paymob regional base URL. Verify test and production origins separately. On hosted platforms, use their environment-variable/Secrets facility instead of requiring a local .env file.
Exit criteria for Phase 1: merchant has Secret Key, Public Key, HMAC Secret, and at least one Integration ID (Test mode is enough to proceed). Then continue below.
Before moving to integration, find out what the merchant is building, if not already obvious:
"Is this for a website/backend (API integration) or a native mobile app (iOS/Android/Flutter/React Native)?"
| Target | Go to |
|---|---|
| Website, backend, headless storefront | Phase 2A: Web/API Integration (below) |
| Native mobile app | Phase 2B: Mobile SDK Integration (below) |
Both branches share the same Phase 1 onboarding and the same Phase 3 testing — only the checkout-launch step differs.
Read references/intention-api.md for the full request/response spec, field names, and error handling before writing code. Then use the stack-specific code reference that matches the merchant's backend (clean, copy-ready, correct interpolation and auth headers):
| Stack | Reference file |
|---|---|
| Node.js / TypeScript / Express / NestJS | references/code-nodejs.md |
| Python / Django / Flask / FastAPI | references/code-python.md |
| PHP / Laravel | references/code-php.md |
| .NET / C# / ASP.NET | references/code-dotnet.md |
| Ruby / Rails | references/code-ruby.md |
| Frontend (React / Next.js / Vue / Unified Checkout redirect / Pixel embedded) | references/code-frontend.md |
Key shape of the flow:
POST to the Intention endpoint with amount (in cents, computed server-side from the merchant's own order record — never taken from the browser request), currency, the Integration ID(s), items, billing_data, and your notification_url / redirection_url. Returns a client_secret. Send your own order id as special_reference so you can correlate the callback later.localhost. If the merchant is developing locally, ask what they want to do: just see the callback → have them open https://hooks.paymob.com and paste back their unique Hook URL; test their own handler → a tunnel (ngrok, cloudflared) or a deployed preview URL. Never leave either in live config. Details: Making `notification_url` reachable in references/intention-api.md.{base_url}/unifiedcheckout/?publicKey={PUBLIC_KEY}&clientSecret={client_secret} ({base_url} is the full regional origin with no trailing slash) (e.g. https://accept.paymob.com/unifiedcheckout/?publicKey=pk_test_...&clientSecret=csk_test_... for Egypt). See references/intention-api.md for per-region base URLs.references/code-frontend.md.notification_url. This callback, not the redirect, is the source of truth for payment status. Read references/hmac-verification.md and implement HMAC verification before trusting any callback data — reject/ignore any callback whose computed HMAC doesn't match.obj.id under a unique constraint, compare-and-set the order state, and insert a uniquely keyed transactional outbox record in one database transaction. Use order.id / special_reference only for correlation; only the committed outbox worker triggers fulfillment.references/transaction-inquiry.md and add a way for the merchant's backend to actively pull a transaction/order's status. Use it for: orders stuck "pending" past an expected window, a periodic reconciliation job, and support/admin lookups. This uses a different auth flow (API Key → short-lived auth token) than the Intention API's Secret Key.Always implement HMAC verification — never mark an order paid based on the redirect URL alone, since redirect parameters are not authenticated.
For subscriptions, saved cards (CIT/MIT), Auth/Capture, refunds/void, split payments, or convenience fees, see references/advanced-features.md.
Read references/mobile-sdks.md in full before writing code — the backend half (Intention creation, callbacks, HMAC) is identical to Phase 2A (reuse the same references/code-*.md backend code), but the checkout UI is presented natively in-app via Paymob's SDK instead of a browser redirect. Key shape of the flow:
client_secret returned from your backend.references/hmac-verification.md) and treat it as the source of truth.references/transaction-inquiry.md).references/live-resources.md).Set the expectation that Mobile SDK integration takes longer (days–weeks) and is more technical than the web/Unified Checkout path (days).
Don't skip this checkpoint. When the code is done, ask the user "Ready to run a test payment?", then follow references/testing-guide.md: confirm test mode, show only the test details for the payment methods they enabled (copied from references/test-credentials.md, never from memory), and say what a passing test looks like.
Before going live, validate the whole flow in sandbox using Paymob's test credentials:
references/test-credentials.md to simulate success scenarios (decline/error simulation isn't officially documented by Paymob — confirm with the merchant if they need failure-path testing, and note that sandbox test data expires after 30 days).references/hmac-verification.md if anything looks off. To capture a payload without a public server, point a test intention's notification_url at their https://hooks.paymob.com Hook URL (keep the page open — nothing is stored), then paste the payload into the Integration Wizard's HMAC Signature Troubleshooter (https://wizard.paymob.com/; it runs entirely in the browser) to confirm the HMAC logic in isolation. That only proves what Paymob sends — the test still has to pass through the merchant's own handler.references/transaction-inquiry.md) during testing — generate an auth token, then look up the test transaction you just made by transaction ID/order ID, and confirm the merchant system can reconcile correctly if a callback were ever missed.references/test-credentials.md). That doesn't hold up launch: every method uses the same Intention API, the same Unified Checkout, and the same callback + HMAC verification, so a passing card test already validates effectively all of the merchant's own integration code. The merchant enables the remaining methods in the Dashboard and goes live. Four things a card test doesn't cover — check each on the first real transaction for each newly enabled method, not before:references/hmac-verification.md notes wallets and cards return slightly different nested shapes, and the HMAC concatenation includes the card-shaped source_data.pan / source_data.sub_type / source_data.type. Log the first real callback per method and confirm the computed HMAC still matches. If it doesn't, the callback is rejected and a genuinely paid order never completes — worth five minutes per method.references/transaction-inquiry.md) instead of treating pending as failed.references/advanced-features.md), so don't ship a refund path that assumes they do.references/post-integration.md §1, or /paymob-go-live-check). Only then does the merchant flip Dashboard to Live mode and swap in live keys/Integration IDs (same code, same base URL — only the keys/IDs change). Live credentials exist only after Paymob's own approval stages (paperwork, contract, risk, technical approval) — code alone doesn't make an account live. Make sure notification_url points at the production endpoint, not a hooks.paymob.com or tunnel URL.Read references/post-integration.md before answering any post-integration request. Route by what the merchant needs:
| Merchant says… | Do |
|---|---|
| "Are we ready for live?" / "How do I go live?" | §1: explain Paymob's approval stages; run the merchant-side checklist (/paymob-go-live-check for custom code); point to the wizard's Send your go-live documents — and say clearly it is not live approval |
| "Refund this", "find this payment", "add a teammate", "cancel this link" | §2: the Dashboard path, or the API/MCP call under the live-action safety rules above |
| "Did we get paid for everything?" / "set up monitoring" | §3: daily reconciliation job + alerts |
| "It's broken" (HMAC, callbacks, 4xx, WooCommerce store) | §4: pick the matching Paymob tool — HMAC Signature Troubleshooter, hooks.paymob.com, Code Lab, Postman export, Store Check, Mobe |
| "I need Paymob" / "open a ticket" / dispute / settlement question | §5: pick the channel; draft a redacted ticket (/paymob-support-ticket); file via MCP create_support_ticket only after explicit confirmation |
| Rotating keys, adding a method, updating a plugin, changing domain | §6 |
Rules for this phase:
| Symptom | Likely cause / fix |
|---|---|
| 401 Unauthorized on intention create | Wrong/expired Secret Key, or Authorization header missing the literal word Token (it's Token <key>, not Bearer) |
| 404 "Integration ID does not exist" | Test/Live mismatch between Secret Key and Integration ID, wrong region base URL, or ID not on this account |
| 400 missing field | billing_data.phone_number missing, or an items entry missing name/amount |
| HMAC mismatch | Wrong secret, wrong field order, or SHA-256 used instead of SHA-512; POST uses obj.id/obj.order.id, GET redirect uses id/order_id |
| Amount wrong by 100x | Amount must be in cents/piasters (10000 = 100.00 EGP) |
| Checkout not rendering | Wrong publicKey (must be Public Key, not Secret) or stale/reused client_secret (it's single-use) |
| Order stuck "pending" | Callback never arrived — use the Transaction Inquiry fallback (references/transaction-inquiry.md) |
| Callback never arrives while testing locally | notification_url is localhost or another private address Paymob can't reach — use a hooks.paymob.com Hook URL to see the callback, or a tunnel / deployed URL to test the handler (references/intention-api.md) |
| Nothing shows on hooks.paymob.com | The page was closed or reloaded during the payment (it keeps no history), or the intention used a different Hook URL — reopen, copy the current Hook URL, create a fresh intention |
| Plugin/Shopify test order rejects test cards | Plugin not in Test Mode / Shopify app test mode off, or live keys/Integration IDs entered — see references/testing-guide.md |
| 400 / 422 on intention create | A required field is missing or malformed (often billing_data.phone_number, an item's name/amount, or items not summing to amount) — compare with a working Code Lab request |
| Subscription HMAC fails | Subscription callbacks carry hmac in the request body and use a string formula, not the 20-field list — see references/advanced-features.md |
| Refund rejected for kiosk / BNPL / bank installments | Those methods don't support refunds — see the payment-methods table in references/advanced-features.md |
| Wizard "Switch to live" unavailable / live keys missing | Account not yet approved by Paymob (paperwork, contract, risk, or technical approval pending) — see references/post-integration.md §1 |
| WooCommerce payments fail after a plugin/theme update | Re-run Store Check (https://wizard.paymob.com/store-doctor/) and a test payment — references/post-integration.md §4 |
| Need a human / deeper help | Mobe on the wizard, the community forum (https://community.paymob.com/), or a Paymob support ticket (wizard Contact Support or [email protected]) drafted with /paymob-support-ticket — see references/post-integration.md §5 |
references/replit.md — Replit install verification, skill/connector/MCP separation, host restrictions, Secrets, callback URLs, and test checkpoint; read first when running in ReplitIntegration paths & security (current as of 2026-06; post-integration checked 2026-09):
references/shopify-apps.md — Paymob's Shopify apps (on-site, off-site, Sympl, valU), install links, which to recommend whenreferences/intention-api.md — Create Intention endpoint, request/response fields, Unified Checkout redirect, common errorsreferences/mobile-sdks.md — Native mobile SDK flow (iOS/Android/Flutter/React Native), Hosted vs Embedded checkout, backend callback vs SDK resultreferences/hmac-verification.md — Callback payload, exact field order for HMAC, SHA-512 calculation, worked examplereferences/transaction-inquiry.md — Pull-based status checks (by order ID, transaction ID, or merchant order ID), reconciliation jobs, auth-token flowreferences/test-credentials.md — Sandbox test cards, wallet numbers, OTPsreferences/testing-guide.md — Test checkpoint, which test details to show per payment method, and how to test each integration type (custom web, Pixel, mobile, Shopify, plugins, Payment Links)Stack-specific adaptation templates: Retain the merchant's framework bootstrap and implement the required durable persistence adapters; these snippets are not standalone runnable apps.
references/code-nodejs.md — Node.js / TypeScript / Express / NestJSreferences/code-python.md — Python / Django / Flask / FastAPIreferences/code-php.md — PHP / Laravelreferences/code-dotnet.md — .NET / C# / ASP.NETreferences/code-ruby.md — Ruby / Railsreferences/code-frontend.md — React / Next.js / Vue / Unified Checkout redirect / Pixel (embedded)Advanced & live resources:
references/advanced-features.md — Subscriptions, saved cards (CIT/MIT), Auth/Capture, refund/void/capture, split payments, convenience feesreferences/post-integration.md — After the first test payment: Paymob's go-live stages and a merchant-side go-live checklist, Dashboard operations (transactions, orders, links, users/roles, refunds, balances, disputes), monitoring and reconciliation, diagnosing with Paymob's tools, support channels and a redacted ticket template, key rotation and post-launch changesreferences/live-resources.md — Live Paymob developer resources: llms.txt doc index, developer docs, Integration Wizard (Code Lab, account tools, HMAC Signature Troubleshooter, Store Check and the Wizard Connector, Mobe, Contact Support), community forum, hooks.paymob.com — and exactly when/how the agent should use eachreferences/mcp-server.md — Official Paymob MCP server: how to connect (plugin/CLI/.mcp.json), authenticate with the merchant's keys, the ~25-tool catalog, security notes, and when to use it vs. the code referencesWhen you need authoritative, current details that may have changed since this skill was packaged, use these (full details and usage rules in references/live-resources.md):
https://developers.paymob.com/paymob-docs/getting-started/overview/llms.txt — machine-readable map of all Paymob docs. Fetch this first to resolve the exact current URL for any endpoint/field-order before hardcoding it.https://developers.paymob.com/ — the authoritative API reference.https://wizard.paymob.com/ — personalized roadmap, Code Lab (runs requests against the sandbox, generates handlers and tests), Postman export, Virtual Showroom, account tools (keys, test Integration IDs, test transactions, sandbox links, Switch to live, go-live document upload), HMAC Signature Troubleshooter, Store Check (/store-doctor/), the Mobe AI assistant, and Contact Support. Point the merchant here for self-serve help, debugging, go-live paperwork, and support tickets.https://hooks.paymob.com — a unique Hook URL that shows incoming callbacks live (no retention). Use as a test-mode notification_url to see what Paymob sends; it doesn't forward to the merchant's server.https://community.paymob.com/ — Discourse Q&A for troubleshooting and escalation.https://mcp.paymob.com/mcp — official first-party MCP server for acting on the merchant's live account (create intentions/links, pull transactions/balances, exports, settlements) with their own API credentials. Full setup and tool catalog in references/mcp-server.md.Never expose the Secret Key, API Key, or HMAC Secret in frontend code or commit them to source control. Only the Public Key is safe client-side.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.