Fintech & Payments

Limit and recipient checks in single-digit milliseconds.

Payment institutions and e-money companies hand support, reconciliation and merchant operations to agents. TCMB and BDDK rules, PCI DSS and KVKK apply at the same time. Thulpar’s tool rails are deterministic. Cedar authorisation, the argument schema and the sink policy judge a payment call within milliseconds. A card number is found with Luhn and masked before it reaches a log.

Policy template

tr-banking-bddk

Recommended install

On-premise or a managed private instance, Standard tier. A pack derived from the banking template.

Surfaces
OpenAI-compatible gatewayMCP proxyCheck API
Regulatory basis
  • Law 6493 · TCMB payment services regulations
  • PCI DSS 4.0 (PAN masking, logging)
  • KVKK 6698 · BDDK Art. 25
Policy template

The latency budget

Even 200 ms is too much in a payment flow. The guardrail has to be deterministic and the model judge asynchronous.

Watch the runs →
Runs

The scenarios below are derived from the product’s real rules.

Every scenario is an agent run written to the product’s real rules. It shows the stage, the rails, the decision, the finding, the approval and the ledger entry step by step.

3 scenarios →
Fintech & Payments

What comes up in practice

The latency budget

Even 200 ms is too much in a payment flow. The guardrail has to be deterministic and the model judge asynchronous.

PAN and identity data

Card numbers, TCKN and IBAN appear both in prompts and in tool output.

A growing MCP tool surface

When a new MCP server is added, its schema has to be pinned and any later change caught.

Runs

3 scenarios

The player opens on the flagship scenario. Pick the others below.

Merchant support agent: a payment refund · Merchant support chatgatewaytr-banking-bddkstandart
Decision trailMerchant Assistant · qwen3-32b · vLLM · data centre
U
01inputuser
“Refund yesterday’s 2,480 TRY payment made with card 4539 1488 0343 6467; the customer returned the goods.”
A
02tool_callagent
The payments:lookup {last4: "6467", date: yesterday, amount: 2480} read call; the payments-read group is open.
T
03tool_resulttool
Transaction found: 2,480 TRY, settled; the merchant’s single-refund limit is 2,000 TRY.
A
04tool_callagent
The payments:refund {txn: 8841…, amount: 2480} call; the Cedar limit is deterministic, no model judge.
S
05tool_callsystem
Two approvals in 4 minutes; the run resumes, the refund executes; the approvals are approval events on the ledger.
T
06tool_resulttool
The refund receipt returns; the processor echoes the full card number in it.
M
07output_chunkmodel
Streamed answer: “The refund is done… the amount will certainly be in the account tomorrow.” — the promise is rewritten.
A
08agent_traceagent
The run’s trajectory goes to the async judge: one refund, approved above the limit, no chained calls.
Thulpar · Rails

A merchant asks for a refund with the card number; the PAN is found by Luhn and masked, a refund above the limit waits for four eyes.

payments:lookuppayments:refundmerchant:gettickets:create
Controls: GR-PII-01 · GR-TOOL-02 · GR-TOOL-01 · GR-CONT-01 · GR-LOG-01
Evidence ledger0000…0000
Simulation · runs in your browser · no request leaves the pageadded latency: 0 ms · 8 steps · SHA-256 chain
Controls exercised in these scenarios

10 GR-*

idcontrolOWASPrails
GR-PII-01PII and special-category detection + masking (TCKN, IBAN, phone, health) on input/tool/output/logLLM02 / — / MCP10pii.detect, pii.redact, file.metadata_pii
GR-TOOL-02Durable human approval on high-impact actions, four eyesLLM06 / ASI02, ASI09labels.sink
GR-TOOL-01Tool-call privilege policy (default deny)LLM06 / ASI02, ASI03 / MCP02tool.authz, tool.args
GR-CONT-01Content-harm policy (AILuminate 12 + TR) with tenant thresholdsLLM09 / ASI09content.input, content.output, toxicity, topic, groundedness, language, image.content_safety, banlist, competitors
GR-LOG-01Tamper-evident event log (model/tool/policy/approval/hit), ≥ 6 months, auditor export— / — / MCP08
GR-INJ-02Indirect injection from tool/RAG output: untrusted label, no new tool call without policyLLM01, LLM08 / ASI01, ASI06 / MCP06, MCP10injection.indirect, file.hidden_text
GR-IFC-01Information-flow labels (integrity, confidentiality, tenant, PII class) enforced at sensitive sinksLLM02 / ASI01, ASI03 / MCP10labels.sink, pii.detect
GR-TOOL-05SQL / command / path traversal / RFI / XSS injection in tool arguments (libinjection + OWASP CRS)LLM05 / ASI02, ASI05 / MCP05tool.args.injection
GR-TOOL-03Tool schema pinning / diff / quarantine (rug-pull)LLM03 / ASI04 / MCP03, MCP04tool.schema_pin
GR-TOOL-04Tool description hygieneLLM03 / ASI04 / MCP03

The full catalogue and evidence packs →

See it in your own environment.

A one-hour technical demo: your scenario, your policy pack, on a closed-circuit install. Then the install kit and a trial licence for a pilot.