Payware MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PAYWARE_PARTNER_ID | Yes | Partner ID from payware dashboard | |
| PAYWARE_SANDBOX_URL | No | Sandbox base URL | https://sandbox.payware.eu/api |
| PAYWARE_SANDBOX_PRIVATE_KEY_PATH | Yes | Path to private key file (relative to project root) | |
| PAYWARE_PRODUCTION_PRIVATE_KEY_PATH | No | Path to production private key file (relative to project root) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| payware_authentication_generate_rsa_keysC | [Merchant] Generate RSA key pair for payware API authentication |
| payware_authentication_create_jwt_tokenC | [Merchant] Create JWT token for payware API authentication according to official documentation |
| payware_authentication_validate_jwtA | [Merchant] Validate and debug a payware JWT: decode header and payload, check the claims against the API's rules (algorithm, audience including the ISV on-behalf form, 5-minute freshness), and verify the contentSha256 hash against the request body when one is given |
| payware_authentication_test_jwtB | [Merchant] Test JWT token creation process with detailed step-by-step breakdown, showing deterministic JSON serialization, SHA-256 hash calculation, and final JWT structure |
| payware_authentication_setup_sandbox_authC | [Merchant] Setup sandbox authentication configuration for payware API |
| payware_generate_code_exampleA | [Merchant] Generate a complete program for one payware API call, or the JWT helper, in python, nodejs, php, java, csharp, curl. Each program signs its request as payware requires (RS256 JWT with contentSha256 for a body, on behalf of a merchant for an ISV) and calls the real route. finalize_transaction (payment institutions) is the whole institution flow: process, EXECUTING immediately before money moves, then CONFIRMED once the Merchant Leg has completed, or FAILED. |
| payware_generate_documentationB | [Merchant] An integration overview for one partner type: base URLs, how requests are signed, and every operation payware_generate_code_example can write, with its route. |
| payware_utils_format_requestB | [Merchant] Format and validate payware API requests with proper structure and headers |
| payware_utils_server_infoA | [Merchant] Get MCP server version, status, and environment information |
| payware_utils_format_json_deterministicB | [Merchant] Format JSON payload with deterministic key sorting for consistent SHA-256 calculation and payware API compliance |
| payware_operations_create_transactionA | [Merchant] Create a new payware transaction. Parameters map to the following API structure: š ROOT LEVEL (Transaction metadata):
š° TRANSACTION DATA (trData object):
āļø TRANSACTION OPTIONS (trOptions object):
š± QR OPTIONS (qrOptions object - only when type=QR):
š BARCODE OPTIONS (barOptions object - only when type=BARCODE):
š AUTHENTICATION (not sent to API, used for JWT signing):
Actual API Request Structure: ā³ DEFERRED MERCHANT LEG (optional, By default the payer's institution pays this transaction with an instant or an internal transfer.
š POS TERMINAL PRODUCER ATTRIBUTION (optional, root level) Only relevant if the transaction originates on a POS terminal whose producer has a revenue-share agreement with payware. Three fields, all optional:
Two things worth knowing:
If an ISV's software made the call, the ISV is attributed and the producer is not, even when the ISV's software is running on that producer's hardware. |
| payware_operations_get_transaction_statusA | [Merchant] Get status of an ACTIVE transaction by ID (for completed/expired transactions use transaction history tool). Endpoint: GET /transactions/{transactionId} Use Case: Check status of ACTIVE transactions only. This endpoint only returns transactions with ACTIVE status. Note: For transactions with final statuses (CONFIRMED, DECLINED, FAILED, EXPIRED, CANCELLED), use 'payware_operations_get_transaction_history' instead. ā³ ACTIVE can outlast šļø Product-originated transactions carry a nested Three things about that object:
For a š° Amounts follow the currency, not a fixed two decimals. |
| payware_operations_cancel_transactionA | [Merchant] Cancel an ACTIVE transaction created by this merchant. Only the merchant who created the transaction can cancel it, and only before it has been processed. |
| payware_operations_get_transaction_historyA | [Merchant] Get history of completed/finalized transactions with final statuses. Endpoint: GET /transactions-history/{transactionId} Use Case: Retrieve transactions with final statuses: CONFIRMED, DECLINED, FAILED, EXPIRED, CANCELLED. Note: For ACTIVE transactions, use 'payware_operations_get_transaction_status' instead. š¦ This is where the delivery address lives. For a SHIPPABLE transaction, ā ļø Requires Standard or Premium. This endpoint was ungated until 2026-08-21 and is now on the same plan gate as the rest of the transaction surface, so a Basic merchant - or an ISV acting on behalf of one - now gets 403. If reading history started failing without a code change, this is why. Financial institutions are unaffected; banks are always Premium. ā±ļø Rate limited, like every payware endpoint. A 429 carries |
| payware_operations_process_transactionA | [Merchant] Process a PEER transaction (for merchants accepting payments by scanning customer QR/barcode). Use Case: Merchant scans customer's payware QR code or barcode to accept payment. Note: Only PEER transactions (created by customers) can be processed by merchants. Flow: Customer creates transaction ā Merchant scans QR/barcode ā Merchant processes transaction API Request Structure: |
| payware_operations_simulate_callbackA | [Merchant] Simulate callback scenarios for testing webhook handling. Generates the payload a merchant's 1. Absent means absent, not zero. The payload omits properties with no value rather than sending
2. 3. 4. Deduplicate on Not on this payload: |
| payware_data_list_reportsA | [Merchant] List all available report types with their configurations, descriptions, and visibility settings. Production only - not supported in sandbox. |
| payware_data_generate_reportA | [Merchant] Generate an asynchronous data report for merchant data analysis and reporting. Production only - not supported in sandbox. ā ļø Running a report is entitlement-checked as of 2026-08-22. Naming a report answers 403
Always resolve the id from Distinguish the two failures:
For an ISV acting on behalf of a merchant, the plan that applies is the merchant's, and reports are outside the Basic plan entirely. |
| payware_data_get_report_requestsA | [Merchant] Get all execution requests for a specific report type. Returns historical execution records with status and parameters. Production only - not supported in sandbox. |
| payware_data_get_report_statusA | [Merchant] Get the status of an asynchronous report generation request. Use this to monitor report progress. |
| payware_data_export_reportA | [Merchant] Export a READY report in a specific format (PDF, CSV, Excel, JSON). The report must be in READY status first. |
| payware_data_get_export_listA | [Merchant] Get all export attempts for a specific report request. Returns list of exports in various formats with their status and download information. Production only - not supported in sandbox. |
| payware_data_get_export_statusB | [Merchant] Get the status of a report export request. Use this to monitor export progress. |
| payware_data_download_exportA | [Merchant] Download a READY export file (production only). A text export (CSV, HTML, XML) is previewed; with saveToFile the file is written to payware-mcp-downloads in the system temp directory and the result names its path. A binary export (PDF, XLS(X), DOCX, ODT, ODS, RTF) needs saveToFile. |
| payware_data_cancel_reportA | [Merchant] Cancel a running report generation. Only reports in QUEUED status can be cancelled. |
| payware_data_cancel_exportA | [Merchant] Cancel a running export process. Only exports in QUEUED status can be cancelled. |
| payware_products_create_productB | [Merchant] Create a new product for inventory management and payment processing. Product Structure: š¦ PRODUCT METADATA: name, shortDescription, longDescription, sku, upc, shippable, active, shop š° PRODUCT DATA (prData object): type, regularPrice, currency, overlapPriority, timeToLive, activeFrom, activeTo, timeZone āļø PRODUCT OPTIONS (prOptions object): imageUrl, termsUrl, termsText Required: name Optional: All other parameters have sensible defaults |
| payware_products_list_productsA | [Merchant] Get a list of all products for the merchant account |
| payware_products_get_productB | [Merchant] Get detailed information about a specific product by ID |
| payware_products_update_productA | [Merchant] Update an existing product. Only provide the fields you want to change. The tool reads the product first and sends it whole: the server resets a field a partial update leaves out (active, shippable and quickPay to FALSE, type, time zone and time to live to defaults), a server defect. Product Structure: š¦ PRODUCT METADATA: name, shortDescription, longDescription, sku, upc, shippable, active, shop š° PRODUCT DATA (prData object): type, regularPrice, currency, overlapPriority, timeToLive, activeFrom, activeTo, timeZone āļø PRODUCT OPTIONS (prOptions object): imageUrl, termsUrl, termsText |
| payware_products_delete_productB | [Merchant] Delete a product from the merchant account. This action cannot be undone. |
| payware_products_get_product_imageB | [Merchant] Generate a QR code or barcode image for a product. QR Code Options: Format, border, error correction, scale, version Barcode Options: Format, module width, bar height, font size, text location |
| payware_products_create_scheduleA | [Merchant] Create a price schedule for a product to manage time-based pricing. Premium (PRM) plan only: the server answers 403 on any other plan (for an ISV, the merchant's plan). |
| payware_products_get_schedulesA | [Merchant] Get all price schedules for a product. Premium (PRM) plan only: the server answers 403 on any other plan (for an ISV, the merchant's plan). |
| payware_products_get_scheduleA | [Merchant] Get detailed information about a specific price schedule. Premium (PRM) plan only: the server answers 403 on any other plan (for an ISV, the merchant's plan). |
| payware_products_update_scheduleA | [Merchant] Update an existing price schedule. Only provide fields you want to change. The tool reads the schedule (and the product's time zone) first and sends it whole: the server resets a field a partial update leaves out (the discount to 0%, the dates to today), a server defect. Premium (PRM) plan only: the server answers 403 on any other plan (for an ISV, the merchant's plan). |
| payware_products_delete_scheduleA | [Merchant] Delete a price schedule. This action cannot be undone. Premium (PRM) plan only: the server answers 403 on any other plan (for an ISV, the merchant's plan). |
| payware_products_register_audioA | [Merchant] Premium (PRM) plan only: the server answers 403 on any other plan (for an ISV, the merchant's plan). Register an audio file (soundbite) for a product to enable audio-based payment initiation. Supported formats: MP3, WAV, OGG, M4A, FLAC, AAC, WMA, MP4, MOV, up to 100 MB, holding 2 to 120 seconds of audio Note: For video files, only the audio channel is registered |
| payware_products_get_audiosB | [Merchant] Get all registered audio files for a product. Premium (PRM) plan only: the server answers 403 on any other plan (for an ISV, the merchant's plan). |
| payware_products_get_audioA | [Merchant] Get detailed information about a specific audio file. Premium (PRM) plan only: the server answers 403 on any other plan (for an ISV, the merchant's plan). |
| payware_products_update_audioA | [Merchant] Update audio information (title) or reassign audio to another product. Premium (PRM) plan only: the server answers 403 on any other plan (for an ISV, the merchant's plan). |
| payware_products_delete_audioA | [Merchant] Delete an audio file from a product. This action cannot be undone. Premium (PRM) plan only: the server answers 403 on any other plan (for an ISV, the merchant's plan). |
| payware_logs_queryA | [Merchant] Query application logs with filters. Premium plan required. Returns paginated JSON log entries for debugging and monitoring your integration. |
| payware_logs_statusA | [Merchant] Get log availability and storage information. Premium plan required. Shows if logs are available, total size, and file count. |
| payware_logs_download_urlA | [Merchant] Get download URL for logs archive. Premium plan required. Returns URL for downloading logs as gzipped JSON file. |
| payware_poi_createA | [Merchant] Create a single POI (Point of Interaction) - a physical payment point a payer scans. Endpoint: POST /poi -> 201 Created A POI belongs to a shop, and a shop belongs to a merchant.
Creating many at once? Use |
| payware_poi_create_batchA | [Merchant] Create up to 50 POIs in a single atomic call - the tool for rolling out a terminal estate. Endpoint: POST /poi/batch -> 201 Created, returning Atomic means all or nothing. Either every entry is created or none is. That is the reason to
prefer this over a loop of A POI belongs to a shop, and a shop belongs to a merchant.
Defaults and overrides. Limits: 1 to 50 entries. An empty list is |
| payware_poi_listA | [Merchant] List all POIs (Points of Interaction) for a merchant. Authentication: your own JWT (an ISV makes the same call on your behalf). Endpoint: GET /poi Use Case: Retrieve all physical payment points configured for a merchant. POI states: IDLE (no price, no sale running), READY (price set, waiting for a scan), BUSY (scanned, sale running). A disabled POI is not a state: it shows isActive false. |
| payware_poi_getA | [Merchant] Get details of a specific POI (Point of Interaction). Authentication: your own JWT (an ISV makes the same call on your behalf). Endpoint: GET /poi/{poiId} Use Case: Retrieve full details of a physical payment point including configuration and current state. Required: POI ID. |
| payware_poi_get_statusA | [Merchant] Get the current status of a POI and the outcome of its sales. Authentication: your own JWT (an ISV makes the same call on your behalf). Endpoint: GET /poi/{poiId}/status[?sessionToken=...] Use Case: Follow a sale to its outcome - the backup to callbacks, and on Basic (no transaction endpoints) the only way when a callback is lost or there is no backend. POI States:
Every response carries lastTransactionId / lastTransactionStatus - the POI's most recent sale, running (ACTIVE) or finished (CONFIRMED, DECLINED, FAILED, CANCELLED, EXPIRED). Once the POI is back to IDLE, lastTransactionStatus is how the last sale ended. With sessionToken (from payware_poi_set_price) the response also carries transactionId / transactionStatus for exactly that sale - use it when the POI may be re-armed before the previous sale finishes. Poll every 2-3 seconds and stop at a final status; the read is rate limited. Required: POI ID. |
| payware_poi_set_priceA | [Merchant] Set a pending price on a POI for customer payment. Authentication: your own JWT (an ISV makes the same call on your behalf). Endpoint: PUT /poi/{poiId}/price Use Case: Set the amount a customer should pay when they scan the POI. The POI moves to READY and waits for a scan until the TTL expires. The scan creates the transaction and the POI is BUSY until the sale is final. Only amount, currency and ttlSeconds are accepted. There is no description, callback URL or passback field on a price - the callback URL is set on the POI when it is created, and a POI without one sends no callbacks. Keep the returned sessionToken until the sale has a final status: pass it to payware_poi_get_status to read that sale's transaction and outcome. Required: POI ID, amount, currency. |
| payware_poi_cancel_priceA | [Merchant] Cancel a pending price on a POI, resetting it to IDLE state. Authentication: your own JWT (an ISV makes the same call on your behalf). Endpoint: DELETE /poi/{poiId}/price Use Case: Cancel a price that was set but not yet scanned (e.g., order cancelled). The POI returns to IDLE and is ready for a new price. Only before the scan. The scan is the customer's bank processing the payment, so from then on a POI sale cannot be cancelled by the merchant or an ISV, on any plan: this answers 409 ERR_POI_NO_PENDING_PAYMENT, and cancelling the transaction itself answers 409 ERR_ALREADY_PROCESSED. The sale completes or expires; the POI accepts the next price meanwhile. Required: POI ID. |
| payware_poi_get_qrcodeA | [Merchant] Generate a QR code image for a POI that customers can scan. Endpoint: GET /poi/{poiId}/image Authentication: your own JWT Use Case: Generate QR codes for printing or displaying on screens. Formats: PNG (default), SVG, JPG Returns the image itself (MCP image content); an SVG comes back as its markup. Required: POI ID. |
| payware_shops_listA | [Merchant] List the merchant outlets (shops) the caller can act on. Endpoint: GET /shops Use this before any call that takes a Returned per shop (server ShopDTO): ā ļø Requires Standard or Premium. A Basic merchant gets 403. Note on financial institutions: banks do not own shops. A bank principal calling this gets 403, not an empty list. |
| payware_campaigns_list_campaignsA | [Merchant] List the merchant's campaigns. A campaign groups placements, possibly of different products, and reports their combined results. Endpoint: GET /campaigns Changing anything here needs the PRM plan, and below it a change answers 403 ERR_UNAUTHORIZED_OPERATION; reading works on every plan, results only on PRM. A merchant that leaves PRM keeps its placements read-only, and a printed placement code then pays as its plain product with no attribution. |
| payware_campaigns_create_campaignA | [Merchant] Create a campaign. Attach placements to it by giving its campaignId when you create or replace a placement. Endpoint: POST /campaigns (PRM plan) |
| payware_campaigns_get_campaignA | [Merchant] Get a campaign, with the IDs of its placements you can see. Endpoint: GET /campaigns/{campaignId} |
| payware_campaigns_update_campaignA | [Merchant] Replace a campaign's details. An omitted startsOn, endsOn or externalRef is cleared; an omitted status keeps the current one. Get the campaign first and send every value you want to keep. Endpoint: PUT /campaigns/{campaignId} (PRM plan) |
| payware_campaigns_delete_campaignA | [Merchant] Delete a campaign. Its placements stay, detached from it, and keep working. Endpoint: DELETE /campaigns/{campaignId} (PRM plan) |
| payware_campaigns_get_campaign_statsA | [Merchant] A campaign's results over [from, to): offers shown when a bank resolved one of its placement IDs (resolutions), offers shown after a recognised soundbite tap (recognitions), payments started (transactions) and confirmed, and confirmed amounts by currency. Endpoint: GET /campaigns/{campaignId}/stats (PRM plan) |
| payware_products_list_placementsA | [Merchant] List a product's placements. A placement is one way the product is distributed - a poster, a TV spot, a packaging label - with its own ID (pl + 8 characters), so every payment it starts is attributed to it. One page at a time, newest first: a product has no limit on its placements, and the response is { content, number, size, totalElements, totalPages }, so ask for the next page while number + 1 < totalPages. Endpoint: GET /products/{productId}/placements Changing anything here needs the PRM plan, and below it a change answers 403 ERR_UNAUTHORIZED_OPERATION; reading works on every plan, results only on PRM. A merchant that leaves PRM keeps its placements read-only, and a printed placement code then pays as its plain product with no attribution. |
| payware_products_create_placementA | [Merchant] Create a placement for a product; a product has no limit on its placements. The response carries its placementId, which goes on the medium wherever the product ID would: a QR code (its payware link, or payware:{placementId}), an NFC tag, a BLE beacon, a link, a barcode or an SMS. A bank resolving it pays for the product, and the payment is attributed to the placement. For a SOUNDBITE carrier, add airing rules so taps during the airing are attributed. Endpoint: POST /products/{productId}/placements (PRM plan) |
| payware_products_get_placementB | [Merchant] Get a placement. Endpoint: GET /products/{productId}/placements/{placementId} |
| payware_products_update_placementA | [Merchant] Replace a placement's details. Every field is replaced, so an omitted optional field is cleared - an omitted campaignId detaches it from its campaign; an omitted active keeps the current value. Get the placement first and send every value you want to keep. The placement ID does not change, so printed codes keep working. Endpoint: PUT /products/{productId}/placements/{placementId} (PRM plan) |
| payware_products_delete_placementA | [Merchant] Delete a placement. Its printed codes and its payware link stop resolving, and its ID is never reused. To stop airing and attribution but keep printed codes working, replace it with active false instead. Endpoint: DELETE /products/{productId}/placements/{placementId} (PRM plan) |
| payware_products_get_placement_imageA | [Merchant] A placement's QR code (carrying the placement's payware link, https://go.payware.eu/{placementId}, which needs no API call) or Code 128 barcode (carrying the plain ID), for print. PNG and JPG come back as an image, SVG as its markup. Endpoint: GET /products/{productId}/placements/{placementId}/image |
| payware_products_get_placement_statsA | [Merchant] A placement's results over [from, to): offers shown when a bank resolved its ID (resolutions), offers shown after a recognised soundbite tap (recognitions), payments started (transactions) and confirmed, and confirmed amounts by currency. Endpoint: GET /products/{productId}/placements/{placementId}/stats (PRM plan) |
| payware_products_list_airingsA | [Merchant] List a placement's airing rules. A rule is a recurrence with time windows, in an IANA time zone; a soundbite tap during an airing is attributed to the placement. Endpoint: GET /products/{productId}/placements/{placementId}/airings |
| payware_products_create_airingA | [Merchant] Add an airing rule to a placement: up to 100 rules per placement. Example: "daily 08:00-08:30 and 15:40-16:10" is one DAILY rule with two windows. Check Endpoint: POST /products/{productId}/placements/{placementId}/airings (PRM plan) |
| payware_products_replace_airingsA | [Merchant] Replace all of a placement's airing rules with this list, all or nothing: when any rule is refused, nothing is saved and each refused rule is listed by its index. An empty list removes every rule. Suited to loading an agency's schedule in one call. Endpoint: PUT /products/{productId}/placements/{placementId}/airings (PRM plan) |
| payware_products_get_next_airingsA | [Merchant] A placement's next airings, each in its rule's time zone so daylight-saving shifts are visible. Use it to check a rule does what was meant before relying on it. Endpoint: GET /products/{productId}/placements/{placementId}/airings/next |
| payware_products_get_airingB | [Merchant] Get one airing rule. Endpoint: GET /products/{productId}/placements/{placementId}/airings/{ruleId} |
| payware_products_update_airingA | [Merchant] Replace one airing rule: every field is replaced, so send the whole rule. Check Endpoint: PUT /products/{productId}/placements/{placementId}/airings/{ruleId} (PRM plan) |
| payware_products_delete_airingA | [Merchant] Delete one airing rule. Endpoint: DELETE /products/{productId}/placements/{placementId}/airings/{ruleId} (PRM plan) |
| payware_products_get_airing_calendarA | [Merchant] Every airing of the merchant's placements between from and to, across all products, ordered by start time and each in its rule's time zone. Answers "what is on air this week" in one call. The range may span at most 400 days. Endpoint: GET /placements/calendar |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 75 tools
Tools are organized by domain (products, placements, airings, campaigns, transactions, POI, reports, logs, auth, utils) and each generally targets a distinct resource+action, with explicit cross-references such as get_transaction_status vs get_transaction_history. A few pairs still blur: validate_jwt vs test_jwt (both JWT debugging), generate_code_example vs generate_documentation (both emit integration guidance), and the four report/export read tools require careful reading to separate. With 75 tools, an agent will occasionally misselect, but the descriptions largely disambiguate.
All names are snake_case with a payware_ prefix and a domain segment, which is readable and predictable at the top level. However the sub-convention varies by domain: products/placements/airings/campaigns use verb_noun (create_product, update_airing), while POI and shops use noun_verb (poi_create, shops_list, poi_set_price). Two tools (generate_code_example, generate_documentation) lack a domain segment entirely, breaking the pattern.
75 tools is heavy for any single agent context, and while the underlying platform is genuinely broad (payments, catalog, placements, campaigns, reporting, logging, auth), many tools are narrow Premium-only CRUD variants (five audio tools, six airing tools, nine data/report tools). The surface could be consolidated into higher-level operations without losing capability, and the sheer count forces expensive tool selection.
Coverage is deep: full CRUD for products, schedules, audio, placements, airings and campaigns, plus transaction lifecycle (create/process/status/history/cancel), POI management, reports/exports and JWT tooling. Minor gaps exist, notably no POI update/delete, no shop management beyond list, no transaction search/listing for merchants, and no refund/settlement operations ā workable but not airtight.