Turkey & EU business data: validation, sanctions screening, parsing, FX and fuel price history
Inferred from the transports this listing declares (streamable-http). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.
Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.
Read from a real MCP initialize → tools/list handshake against the declared endpoint. No tool was ever invoked — tools/list is the read-only introspection call the protocol defines for this. It reflects what the server advertised at that moment; a hosted endpoint is not pinned to any version and can change without notice.
https://api.temsor.com/mcp72 tools · 917msai_messagesSingle-balance access to upstream LLMs; billed per token, no subscription.Single-balance access to upstream LLMs; billed per token, no subscription.
system: References the system promptOptional system prompt.| Parameter | Type | Description |
|---|---|---|
| model* | string | Upstream model identifier, e.g. xai/grok-4.6. |
| messages* | array | Conversation turns, in order. |
| system | string | Optional system prompt. |
| max_tokens* | integer | Maximum tokens to generate. |
| stream | boolean | Not supported in this preview; must be omitted or false. |
bic_validateChecks a SWIFT/BIC against ISO 9362 structure (8 or 11 characters), splits bank/country/location/branch, and names well-known institutions.
Payment files reject a BIC that is the wrong length or uses a forbidden character in the location code long before they care which bank it is. This checks the…Checks a SWIFT/BIC against ISO 9362 structure (8 or 11 characters), splits bank/country/location/branch, and names well-known institutions. Payment files reject a BIC that is the wrong length or uses a forbidden character in the location code long before they care which bank it is. This checks the…
| Parameter | Type | Description |
|---|---|---|
| bic* | string | SWIFT/BIC, 8 or 11 characters, with or without spaces. |
container_validateValidates an ISO 6346 freight-container number: owner code, category letter, serial and check digit.
Bills of lading and terminal scans mistype container numbers constantly; the check digit (ISO 6346) catches almost all of those before a customs filing. The fourth letter is the category (U freight…Validates an ISO 6346 freight-container number: owner code, category letter, serial and check digit. Bills of lading and terminal scans mistype container numbers constantly; the check digit (ISO 6346) catches almost all of those before a customs filing. The fourth letter is the category (U freight…
| Parameter | Type | Description |
|---|---|---|
| code* | string | ISO 6346 container number, e.g. CSQU3054383. |
creditor_refValidates or generates an ISO 11649 RF creditor reference (mod-97 check digits).
SEPA credit transfers carry an RF creditor reference so remittance data survives the payment chain. The check digits are the same ISO 7064 mod-97 used for IBAN: RF and the two digits move to the end, letters become 10…Validates or generates an ISO 11649 RF creditor reference (mod-97 check digits). SEPA credit transfers carry an RF creditor reference so remittance data survives the payment chain. The check digits are the same ISO 7064 mod-97 used for IBAN: RF and the two digits move to the end, letters become 10…
| Parameter | Type | Description |
|---|---|---|
| reference* | string | ISO 11649 RF creditor reference, or a 1–21 character payload to encode. |
ean_gtinValidates GTIN-8, UPC-A (12), EAN-13 and GTIN-14 check digits for retail barcodes.
Retail GTINs share one GS1 check-digit algorithm with length-dependent packing (8 / 12 / 13 / 14). This endpoint stays on that retail identity: it does not guess shipping carriers. For 13-digit codes the leading thr…Validates GTIN-8, UPC-A (12), EAN-13 and GTIN-14 check digits for retail barcodes. Retail GTINs share one GS1 check-digit algorithm with length-dependent packing (8 / 12 / 13 / 14). This endpoint stays on that retail identity: it does not guess shipping carriers. For 13-digit codes the leading thr…
| Parameter | Type | Description |
|---|---|---|
| code* | string | GTIN-8, UPC-A (12), EAN-13 or GTIN-14. |
email_verifyChecks an e-mail address: syntax, whether the domain can actually receive mail, disposable and role-account detection, and typo correction.
No SMTP probing. Most competitors connect to the target server and try RCPT TO, which sounds thorough but produces a confident-looking number you cannot trust…Checks an e-mail address: syntax, whether the domain can actually receive mail, disposable and role-account detection, and typo correction. No SMTP probing. Most competitors connect to the target server and try RCPT TO, which sounds thorough but produces a confident-looking number you cannot trust…
| Parameter | Type | Description |
|---|---|---|
| email* | string | E-mail address to check. |
| rejectFreeProviders | boolean | — |
| rejectRoleAccounts | boolean | — |
eu_vat_ratesDated EU-27 VAT rates (standard, reduced, super-reduced, parking) plus the Union OSS threshold. Not a goods classification.
Invoice software that hard-codes “Germany is 19%” breaks the day a member state moves a rate, and it never knew the reduced list. This is a point-in-time schedule of publishe…Dated EU-27 VAT rates (standard, reduced, super-reduced, parking) plus the Union OSS threshold. Not a goods classification. Invoice software that hard-codes “Germany is 19%” breaks the day a member state moves a rate, and it never knew the reduced list. This is a point-in-time schedule of publishe…
| Parameter | Type | Description |
|---|---|---|
| country* | string | ISO 3166-1 alpha-2 country (EL accepted as Greece). |
| asOf | string | ISO date YYYY-MM-DD. Defaults to today UTC. |
eu_vat_validateValidates an EU VAT number against the official VIES register, with per-country format checks and honest handling of upstream outages.
VIES is free but unreliable: member-state services drop out individually and a failed lookup can easily be mistaken for a rejection. Treating an outage as "invalid…Validates an EU VAT number against the official VIES register, with per-country format checks and honest handling of upstream outages. VIES is free but unreliable: member-state services drop out individually and a failed lookup can easily be mistaken for a rejection. Treating an outage as "invalid…
| Parameter | Type | Description |
|---|---|---|
| vatNumber* | string | VAT number with or without the country prefix, e.g. "DE811907980". |
| countryCode | string | Country code, when the number is given without a prefix. |
iban_validateValidates an IBAN from any of 70+ countries: checksum, country length and in-country account structure, and resolves the bank and branch codes.
Most free libraries stop at the mod-97 checksum. That only says the digits are self-consistent — not that the number could exist in that country. This che…Validates an IBAN from any of 70+ countries: checksum, country length and in-country account structure, and resolves the bank and branch codes. Most free libraries stop at the mod-97 checksum. That only says the digits are self-consistent — not that the number could exist in that country. This che…
| Parameter | Type | Description |
|---|---|---|
| iban* | string | IBAN, with or without spaces. |
| expectCountry | string | Expected country code (ISO 3166-1 alpha-2). |
id_mrzParses ICAO 9303 TD1/TD3 MRZ and verifies check digits — format check, not identity proof.
Machine-readable zones on passports and ID cards carry ICAO 9303 check digits (weights 7,3,1). This parses TD3 (2×44, typical passport) and TD1 (3×30, typical ID card) and reports each field check. A mismatc…Parses ICAO 9303 TD1/TD3 MRZ and verifies check digits — format check, not identity proof. Machine-readable zones on passports and ID cards carry ICAO 9303 check digits (weights 7,3,1). This parses TD3 (2×44, typical passport) and TD1 (3×30, typical ID card) and reports each field check. A mismatc…
| Parameter | Type | Description |
|---|---|---|
| mrz* | string | ICAO 9303 MRZ text: TD3 two lines of 44, or TD1 three lines of 30. |
isbn_validateValidates ISBN-10 and ISBN-13 check digits and converts between them when the 978 prefix allows it.
Catalogue and retail systems still mix ISBN-10 and ISBN-13. This checks the ISBN-10 weighted mod-11 digit (X allowed) and the ISBN-13 / EAN-13 alternating 1–3 check digit. When an ISBN-10 is valid i…Validates ISBN-10 and ISBN-13 check digits and converts between them when the 978 prefix allows it. Catalogue and retail systems still mix ISBN-10 and ISBN-13. This checks the ISBN-10 weighted mod-11 digit (X allowed) and the ISBN-13 / EAN-13 alternating 1–3 check digit. When an ISBN-10 is valid i…
| Parameter | Type | Description |
|---|---|---|
| isbn* | string | ISBN-10 or ISBN-13, with or without hyphens. |
isin_validateValidates an ISIN (ISO 6166): country code, national identifier and the letter-aware check digit.
Portfolio imports and corporate-action files fail on a single mistyped ISIN. The check digit is a Luhn variant that first expands letters to two digits (A=10…Z=35), so a swapped letter is caught, not…Validates an ISIN (ISO 6166): country code, national identifier and the letter-aware check digit. Portfolio imports and corporate-action files fail on a single mistyped ISIN. The check digit is a Luhn variant that first expands letters to two digits (A=10…Z=35), so a swapped letter is caught, not…
| Parameter | Type | Description |
|---|---|---|
| isin* | string | ISIN, 12 characters, e.g. US0378331005. |
lei_lookupLooks up a Legal Entity Identifier in the GLEIF register: legal name, registration status, country, and BIC.
Checksum-valid is not the same as currently registered — a LAPSED or MERGED LEI still passes ISO 7064. This endpoint checks the digits locally first (a typo never becomes an upstream call)…Looks up a Legal Entity Identifier in the GLEIF register: legal name, registration status, country, and BIC. Checksum-valid is not the same as currently registered — a LAPSED or MERGED LEI still passes ISO 7064. This endpoint checks the digits locally first (a typo never becomes an upstream call)…
| Parameter | Type | Description |
|---|---|---|
| lei* | string | Legal Entity Identifier, 20 characters. |
lei_validateValidates a 20-character Legal Entity Identifier (ISO 17442) with the ISO 7064 mod-97 check digits.
KYC and MiFID reporting reject an LEI that fails the check digits before anyone looks the entity up. The algorithm is the same family as IBAN (ISO 7064 mod 97-10) over all 20 characters; the remaind…Validates a 20-character Legal Entity Identifier (ISO 17442) with the ISO 7064 mod-97 check digits. KYC and MiFID reporting reject an LEI that fails the check digits before anyone looks the entity up. The algorithm is the same family as IBAN (ISO 7064 mod 97-10) over all 20 characters; the remaind…
| Parameter | Type | Description |
|---|---|---|
| lei* | string | Legal Entity Identifier, 20 characters. |
mcp_indexSearchable, dated archive of what every public MCP server actually exposes — tool definitions, daily change feed, and rug-pull detection.
The official MCP registry publishes a server’s name and address but not its tool surface; the only way to learn what a server exposes is to connect and call `to…Searchable, dated archive of what every public MCP server actually exposes — tool definitions, daily change feed, and rug-pull detection. The official MCP registry publishes a server’s name and address but not its tool surface; the only way to learn what a server exposes is to connect and call `to…
| Parameter | Type | Description |
|---|---|---|
| view | string | `search`: search tool name/description · `changes`: change feed (the actual product) · `server`: per-day measurement history for one server · `tool`: definitio… |
| q | string | Search term (only `search`), e.g. `invoice`, `calendar`, `sql`. |
| server | string | Registry server name, e.g. `com.temsor/api`. Required for `server`/`tool` views. |
| tool | string | Tool name (only `tool` view). |
| minRisk | integer | Only tools whose review score is at or above this (only `search`). |
| severity | string | Only `changes`. |
| type | string | Event type filter (only `changes`), e.g. `tool_description_changed`. |
| days | integer | Window in days (`changes` and `server`). |
| limit | integer | — |
model_archiveDated archive of LLM prices, context windows, announced retirement dates and quiet delistings across 400+ models and 50+ providers.
Providers overwrite their pricing pages and drop models from their catalogs without publishing what changed. This endpoint keeps a daily record, so three otherwise un…Dated archive of LLM prices, context windows, announced retirement dates and quiet delistings across 400+ models and 50+ providers. Providers overwrite their pricing pages and drop models from their catalogs without publishing what changed. This endpoint keeps a daily record, so three otherwise un…
| Parameter | Type | Description |
|---|---|---|
| view | string | `catalog`: tracked models · `expiring`: retirement announced · `delisted`: dropped from the catalogue · `events`: lifecycle events · `stats`: archive totals. |
| provider | string | Provider prefix, e.g. `anthropic`, `openai`, `google`. |
| slug | string | Full model id, e.g. `anthropic/claude-opus-5` (only `events`). |
| q | string | Search in model id/name (only `catalog`). |
| type | string | Event type (only `events`). |
| severity | string | — |
| withinDays | integer | `expiring`: retire within this many days. |
| days | integer | `events`: window in days. |
| includeDelisted | boolean | `catalog`: include delisted models. |
| limit | integer | — |
model_driftIndependent daily record of what changed behind a provider endpoint: which alias resolved to which model, and when behaviour shifted.
Providers update models behind stable endpoint names. This endpoint publishes an independent measurement: a fixed probe suite is sent daily at temperature 0, three…Independent daily record of what changed behind a provider endpoint: which alias resolved to which model, and when behaviour shifted. Providers update models behind stable endpoint names. This endpoint publishes an independent measurement: a fixed probe suite is sent daily at temperature 0, three…
| Parameter | Type | Description |
|---|---|---|
| view | string | `aliases`: alias → the real model behind it · `events`: drift events · `probes`: probe status from the last run. |
| provider | string | Filter by provider (gemini, groq, cerebras, mistral). |
| severity | string | Only for the `events` view. |
| days | integer | History window in days (only `events`). |
| limit | integer | — |
pay_epc_qrBuilds an EPC069-12 v3.1 V2 (002) SCT payload. Does not send money; returns text only, no PNG.
European payments often start from a QR that encodes an EPC069-12 credit-transfer payload. This endpoint builds that text in version 002 (V2): BCD, UTF-8, SCT, optional BIC, name, electronic IBAN, EUR am…Builds an EPC069-12 v3.1 V2 (002) SCT payload. Does not send money; returns text only, no PNG. European payments often start from a QR that encodes an EPC069-12 credit-transfer payload. This endpoint builds that text in version 002 (V2): BCD, UTF-8, SCT, optional BIC, name, electronic IBAN, EUR am…
| Parameter | Type | Description |
|---|---|---|
| name* | string | Beneficiary name (SCT Name). |
| iban* | string | Beneficiary IBAN, with or without spaces. |
| amountEur* | number | Transfer amount in EUR (positive). |
| remittance | string | Unstructured remittance (e.g. invoice number). |
| bic | string | Beneficiary BIC; optional in V2 (002). |
| currency | string | Must be EUR if provided. Other currencies are rejected. |
pbx_audio_chunkNotify an optional audio chunk / customer URI for a live or archived call (idle $0).
Prefer customer storage URI. Temsor keeps a pointer; STT only while a call is active.Notify an optional audio chunk / customer URI for a live or archived call (idle $0). Prefer customer storage URI. Temsor keeps a pointer; STT only while a call is active.
| Parameter | Type | Description |
|---|---|---|
| call_id* | string | — |
| pbx_id | string | — |
| uri | string | Customer-side media URI (preferred). |
| bytes_b64 | string | Optional small demo chunk; production prefers URI. |
| t_ms | integer | — |
pbx_bridge_multi_agentRecord virtual multi-agent bridge intent + shared memory hint (open promises). Idle $0, no live Asterisk.
POST /v1/pbx/bridge/multi-agent {call_id, agents:[{role,label}]}. Records a virtual RTP agent bridge intent in the PBX index (no live Asterisk/ExternalMedia). Returns shared_memory linking ope…Record virtual multi-agent bridge intent + shared memory hint (open promises). Idle $0, no live Asterisk. POST /v1/pbx/bridge/multi-agent {call_id, agents:[{role,label}]}. Records a virtual RTP agent bridge intent in the PBX index (no live Asterisk/ExternalMedia). Returns shared_memory linking ope…
| Parameter | Type | Description |
|---|---|---|
| call_id* | string | Call id to attach the multi-agent bridge intent to. |
| agents* | array | Virtual RTP agents to bridge (intent only — no live Asterisk). |
| pbx_id | string | Optional PBX scope; falls back to x-temsor-pbx-key or demo PBX. |
pbx_callsList recent calls with transfer path crumbs — site + customer archive browser.
GET /v1/pbx/calls?limit=20. Scoped by x-temsor-pbx-key when set. Idle $0. No DID sales.List recent calls with transfer path crumbs — site + customer archive browser. GET /v1/pbx/calls?limit=20. Scoped by x-temsor-pbx-key when set. Idle $0. No DID sales.
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Max recent calls to return (1–100). |
pbx_calls_getGet one call by id with transfer graph — customer detail drawer.
GET /v1/pbx/calls/get?call_id=…. Scoped by x-temsor-pbx-key. found=false if missing. Idle $0.Get one call by id with transfer graph — customer detail drawer. GET /v1/pbx/calls/get?call_id=…. Scoped by x-temsor-pbx-key. found=false if missing. Idle $0.
| Parameter | Type | Description |
|---|---|---|
| call_id* | string | Call id (e.g. call_msp_002). |
pbx_calls_graphGET call graph + transfer edges for a call — who→whom→where the promise stuck (moat).
GET /v1/pbx/calls/graph?call_id=…&stuck_at=310. Returns path, path_tr (plain Turkish), edges, and raw transfers. Compounding asset: Transfer edges, not a bot transcript. Idle $0. No DID sales.GET call graph + transfer edges for a call — who→whom→where the promise stuck (moat). GET /v1/pbx/calls/graph?call_id=…&stuck_at=310. Returns path, path_tr (plain Turkish), edges, and raw transfers. Compounding asset: Transfer edges, not a bot transcript. Idle $0. No DID sales.
| Parameter | Type | Description |
|---|---|---|
| call_id* | string | Call id whose transfer graph to return. |
| stuck_at | string | Optional override for where the promise stuck (extension). |
pbx_dictionaryManaged SaaS domain dictionary (E4) — example packs thicken per pilot (tenant-scoped aliases). Boosts search + Fact extract. No invented premiums.
GET /v1/pbx/dictionary?domain=otel|santral_firmasi|sigorta|finans|enerji|otomotiv|msp|all (msp = legacy alias for santral_firmasi). Idle $0, no LLM. Sy…Managed SaaS domain dictionary (E4) — example packs thicken per pilot (tenant-scoped aliases). Boosts search + Fact extract. No invented premiums. GET /v1/pbx/dictionary?domain=otel|santral_firmasi|sigorta|finans|enerji|otomotiv|msp|all (msp = legacy alias for santral_firmasi). Idle $0, no LLM. Sy…
| Parameter | Type | Description |
|---|---|---|
| domain | string | Domain slice: otel | santral_firmasi | sigorta | finans | enerji | otomotiv (legacy msp) | all |
pbx_dictionary_addAdd a synonym/alias (tenant-scoped or global demo) — E4 compounding thickens search boost + Fact extract. ≤60/hour/key → 429. Idle $0. No invented premiums.
POST /v1/pbx/dictionary/add {term, alias, domain:otel|santral_firmasi|sigorta|finans|enerji|otomotiv, scope?:pbx|global}. Managed SaaS compou…Add a synonym/alias (tenant-scoped or global demo) — E4 compounding thickens search boost + Fact extract. ≤60/hour/key → 429. Idle $0. No invented premiums. POST /v1/pbx/dictionary/add {term, alias, domain:otel|santral_firmasi|sigorta|finans|enerji|otomotiv, scope?:pbx|global}. Managed SaaS compou…
| Parameter | Type | Description |
|---|---|---|
| term* | string | Canonical term (e.g. AC, tariff). Plain Turkish preferred. |
| alias* | string | Synonym / alias to add (e.g. cooling, line package). |
| domain | string | Domain: otel | santral_firmasi | sigorta | finans | enerji | otomotiv (legacy msp accepted). |
| kind | string | Fact kind; inferred from seed term when omitted. |
| boost | number | Search boost weight (default 2). |
| scope | string | pbx = scoped to x-temsor-pbx-key; global = demo-wide. Default: pbx if registered key, else global. |
| hint_tr | string | — |
| hint_en | string | — |
pbx_eventsIngest Asterisk programming-interface (ARI) / Stasis (call-app channel) events. Optional x-temsor-pbx-key or HMAC-SHA256 request signature. Body ≤256 KiB → 429. Idle $0 when no calls.
Demo stores events in memory/file. Auth: omit, x-temsor-pbx-key, or x-temsor-signature = hex(HMAC-SHA256(api_key,…Ingest Asterisk programming-interface (ARI) / Stasis (call-app channel) events. Optional x-temsor-pbx-key or HMAC-SHA256 request signature. Body ≤256 KiB → 429. Idle $0 when no calls. Demo stores events in memory/file. Auth: omit, x-temsor-pbx-key, or x-temsor-signature = hex(HMAC-SHA256(api_key,…
| Parameter | Type | Description |
|---|---|---|
| pbx_id | string | PBX id that emitted the ARI batch. |
| events* | array | ARI / Stasis event batch. Utterance/text fields trigger heuristic promise extract. |
pbx_factsList extracted facts (IMEI, room, tariff…) from the durable index — filter by call_id, kind, domain, q.
GET /v1/pbx/facts?call_id=&kind=&domain=otel|santral_firmasi|all&q=&limit=50. Facts come from transcript extract + domain dictionary; persist in pbx-index. Scoped by x-temsor-pbx-key. Idle $0. N…List extracted facts (IMEI, room, tariff…) from the durable index — filter by call_id, kind, domain, q. GET /v1/pbx/facts?call_id=&kind=&domain=otel|santral_firmasi|all&q=&limit=50. Facts come from transcript extract + domain dictionary; persist in pbx-index. Scoped by x-temsor-pbx-key. Idle $0. N…
| Parameter | Type | Description |
|---|---|---|
| call_id | string | Filter by call id (e.g. call_msp_001). |
| kind | string | Fact kind key (imei, oda, tarife, ...) or all. |
| domain | string | Domain slice: otel | santral_firmasi | sigorta | finans | enerji (legacy msp) | all. |
| q | string | Free-text filter over kind + value + call_id. |
| limit | integer | Max facts to return (1–200). |
pbx_facts_getGet one extracted fact by id — detail drawer for site + customer.
GET /v1/pbx/facts/get?id=…. Scoped by x-temsor-pbx-key. found=false if missing. Idle $0. No DID sales.Get one extracted fact by id — detail drawer for site + customer. GET /v1/pbx/facts/get?id=…. Scoped by x-temsor-pbx-key. found=false if missing. Idle $0. No DID sales.
| Parameter | Type | Description |
|---|---|---|
| id* | string | Fact id (e.g. fact_001). |
pbx_index_partialUpsert mid-call partial index (utterances → fact/promise hints). Path to ≤400ms whisper; ≤600/hour/key → 429; idle $0.
POST /v1/pbx/index/partial {call_id, text?, speaker?, t_ms?, is_final?, live?, end_call?, promote?}. Streams partial STT queue into accumulating Fact/Promise hints while the call…Upsert mid-call partial index (utterances → fact/promise hints). Path to ≤400ms whisper; ≤600/hour/key → 429; idle $0. POST /v1/pbx/index/partial {call_id, text?, speaker?, t_ms?, is_final?, live?, end_call?, promote?}. Streams partial STT queue into accumulating Fact/Promise hints while the call…
| Parameter | Type | Description |
|---|---|---|
| call_id* | string | Live call id to upsert partial index for. |
| text | string | Partial utterance / snippet (customer STT or demo). Empty = metadata-only. |
| speaker | — | — |
| t_ms | — | — |
| is_final | boolean | Finalized utterance span (vs interim). |
| live | boolean | Default true while call is live. |
| end_call | boolean | Mark live=false; idle $0 for this call. |
| promote | boolean | Promote heuristic hints into durable Promise/Fact docs. |
| pbx_id | string | — |
pbx_index_partial_getGET mid-call partial index — accumulating facts/promises/snippets while live.
GET /v1/pbx/index/partial/get?call_id=…. Returns live partial state for whisper ≤400ms path. Idle $0 when no live call. Managed SaaS in-call index; no DID sales. Own PBX optional footnote.GET mid-call partial index — accumulating facts/promises/snippets while live. GET /v1/pbx/index/partial/get?call_id=…. Returns live partial state for whisper ≤400ms path. Idle $0 when no live call. Managed SaaS in-call index; no DID sales. Own PBX optional footnote.
| Parameter | Type | Description |
|---|---|---|
| call_id* | string | Call id whose live partial index to read. |
pbx_ingest_transcriptHeuristic TR promise extractor from transcript text — creates open Promise docs (idle $0, no LLM).
Detects promise-like sentences (söz, vaat, edeceğiz, iade, iptal, yarın…). Optional persist_promises=false for extract without writing. Also wired via utterance text on POST /v1/pbx/events.Heuristic TR promise extractor from transcript text — creates open Promise docs (idle $0, no LLM). Detects promise-like sentences (söz, vaat, edeceğiz, iade, iptal, yarın…). Optional persist_promises=false for extract without writing. Also wired via utterance text on POST /v1/pbx/events.
| Parameter | Type | Description |
|---|---|---|
| transcript* | string | TR utterance / transcript text to scan for promises. |
| call_id | string | — |
| pbx_id | string | — |
| who | string | — |
| ext | string | — |
| persist_promises | boolean | When false, extract only (dry-run, no write). When true, create Promise docs status=open. |
pbx_night_twin_lastGET last gece-ikizi report persisted on forge volume (null if never run). Idle $0.
GET /v1/pbx/night-twin/last — last report from POST /v1/pbx/night-twin/run. No LLM/Telnyx.GET last gece-ikizi report persisted on forge volume (null if never run). Idle $0. GET /v1/pbx/night-twin/last — last report from POST /v1/pbx/night-twin/run. No LLM/Telnyx.
No input schema was published for this tool.
pbx_night_twin_runNight scan: open promises older than N hours → unresolved candidates (iptal/iade/söz). ≤20/hour/key → 429. Idle $0, no LLM.
POST /v1/pbx/night-twin/run {pbx_id?, older_than_hours?}. Heuristic night twin — still-open promises older than N hours whose text matches iptal/iade/söz. Persists last repor…Night scan: open promises older than N hours → unresolved candidates (iptal/iade/söz). ≤20/hour/key → 429. Idle $0, no LLM. POST /v1/pbx/night-twin/run {pbx_id?, older_than_hours?}. Heuristic night twin — still-open promises older than N hours whose text matches iptal/iade/söz. Persists last repor…
| Parameter | Type | Description |
|---|---|---|
| pbx_id | string | Optional PBX scope; falls back to x-temsor-pbx-key scope. |
| older_than_hours | number | Scan open promises whose call is older than this many hours. |
pbx_orchestra_actQuery→act on managed SaaS runtime: whisper / hold / transfer / pci_stop / snoop. Intent + optional webhook. ≤120/hour/key → 429. No DID sales. Own PBX optional footnote.
POST /v1/pbx/orchestra/act {call_id, action, params?, stasis_webhook_url?}. Turns search/promise/suggest hits into ARI orchestra…Query→act on managed SaaS runtime: whisper / hold / transfer / pci_stop / snoop. Intent + optional webhook. ≤120/hour/key → 429. No DID sales. Own PBX optional footnote. POST /v1/pbx/orchestra/act {call_id, action, params?, stasis_webhook_url?}. Turns search/promise/suggest hits into ARI orchestra…
| Parameter | Type | Description |
|---|---|---|
| call_id* | string | Live or indexed call id to act on. |
| action* | string | whisper | hold | transfer | pci_stop | snoop |
| params | object | Action params (to_ext required for transfer). |
| pbx_id | string | — |
| stasis_webhook_url | string | Optional customer Stasis webhook — forge POSTs the act intent there. |
| skip_forward | boolean | Record only; do not POST webhook. |
pbx_orchestra_actsList recent managed orchestra intents (whisper/hold/transfer/PCI). Number→flow SaaS · idle $0 · no DID. Own PBX optional footnote.
GET /v1/pbx/orchestra/acts?limit=20&call_id=. Tenant-scoped recent ARI orchestra intents (E.5). Pairs with POST /v1/pbx/orchestra/act and POST /v1/pbx/promises/act (E1…List recent managed orchestra intents (whisper/hold/transfer/PCI). Number→flow SaaS · idle $0 · no DID. Own PBX optional footnote. GET /v1/pbx/orchestra/acts?limit=20&call_id=. Tenant-scoped recent ARI orchestra intents (E.5). Pairs with POST /v1/pbx/orchestra/act and POST /v1/pbx/promises/act (E1…
| Parameter | Type | Description |
|---|---|---|
| call_id | string | Optional filter — only acts for this call_id. |
| limit | integer | Max recent orchestra acts (default 20). |
pbx_personsLight CRM from call graph / facts — caller phones+names and extension identities seen on transfers.
GET /v1/pbx/persons?call_id=&kind=caller|extension|all&q=&limit=50. Durable Person rows from pbx-index plus derived extension identities (ext_NNN) from Transfer edges / promise.ext. Scoped by x-tems…Light CRM from call graph / facts — caller phones+names and extension identities seen on transfers. GET /v1/pbx/persons?call_id=&kind=caller|extension|all&q=&limit=50. Durable Person rows from pbx-index plus derived extension identities (ext_NNN) from Transfer edges / promise.ext. Scoped by x-tems…
| Parameter | Type | Description |
|---|---|---|
| call_id | string | Filter persons seen on this call id. |
| kind | string | caller = durable Person; extension = derived from call-graph hops; all = both. |
| q | string | Free-text over names, phones, org, extensions, facts. |
| include_extensions | boolean | Include derived extension identities (default true). |
| limit | integer | Max persons to return (1–200). |
pbx_persons_getGet one light-CRM identity by id — caller Person or derived extension.
GET /v1/pbx/persons/get?id=per_001|ext_101. Scoped by x-temsor-pbx-key. found=false if missing. Idle $0. No DID sales.Get one light-CRM identity by id — caller Person or derived extension. GET /v1/pbx/persons/get?id=per_001|ext_101. Scoped by x-temsor-pbx-key. found=false if missing. Idle $0. No DID sales.
| Parameter | Type | Description |
|---|---|---|
| id* | string | Person id (e.g. per_001) or extension id (e.g. ext_101). |
pbx_promisesList broken/open promises from the call graph — the hotel / PBX-provider sales demo list.
GET /v1/pbx/promises?status=open returns open/unclosed promises with transfer path. Scoped by x-temsor-pbx-key when set.List broken/open promises from the call graph — the hotel / PBX-provider sales demo list. GET /v1/pbx/promises?status=open returns open/unclosed promises with transfer path. Scoped by x-temsor-pbx-key when set.
| Parameter | Type | Description |
|---|---|---|
| status | string | Promise status filter; closed = kept|broken. Sales demo uses open. |
pbx_promises_actE1 moat: who→whom→promise → managed orchestra intent (whisper/transfer/hold). Idle $0. No PSTN. Own PBX optional footnote.
POST /v1/pbx/promises/act {promise_id, action?}. Loads the promise + call graph, suggests whisper/transfer/hold, records orchestra intent with source_type=promise. Managed Saa…E1 moat: who→whom→promise → managed orchestra intent (whisper/transfer/hold). Idle $0. No PSTN. Own PBX optional footnote. POST /v1/pbx/promises/act {promise_id, action?}. Loads the promise + call graph, suggests whisper/transfer/hold, records orchestra intent with source_type=promise. Managed Saa…
| Parameter | Type | Description |
|---|---|---|
| promise_id* | string | Open (or any) promise id — closed loop reads call graph then records orchestra intent. |
| action | string | Default whisper. transfer uses graph stuck_at / promise.ext. |
| agent_ext | string | — |
| skip_forward | boolean | Default true — record intent only. |
| stasis_webhook_url | string | — |
| pbx_id | string | — |
pbx_promises_closeMark an open promise kept or broken with an optional KVKK-safe note — makes the sales demo writable, not read-only. ≤60/hour/key → 429.
POST /v1/pbx/promises/close {promise_id, status:kept|broken, note?}. Phones/emails in note are scrubbed. Scoped by x-temsor-pbx-key when set. Idle $0 — no LLM/PST…Mark an open promise kept or broken with an optional KVKK-safe note — makes the sales demo writable, not read-only. ≤60/hour/key → 429. POST /v1/pbx/promises/close {promise_id, status:kept|broken, note?}. Phones/emails in note are scrubbed. Scoped by x-temsor-pbx-key when set. Idle $0 — no LLM/PST…
| Parameter | Type | Description |
|---|---|---|
| promise_id* | string | Promise id (prm_*). Sales demo marks open promises kept|broken. |
| status* | string | Close outcome: kept (honoured) or broken (not kept). |
| note | string | Optional short operator note. Phones/emails stripped (KVKK-safe). |
pbx_promises_exportExport open/broken promises as CSV or JSON — hotel / PBX-provider unclosed-promise sales list.
GET /v1/pbx/promises/export?status=open|closed&format=csv|json. CSV/JSON include closed_at, close_note, path crumbs. Scoped by x-temsor-pbx-key when set. Idle $0.Export open/broken promises as CSV or JSON — hotel / PBX-provider unclosed-promise sales list. GET /v1/pbx/promises/export?status=open|closed&format=csv|json. CSV/JSON include closed_at, close_note, path crumbs. Scoped by x-temsor-pbx-key when set. Idle $0.
| Parameter | Type | Description |
|---|---|---|
| status | string | Promise status filter; closed = kept|broken. Sales demo uses open. |
| format | string | Export format. |
pbx_promises_reopenUndo a kept/broken close — restore an open promise so the sales demo can reverse a mis-click. ≤60/hour/key → 429.
POST /v1/pbx/promises/reopen {promise_id}. Only kept|broken → open; clears closed_at/close_note. Scoped by x-temsor-pbx-key when set. Idle $0.Undo a kept/broken close — restore an open promise so the sales demo can reverse a mis-click. ≤60/hour/key → 429. POST /v1/pbx/promises/reopen {promise_id}. Only kept|broken → open; clears closed_at/close_note. Scoped by x-temsor-pbx-key when set. Idle $0.
| Parameter | Type | Description |
|---|---|---|
| promise_id* | string | Promise id (prm_*). Undo a kept|broken close — restore open. |
pbx_redactKVKK-first forget (default-on SaaS): clear derived index by id/phone; durable audit who/what/when + tenant scope. ≤30/hour/key → 429. Managed pointer only — not a legal deletion SLA.
E.3 KVKK-first redaction for managed SaaS. mode=anonymize|delete. Lookup by target_id or phone. Clears Person/Promi…KVKK-first forget (default-on SaaS): clear derived index by id/phone; durable audit who/what/when + tenant scope. ≤30/hour/key → 429. Managed pointer only — not a legal deletion SLA. E.3 KVKK-first redaction for managed SaaS. mode=anonymize|delete. Lookup by target_id or phone. Clears Person/Promi…
| Parameter | Type | Description |
|---|---|---|
| target_type | string | Index document type. Optional when `phone` is set. |
| target_id | string | Document id (prm_*, per_*, call_*, fact_*). |
| phone | string | Caller phone — finds Person phones (+ linked derived index). |
| reason | string | KVKK (personal-data) / forget reason. |
| mode | string | anonymize (default) scrubs fields; delete removes docs. |
| who | string | Actor label for durable audit (defaults to pbx scope / demo-operator). |
pbx_redact_auditList recent KVKK forget actions — who/what/when + tenant scope. Managed SaaS derived-index audit; not a legal deletion SLA.
GET /v1/pbx/redact/audit?limit=20. Durable audit from POST /v1/pbx/redact (E.3). Tenant-scoped. Derived index cleared; raw media not deleted by Temsor. Number→flow managed Sa…List recent KVKK forget actions — who/what/when + tenant scope. Managed SaaS derived-index audit; not a legal deletion SLA. GET /v1/pbx/redact/audit?limit=20. Durable audit from POST /v1/pbx/redact (E.3). Tenant-scoped. Derived index cleared; raw media not deleted by Temsor. Number→flow managed Sa…
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Max recent forget actions to return (default 20). |
pbx_registerinjection riskRegister a pilot PBX; returns pbx_id + API key once (hashed at rest). ≤5/hour/IP → 429. Idle $0.
Control-plane register. API key shown once; stored hashed at rest. Send x-temsor-pbx-key to scope GET /v1/pbx/promises to this pbx_id. No speech recognition while idle.Register a pilot PBX; returns pbx_id + API key once (hashed at rest). ≤5/hour/IP → 429. Idle $0. Control-plane register. API key shown once; stored hashed at rest. Send x-temsor-pbx-key to scope GET /v1/pbx/promises to this pbx_id. No speech recognition while idle.
once; stored hashed at rest. Send x-temsor-pbx-key to scope GET /v1/pbx/promises…| Parameter | Type | Description |
|---|---|---|
| pbx_id | string | Pilot PBX id; auto-minted if omitted. |
| label | string | Human label, e.g. hotel or PBX/IT provider site. |
| ari_webhook_secret | string | ARI webhook signing secret (stored as hint only). |
| name | string | Pilot contact name (waitlist / register). |
| string | Pilot contact email. | |
| webhook_url | string | Optional outbound webhook URL — Temsor POSTs promise/fact/orchestra/redact events. |
| webhook_secret | string | Optional HMAC secret for outbound webhook signatures (x-temsor-signature). |
| webhook_events | — | Event list or comma string: promise.opened|closed, fact.extracted, orchestra.act, redact, or *. |
pbx_searchArchive search over call promises and facts — voice-Google for the PBX, not a receptionist bot.
Demo index + domain dictionary v0. Filters: status, date, ext, competitor, stuck_after (transfer hop). Returns call-graph path + transfer edges.Archive search over call promises and facts — voice-Google for the PBX, not a receptionist bot. Demo index + domain dictionary v0. Filters: status, date, ext, competitor, stuck_after (transfer hop). Returns call-graph path + transfer edges.
| Parameter | Type | Description |
|---|---|---|
| q | string | Full-text query over promises, facts, and call summaries. |
| status | string | — |
| ext | string | — |
| competitor | string | — |
| date_from | string | ISO date/time lower bound (promise.when_iso / call.started_at). |
| date_to | string | ISO date/time upper bound. |
| stuck_after | string | Filter: promise stuck after transfer to this extension (to_ext hop). |
pbx_statusControl-plane status for a registered PBX — counts + idle. No DID sales.
GET /v1/pbx/status. Scoped by x-temsor-pbx-key when set. Asterisk on customer; derived index on Temsor. Idle $0.Control-plane status for a registered PBX — counts + idle. No DID sales. GET /v1/pbx/status. Scoped by x-temsor-pbx-key when set. Asterisk on customer; derived index on Temsor. Idle $0.
No input schema was published for this tool.
pbx_synthetic_runLoad demo: sample call utterances → promise extractor → stats (calls, promises_open). ≤10/hour/key → 429. Idle $0, no LLM/PSTN.
POST /v1/pbx/synthetic/run {scenario:ivr_menu|promise_heavy, count:10..500}. Generates deterministic fake utterances, runs heuristic ingest/transcript extract, returns ca…Load demo: sample call utterances → promise extractor → stats (calls, promises_open). ≤10/hour/key → 429. Idle $0, no LLM/PSTN. POST /v1/pbx/synthetic/run {scenario:ivr_menu|promise_heavy, count:10..500}. Generates deterministic fake utterances, runs heuristic ingest/transcript extract, returns ca…
| Parameter | Type | Description |
|---|---|---|
| scenario | string | ivr_menu = DTMF/menu stress; promise_heavy = dense commitment lexicon. |
| count | integer | Fake call count, capped 10..500. |
| pbx_id | string | Optional PBX scope; falls back to x-temsor-pbx-key or demo PBX. |
pbx_webhooksinjection riskRegister or list outbound webhooks — customer URL receives promise/fact/orchestra/redact events (HMAC if secret). POST write ≤30/hour/key → 429.
POST /v1/pbx/webhooks {url, secret?, events?, ping?} registers. GET lists. ping:true sends a test delivery. Events: promise.opened, promise.closed, fact.…Register or list outbound webhooks — customer URL receives promise/fact/orchestra/redact events (HMAC if secret). POST write ≤30/hour/key → 429. POST /v1/pbx/webhooks {url, secret?, events?, ping?} registers. GET lists. ping:true sends a test delivery. Events: promise.opened, promise.closed, fact.…
dact events (HMAC if secret). POST write ≤30/hour/key → 429.
POST /v1/pbx/webhooks…| Parameter | Type | Description |
|---|---|---|
| url | string | Outbound webhook URL (http/https). Present → register; omit on GET → list. |
| secret | string | Optional HMAC-SHA256 secret → x-temsor-signature: sha256=<hex>. |
| events | — | Events: promise.opened|closed, fact.extracted, orchestra.act, redact, or *. |
| ping | boolean | If true with url → register then ping; if true without url → ping existing. |
| webhook_id | string | For ping: target webhook id. |
| limit | integer | List limit (default 50). |
pbx_webhooks_deliveriesList last N outbound webhook deliveries (stub or live) — promise/fact/orchestra/redact/ping.
GET /v1/pbx/webhooks/deliveries?limit=20&webhook_id=. Durable log of Temsor→customer POSTs. HMAC when secret set. Idle $0. No DID sales; Asterisk on customer; KVKK.List last N outbound webhook deliveries (stub or live) — promise/fact/orchestra/redact/ping. GET /v1/pbx/webhooks/deliveries?limit=20&webhook_id=. Durable log of Temsor→customer POSTs. HMAC when secret set. Idle $0. No DID sales; Asterisk on customer; KVKK.
| Parameter | Type | Description |
|---|---|---|
| webhook_id | string | Filter by webhook id. |
| limit | integer | Max deliveries (default 20). |
pbx_whisper_statusCapability: mode=stub|ready from TEMSOR_RTP_*. No live RTP on forge; idle $0.
GET /v1/pbx/whisper/status. Reports MediaBridge config presence (TEMSOR_RTP_PATH). mode=ready means path env set — not that Asterisk RTP is flowing. live_rtp/listening always false on forge (R2–R3 IVR sidecar; R4 lab E2E…Capability: mode=stub|ready from TEMSOR_RTP_*. No live RTP on forge; idle $0. GET /v1/pbx/whisper/status. Reports MediaBridge config presence (TEMSOR_RTP_PATH). mode=ready means path env set — not that Asterisk RTP is flowing. live_rtp/listening always false on forge (R2–R3 IVR sidecar; R4 lab E2E…
No input schema was published for this tool.
pbx_whisper_suggestDemo: ≤3 context cards; prefers in-call partial index when present — mock latency_ms; idle $0. Lab: TEMSOR_RTP_LAB=1 → lab_latency_ms.
POST /v1/pbx/whisper/suggest {call_id, partial_text}. Returns open promises and facts as whisper cards. Mock latency_ms field under 400ms (compat stub). Optional l…Demo: ≤3 context cards; prefers in-call partial index when present — mock latency_ms; idle $0. Lab: TEMSOR_RTP_LAB=1 → lab_latency_ms. POST /v1/pbx/whisper/suggest {call_id, partial_text}. Returns open promises and facts as whisper cards. Mock latency_ms field under 400ms (compat stub). Optional l…
| Parameter | Type | Description |
|---|---|---|
| call_id* | string | Active call id for agent UI context. |
| partial_text | string | Partial transcript / utterance text (no live speech recognition). |
phone_validateValidates and normalises a phone number to E.164, classifies the line type, and resolves the province for Turkish landlines.
For signup and checkout flows that need to store one canonical form and reject typos early. Turkish numbers are handled in depth: landline area codes resolve to a province,…Validates and normalises a phone number to E.164, classifies the line type, and resolves the province for Turkish landlines. For signup and checkout flows that need to store one canonical form and reject typos early. Turkish numbers are handled in depth: landline area codes resolve to a province,…
| Parameter | Type | Description |
|---|---|---|
| phone* | string | Phone number in any common format. |
| defaultCountry | string | ISO 3166-1 alpha-2 country to assume when the number has no international prefix. Defaults to TR. |
sanctions_screenScreens a name against six official sanctions lists — US OFAC, UN, EU, UK OFSI, Switzerland SECO and Canada — with transliteration-aware fuzzy matching.
Six official lists are reduced to one schema, so a name is checked everywhere at once instead of six integrations. Cyrillic and Arabic names are…Screens a name against six official sanctions lists — US OFAC, UN, EU, UK OFSI, Switzerland SECO and Canada — with transliteration-aware fuzzy matching. Six official lists are reduced to one schema, so a name is checked everywhere at once instead of six integrations. Cyrillic and Arabic names are…
| Parameter | Type | Description |
|---|---|---|
| name* | string | Name to screen — person or organisation. |
| type | string | Restrict to one subject type. Narrowing this removes most false positives. |
| birthYear | integer | Known birth year. The single strongest false-positive filter available. |
| country | string | Known country or nationality. |
| sources | array | Defaults to all lists. |
| minScore | number | Score floor. 0.92+ reads as a match, 0.80+ as possible. |
| limit | integer | — |
| asOf | string | Screen against the lists as they stood on this date. Limited by when our archive begins. |
series_historyReturns the accumulated history of public data series with change statistics and a source receipt for every point.
Currently ingesting the Turkish Central Bank daily FX bulletin (`tcmb.usd`, `tcmb.eur`, …), normalised to one unit so JPY-style 100-unit quotes stop biting. Leave `seriesId` empty to…Returns the accumulated history of public data series with change statistics and a source receipt for every point. Currently ingesting the Turkish Central Bank daily FX bulletin (`tcmb.usd`, `tcmb.eur`, …), normalised to one unit so JPY-style 100-unit quotes stop biting. Leave `seriesId` empty to…
| Parameter | Type | Description |
|---|---|---|
| seriesId | string | Series id, e.g. `tcmb.usd`. Omit to list the catalogue. |
| from | string | Start date (inclusive). |
| to | string | End date (inclusive). |
| limit | integer | — |
| fillGaps | boolean | — |
| includeEvidence | boolean | Include source URL and content excerpt for each point. |
shipping_identifyIdentifies which carrier a tracking number belongs to, validates it where a checksum exists, and returns the canonical tracking link.
Built for order systems that receive numbers from many carriers and have to route the customer to the right tracking page. Turkish carriers mostly use plain numeric…Identifies which carrier a tracking number belongs to, validates it where a checksum exists, and returns the canonical tracking link. Built for order systems that receive numbers from many carriers and have to route the customer to the right tracking page. Turkish carriers mostly use plain numeric…
| Parameter | Type | Description |
|---|---|---|
| trackingNumber* | string | Tracking number, with or without spaces and dashes. |
| country | string | Destination or origin country hint, e.g. "TR". Narrows the candidates. |
tin_validateValidates a tax identifier for 25+ countries: checksum where the algorithm is public, format-only where it is not. Country is required.
Onboarding forms collect a tax number from whatever country the customer is in and then store garbage because they only checked the length. This applies the publi…Validates a tax identifier for 25+ countries: checksum where the algorithm is public, format-only where it is not. Country is required. Onboarding forms collect a tax number from whatever country the customer is in and then store garbage because they only checked the length. This applies the publi…
| Parameter | Type | Description |
|---|---|---|
| tin* | string | Tax identifier as written, with or without spaces and punctuation. |
| country* | string | ISO 3166-1 alpha-2 country that issued the identifier. Required. |
tr_address_parseSplits a free-form Turkish address into neighbourhood, street, building, floor, flat, district, province and postcode.
Handles the abbreviation chaos (Mah./Mh., Cd./Cad., Sk./Sok., No:12/5, K:3 D:7), cross-checks the province against the postcode, repairs misspelled district names against a dictio…Splits a free-form Turkish address into neighbourhood, street, building, floor, flat, district, province and postcode. Handles the abbreviation chaos (Mah./Mh., Cd./Cad., Sk./Sok., No:12/5, K:3 D:7), cross-checks the province against the postcode, repairs misspelled district names against a dictio…
| Parameter | Type | Description |
|---|---|---|
| address* | string | Free-text address. |
| defaultProvince | string | Province to assume when the address has none. |
tr_business_daysAdds business days or counts them between two dates, accounting for Turkish public and religious holidays including half-day eves.
Ramadan and Sacrifice feasts follow the Hijri calendar and cannot be derived reliably by formula, so announced dates are read from a table; years without an official a…Adds business days or counts them between two dates, accounting for Turkish public and religious holidays including half-day eves. Ramadan and Sacrifice feasts follow the Hijri calendar and cannot be derived reliably by formula, so announced dates are read from a table; years without an official a…
| Parameter | Type | Description |
|---|---|---|
| start* | string | Start date (YYYY-MM-DD). |
| addDays | integer | Add/subtract this many business days (not calendar days). |
| end | string | If set, count business days between start and this date. |
| countHalfDaysAsWork | boolean | Count Arife half-days as working days? |
tr_fuel_pricesPetrol, diesel and heating-oil pump prices for all 81 Turkish provinces, including the price in force on any past date.
The distributor publishes today's pump price and a per-district history query, one district and one range at a time. This endpoint answers the question that actually costs money,…Petrol, diesel and heating-oil pump prices for all 81 Turkish provinces, including the price in force on any past date. The distributor publishes today's pump price and a per-district history query, one district and one range at a time. This endpoint answers the question that actually costs money,…
| Parameter | Type | Description |
|---|---|---|
| province | — | Province name or plate code — "Ankara", "istanbul" or 34. Leave empty to list covered provinces. |
| product | string | Fuel product. Omitted → every product available for that province. |
| asOf | string | Price in force on this date (YYYY-MM-DD). Omitted → latest known price. |
| from | string | With `to`: return the price changes in this window. |
| to | string | — |
| includeDistricts | boolean | Adds districts whose pump price differs from the province reference price. |
tr_iban_olusturBuilds a Turkish IBAN from a 5-digit bank code and account number, computing ISO 7064 check digits.
A Turkish IBAN is TR + 2 check digits + 5-digit bank code + 1 reserved digit + 16-character account. This pads the account on the left, defaults the reserved digit to 0, computes the mod-97 check di…Builds a Turkish IBAN from a 5-digit bank code and account number, computing ISO 7064 check digits. A Turkish IBAN is TR + 2 check digits + 5-digit bank code + 1 reserved digit + 16-character account. This pads the account on the left, defaults the reserved digit to 0, computes the mod-97 check di…
| Parameter | Type | Description |
|---|---|---|
| bankCode* | string | 5-digit Turkish national bank / EFT code (e.g. 00062). |
| accountNumber* | string | Account number, up to 16 alphanumeric characters (padded left with zeros). |
| reserved | string | Reserved BBAN digit after the bank code. Defaults to 0. |
tr_invoice_buildBuilds a UBL-TR e-Invoice or e-Archive XML document from plain JSON, computing every total and validating the parties.
Selling into Türkiye means issuing a UBL-TR document whose element order is fixed by schema and whose totals must agree to the kuruş, or the integrator rejects it. This endpoint t…Builds a UBL-TR e-Invoice or e-Archive XML document from plain JSON, computing every total and validating the parties. Selling into Türkiye means issuing a UBL-TR document whose element order is fixed by schema and whose totals must agree to the kuruş, or the integrator rejects it. This endpoint t…
| Parameter | Type | Description |
|---|---|---|
| profile | string | TEMELFATURA: no formal objection flow. TICARIFATURA: buyer may accept/reject. EARSIVFATURA: buyer is not an e-Invoice user. |
| invoiceTypeCode | string | — |
| id | string | Invoice number. Omit and supply `series` to have it built from the series and sequence. |
| series | string | Three-letter series code, used with `sequence`. |
| sequence | integer | Sequence number within the series and year. |
| uuid | string | Document UUID (ETTN). Generated when omitted. |
| issueDate* | string | — |
| issueTime | string | — |
| currency | string | ISO 4217. Anything other than TRY requires `exchangeRate`. |
| exchangeRate | number | Units of TRY per one unit of `currency`. |
| supplier* | object | — |
| customer* | object | — |
| lines* | array | — |
| notes | array | — |
| amountInWords | boolean | Adds the payable amount written out in Turkish words as a note, the way invoices require. |
| despatchDocumentId | string | Delivery note number, if the goods shipped separately. |
| orderReferenceId | string | — |
tr_invoice_parseTurns a UBL-TR e-Invoice or e-Archive XML document into clean JSON: parties, line items, taxes and totals.
Works regardless of the namespace prefix the sender used (cbc:, cac:, ns0:), normalises single-line documents into arrays, and reports amount mismatches in `warnings` instead of returning qui…Turns a UBL-TR e-Invoice or e-Archive XML document into clean JSON: parties, line items, taxes and totals. Works regardless of the namespace prefix the sender used (cbc:, cac:, ns0:), normalises single-line documents into arrays, and reports amount mismatches in `warnings` instead of returning qui…
| Parameter | Type | Description |
|---|---|---|
| xml* | string | UBL-TR e-Invoice / e-Archive (e-Arsiv) XML body. |
tr_laborComputes Turkish severance (kıdem), notice (ihbar) and annual-leave entitlement from service dates and the gross wage, using the official ceiling and minimum-wage tables for the given day.
Payroll and HR tools in Turkey chase a parameter that changes every January and July: the severance ceiling,…Computes Turkish severance (kıdem), notice (ihbar) and annual-leave entitlement from service dates and the gross wage, using the official ceiling and minimum-wage tables for the given day. Payroll and HR tools in Turkey chase a parameter that changes every January and July: the severance ceiling,…
| Parameter | Type | Description |
|---|---|---|
| startDate* | string | Employment start date (YYYY-MM-DD). |
| endDate* | string | Termination date (YYYY-MM-DD). Inclusive of this day. |
| monthlyGross* | number | Gross monthly wage the severance is based on (giydirilmiş brüt). |
| asOf | string | Rate table date. Defaults to endDate. |
| age | integer | Employee age at termination — affects annual-leave entitlement (under 18 or 50+). |
| unusedLeaveDays | number | Unused annual-leave days, if you also want the unused-leave gross. |
tr_money_to_wordsWrites a monetary amount out in Turkish words, the way invoices, cheques and promissory notes require.
Applies the rules that trip up generic libraries: Turkish says "bin", never "bir bin"; the kuruş part is read separately; and both "1.234,56" and "1,234.56" are accepted and told apart automatica…Writes a monetary amount out in Turkish words, the way invoices, cheques and promissory notes require. Applies the rules that trip up generic libraries: Turkish says "bin", never "bir bin"; the kuruş part is read separately; and both "1.234,56" and "1,234.56" are accepted and told apart automatica…
| Parameter | Type | Description |
|---|---|---|
| amount* | — | Amount. Accepts both "1.234,56" and 1234.56. |
| currency | string | — |
| style | string | Output letter case. |
| wrapHash | boolean | — |
tr_posta_koduValidates a 5-digit Turkish postal code and resolves the province from the first two digits (plate map).
PTT postal codes are five digits; the leading pair matches the province plate code for the 81 provinces. This endpoint checks the shape, maps 01–81 to the province name, and returns null with c…Validates a 5-digit Turkish postal code and resolves the province from the first two digits (plate map). PTT postal codes are five digits; the leading pair matches the province plate code for the 81 provinces. This endpoint checks the shape, maps 01–81 to the province name, and returns null with c…
| Parameter | Type | Description |
|---|---|---|
| postalCode* | string | Turkish 5-digit postal code, with or without spaces. |
tr_qr_odemeBuilds a person-to-person TR Karekod (FAST) payment payload from IBAN, name and optional TRY amount. Text only — no PNG.
Turkish instant payments (FAST) can start from a TR Karekod that encodes the payee IBAN and name in EMV-style TLV. This builds the person-to-person organisation (payload format…Builds a person-to-person TR Karekod (FAST) payment payload from IBAN, name and optional TRY amount. Text only — no PNG. Turkish instant payments (FAST) can start from a TR Karekod that encodes the payee IBAN and name in EMV-style TLV. This builds the person-to-person organisation (payload format…
| Parameter | Type | Description |
|---|---|---|
| iban* | string | Beneficiary Turkish IBAN (with or without spaces). |
| name* | string | Payee name shown to the payer (2–26 chars after trim). |
| amount | number | TRY amount; omitted → static QR (payer enters amount). |
| explanation | string | Optional remittance note (application free field 10). |
| currency | string | Must be TRY if provided. |
| generatorCode | string | QR generator / EFT code (4 digits). Defaults to last 4 of the IBAN bank code. |
tr_tebligat_clockComputes the deemed-received date and the HMK deadline (with holiday shifting) for a Turkish notification, from the date the underlying event actually happened.
Turkish notification law (7201) ties the deadline clock to an event that is not "the date on the letter" — for electronic notification th…Computes the deemed-received date and the HMK deadline (with holiday shifting) for a Turkish notification, from the date the underlying event actually happened. Turkish notification law (7201) ties the deadline clock to an event that is not "the date on the letter" — for electronic notification th…
| Parameter | Type | Description |
|---|---|---|
| type* | string | Notification method. Determines which event `basisDate` refers to and whether the deemed-received date is same-day or shifted. |
| lawFamily* | string | Body of procedural law the period is computed under. Only "hmk" (Code of Civil Procedure) is supported so far. |
| basisDate* | string | The date `basisLabel` describes for this type — for "electronic" this is the date UETS reports the message as reached, not sent or read. |
| periodDays* | integer | Length of the statutory or judicial period, in days, counted from `periodStart`. |
| periodType | string | Free-text label for the period (e.g. "itiraz", "temyiz"), echoed back only — not mapped to a day count. |
| ilanenDeemedDays | integer | Only valid with type "ilanen": number of days the competent authority set for the notice to become deemed received (TK 31), 7-15, default 7. Not the number of… |
| hasAttorney | boolean | Whether the addressee has a registered attorney of record. When true and `type` is not "vekil", a TK 11 warning is added noting that service should have gone t… |
| subjectToJudicialRecess | boolean | Whether this matter is subject to the judicial recess (adli tatil, HMK 104) instead of being exempt. Only affects the result when `lawFamily` is "hmk" and the… |
tr_validateValidates Turkish national ID, tax number, IBAN, licence plate, IMEI, barcodes, KEP, MERSİS, postal code and ISBN from one endpoint, with type auto-detection.
Goes past a yes/no: resolves the bank behind an IBAN, the province behind a licence plate and the GS1 country prefix behind a barcode. Pure…Validates Turkish national ID, tax number, IBAN, licence plate, IMEI, barcodes, KEP, MERSİS, postal code and ISBN from one endpoint, with type auto-detection. Goes past a yes/no: resolves the bank behind an IBAN, the province behind a licence plate and the GS1 country prefix behind a barcode. Pure…
| Parameter | Type | Description |
|---|---|---|
| value* | string | Value to validate. |
| type | string | Omitted → inferred from the format. |
tr_vatSplits a Turkish amount into net, VAT and (optionally) withholding: who pays the seller, who remits the withheld VAT.
For invoice lines and checkout totals that have to show KDV dahil / hariç and, when the parties are in a withholding (tevkifat) situation, the split between what the buyer pays the…Splits a Turkish amount into net, VAT and (optionally) withholding: who pays the seller, who remits the withheld VAT. For invoice lines and checkout totals that have to show KDV dahil / hariç and, when the parties are in a withholding (tevkifat) situation, the split between what the buyer pays the…
| Parameter | Type | Description |
|---|---|---|
| amount* | number | The amount to tax. See amountIncludesVat. |
| amountIncludesVat | boolean | If true, `amount` is the gross (KDV dahil); if false, it is the net/matrah. |
| rate | — | VAT rate in percent. 0, 1, 10 or 20. |
| withholding | string | Withholding fraction such as "5/10", or a code from the list (reklam, tasima, hurda, isgucu…). |
uuid_validateValidates UUID structure and reports version (1–5, 7) and RFC 4122 variant bits. Deterministic.
Accepts dashed or 32-hex compact form. Reports the version nibble, variant (NCS / RFC 4122 / Microsoft / future), and whether the layout matches a known UUID version used in practice (v1–v5 and Unix-epo…Validates UUID structure and reports version (1–5, 7) and RFC 4122 variant bits. Deterministic. Accepts dashed or 32-hex compact form. Reports the version nibble, variant (NCS / RFC 4122 / Microsoft / future), and whether the layout matches a known UUID version used in practice (v1–v5 and Unix-epo…
| Parameter | Type | Description |
|---|---|---|
| uuid* | string | UUID string, with or without hyphens. |
vin_validateValidates a 17-character VIN: forbidden letters, ISO 3779 check digit, WMI region/manufacturer, model year and plant.
Typos in a VIN are usually a forbidden letter (I, O, Q — they look like 1 and 0) or a shifted character. This rejects those, splits WMI/VDS/VIS, and names the manufacturer when the…Validates a 17-character VIN: forbidden letters, ISO 3779 check digit, WMI region/manufacturer, model year and plant. Typos in a VIN are usually a forbidden letter (I, O, Q — they look like 1 and 0) or a shifted character. This rejects those, splits WMI/VDS/VIS, and names the manufacturer when the…
| Parameter | Type | Description |
|---|---|---|
| vin* | string | Vehicle identification number, 17 characters. |
72 of 72 tools published a description.
Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.
Turkey & EU business data: validation, sanctions screening, parsing, FX and fuel price history
+ 32 more observed on this entry.
Linked names open Forge’s index of every entry observed exposing that tool. Browse all indexed tools.
This entry publishes no npm package, so Forge has no dependency tree for it. That is a gap in coverage — not a statement that it has no dependencies.