com.temsor/api

MCPcommunitylive
v1.0.0com.temsorUnknownUpdated 1mo ago

Turkey & EU business data: validation, sanctions screening, parsing, FX and fuel price history

Endpoint healthlive
checked 1 day ago · 917ms
100% of the last 4 checks reached this endpoint
Works in
ClaudeCursorCopilotChatGPTGemini

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.

Automatically indexed from public sources. Not yet verified by the developer on Forge.Claim this listing →
1mo agoLast update
Package
Authorcom.temsor
LicenseUnknown
Version1.0.0
Sourcemcp-registry
Trust Status
D
30/100Risk
Listed in Forge index+10/10
Publisher identity verified+0/30
Publisher: this listing has no repository on file, so `forge publish` cannot verify ownership automatically. Use "Claim this listing" above — Forge reviews these by hand.
Domain verification+0/10
Not currently available for this listing type — the domain-verification check only runs for npm-backed packages today, so this row cannot be earned here yet regardless of what's hosted at the domain.
Prompt-injection scan · findings+0/30
Publisher: remove instructions in the source aimed at AI clients rather than human readers
Obfuscation / exfil scan · clean+20/20
StatusCommunity-indexed
PublisherUnverified
SignatureUnsigned
Domain
Provenance
DependenciesNot audited
Tool surface72 tools · none privileged
Security scan⚠ Warnings (2)vlive · 1d agoHow well does this scan work?
PROMPTtool:ai_messages#systemReferences the system prompt
PROMPTtool:pbx_registerExfiltration-shaped instruction
PROMPTtool:pbx_webhooksExfiltration-shaped instruction
EvalsNone
IndexedJul 27, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

72 tools · none privileged · 2 flagged for injection
Observed live from the vendor's endpoint1d ago

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 · 917ms
ai_messagesSingle-balance access to upstream LLMs; billed per token, no subscription.

Single-balance access to upstream LLMs; billed per token, no subscription.

NOTEIn parameter system: References the system promptOptional system prompt.
ParameterTypeDescription
model*stringUpstream model identifier, e.g. xai/grok-4.6.
messages*arrayConversation turns, in order.
systemstringOptional system prompt.
max_tokens*integerMaximum tokens to generate.
streambooleanNot 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…

ParameterTypeDescription
bic*stringSWIFT/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…

ParameterTypeDescription
code*stringISO 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…

ParameterTypeDescription
reference*stringISO 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…

ParameterTypeDescription
code*stringGTIN-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…

ParameterTypeDescription
email*stringE-mail address to check.
rejectFreeProvidersboolean
rejectRoleAccountsboolean
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…

ParameterTypeDescription
country*stringISO 3166-1 alpha-2 country (EL accepted as Greece).
asOfstringISO 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…

ParameterTypeDescription
vatNumber*stringVAT number with or without the country prefix, e.g. "DE811907980".
countryCodestringCountry 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…

ParameterTypeDescription
iban*stringIBAN, with or without spaces.
expectCountrystringExpected 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…

ParameterTypeDescription
mrz*stringICAO 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…

ParameterTypeDescription
isbn*stringISBN-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…

ParameterTypeDescription
isin*stringISIN, 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)…

ParameterTypeDescription
lei*stringLegal 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…

ParameterTypeDescription
lei*stringLegal 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…

ParameterTypeDescription
viewstring`search`: search tool name/description · `changes`: change feed (the actual product) · `server`: per-day measurement history for one server · `tool`: definitio…
qstringSearch term (only `search`), e.g. `invoice`, `calendar`, `sql`.
serverstringRegistry server name, e.g. `com.temsor/api`. Required for `server`/`tool` views.
toolstringTool name (only `tool` view).
minRiskintegerOnly tools whose review score is at or above this (only `search`).
severitystringOnly `changes`.
typestringEvent type filter (only `changes`), e.g. `tool_description_changed`.
daysintegerWindow in days (`changes` and `server`).
limitinteger
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…

ParameterTypeDescription
viewstring`catalog`: tracked models · `expiring`: retirement announced · `delisted`: dropped from the catalogue · `events`: lifecycle events · `stats`: archive totals.
providerstringProvider prefix, e.g. `anthropic`, `openai`, `google`.
slugstringFull model id, e.g. `anthropic/claude-opus-5` (only `events`).
qstringSearch in model id/name (only `catalog`).
typestringEvent type (only `events`).
severitystring
withinDaysinteger`expiring`: retire within this many days.
daysinteger`events`: window in days.
includeDelistedboolean`catalog`: include delisted models.
limitinteger
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…

ParameterTypeDescription
viewstring`aliases`: alias → the real model behind it · `events`: drift events · `probes`: probe status from the last run.
providerstringFilter by provider (gemini, groq, cerebras, mistral).
severitystringOnly for the `events` view.
daysintegerHistory window in days (only `events`).
limitinteger
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…

ParameterTypeDescription
name*stringBeneficiary name (SCT Name).
iban*stringBeneficiary IBAN, with or without spaces.
amountEur*numberTransfer amount in EUR (positive).
remittancestringUnstructured remittance (e.g. invoice number).
bicstringBeneficiary BIC; optional in V2 (002).
currencystringMust 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.

ParameterTypeDescription
call_id*string
pbx_idstring
uristringCustomer-side media URI (preferred).
bytes_b64stringOptional small demo chunk; production prefers URI.
t_msinteger
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…

ParameterTypeDescription
call_id*stringCall id to attach the multi-agent bridge intent to.
agents*arrayVirtual RTP agents to bridge (intent only — no live Asterisk).
pbx_idstringOptional 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.

ParameterTypeDescription
limitintegerMax 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.

ParameterTypeDescription
call_id*stringCall 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.

ParameterTypeDescription
call_id*stringCall id whose transfer graph to return.
stuck_atstringOptional 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…

ParameterTypeDescription
domainstringDomain 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…

ParameterTypeDescription
term*stringCanonical term (e.g. AC, tariff). Plain Turkish preferred.
alias*stringSynonym / alias to add (e.g. cooling, line package).
domainstringDomain: otel | santral_firmasi | sigorta | finans | enerji | otomotiv (legacy msp accepted).
kindstringFact kind; inferred from seed term when omitted.
boostnumberSearch boost weight (default 2).
scopestringpbx = scoped to x-temsor-pbx-key; global = demo-wide. Default: pbx if registered key, else global.
hint_trstring
hint_enstring
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,…

ParameterTypeDescription
pbx_idstringPBX id that emitted the ARI batch.
events*arrayARI / 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…

ParameterTypeDescription
call_idstringFilter by call id (e.g. call_msp_001).
kindstringFact kind key (imei, oda, tarife, ...) or all.
domainstringDomain slice: otel | santral_firmasi | sigorta | finans | enerji (legacy msp) | all.
qstringFree-text filter over kind + value + call_id.
limitintegerMax 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.

ParameterTypeDescription
id*stringFact 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…

ParameterTypeDescription
call_id*stringLive call id to upsert partial index for.
textstringPartial utterance / snippet (customer STT or demo). Empty = metadata-only.
speaker
t_ms
is_finalbooleanFinalized utterance span (vs interim).
livebooleanDefault true while call is live.
end_callbooleanMark live=false; idle $0 for this call.
promotebooleanPromote heuristic hints into durable Promise/Fact docs.
pbx_idstring
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.

ParameterTypeDescription
call_id*stringCall 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.

ParameterTypeDescription
transcript*stringTR utterance / transcript text to scan for promises.
call_idstring
pbx_idstring
whostring
extstring
persist_promisesbooleanWhen 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…

ParameterTypeDescription
pbx_idstringOptional PBX scope; falls back to x-temsor-pbx-key scope.
older_than_hoursnumberScan 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…

ParameterTypeDescription
call_id*stringLive or indexed call id to act on.
action*stringwhisper | hold | transfer | pci_stop | snoop
paramsobjectAction params (to_ext required for transfer).
pbx_idstring
stasis_webhook_urlstringOptional customer Stasis webhook — forge POSTs the act intent there.
skip_forwardbooleanRecord 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…

ParameterTypeDescription
call_idstringOptional filter — only acts for this call_id.
limitintegerMax 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…

ParameterTypeDescription
call_idstringFilter persons seen on this call id.
kindstringcaller = durable Person; extension = derived from call-graph hops; all = both.
qstringFree-text over names, phones, org, extensions, facts.
include_extensionsbooleanInclude derived extension identities (default true).
limitintegerMax 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.

ParameterTypeDescription
id*stringPerson 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.

ParameterTypeDescription
statusstringPromise 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…

ParameterTypeDescription
promise_id*stringOpen (or any) promise id — closed loop reads call graph then records orchestra intent.
actionstringDefault whisper. transfer uses graph stuck_at / promise.ext.
agent_extstring
skip_forwardbooleanDefault true — record intent only.
stasis_webhook_urlstring
pbx_idstring
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…

ParameterTypeDescription
promise_id*stringPromise id (prm_*). Sales demo marks open promises kept|broken.
status*stringClose outcome: kept (honoured) or broken (not kept).
notestringOptional 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.

ParameterTypeDescription
statusstringPromise status filter; closed = kept|broken. Sales demo uses open.
formatstringExport 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.

ParameterTypeDescription
promise_id*stringPromise 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…

ParameterTypeDescription
target_typestringIndex document type. Optional when `phone` is set.
target_idstringDocument id (prm_*, per_*, call_*, fact_*).
phonestringCaller phone — finds Person phones (+ linked derived index).
reasonstringKVKK (personal-data) / forget reason.
modestringanonymize (default) scrubs fields; delete removes docs.
whostringActor 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…

ParameterTypeDescription
limitintegerMax 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.

INJECTIONExfiltration-shaped instruction once; stored hashed at rest. Send x-temsor-pbx-key to scope GET /v1/pbx/promises…
ParameterTypeDescription
pbx_idstringPilot PBX id; auto-minted if omitted.
labelstringHuman label, e.g. hotel or PBX/IT provider site.
ari_webhook_secretstringARI webhook signing secret (stored as hint only).
namestringPilot contact name (waitlist / register).
emailstringPilot contact email.
webhook_urlstringOptional outbound webhook URL — Temsor POSTs promise/fact/orchestra/redact events.
webhook_secretstringOptional HMAC secret for outbound webhook signatures (x-temsor-signature).
webhook_eventsEvent 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.

ParameterTypeDescription
qstringFull-text query over promises, facts, and call summaries.
statusstring
extstring
competitorstring
date_fromstringISO date/time lower bound (promise.when_iso / call.started_at).
date_tostringISO date/time upper bound.
stuck_afterstringFilter: 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…

ParameterTypeDescription
scenariostringivr_menu = DTMF/menu stress; promise_heavy = dense commitment lexicon.
countintegerFake call count, capped 10..500.
pbx_idstringOptional 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.…

INJECTIONExfiltration-shaped instructiondact events (HMAC if secret). POST write ≤30/hour/key → 429. POST /v1/pbx/webhooks…
ParameterTypeDescription
urlstringOutbound webhook URL (http/https). Present → register; omit on GET → list.
secretstringOptional HMAC-SHA256 secret → x-temsor-signature: sha256=<hex>.
eventsEvents: promise.opened|closed, fact.extracted, orchestra.act, redact, or *.
pingbooleanIf true with url → register then ping; if true without url → ping existing.
webhook_idstringFor ping: target webhook id.
limitintegerList 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.

ParameterTypeDescription
webhook_idstringFilter by webhook id.
limitintegerMax 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…

ParameterTypeDescription
call_id*stringActive call id for agent UI context.
partial_textstringPartial 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,…

ParameterTypeDescription
phone*stringPhone number in any common format.
defaultCountrystringISO 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…

ParameterTypeDescription
name*stringName to screen — person or organisation.
typestringRestrict to one subject type. Narrowing this removes most false positives.
birthYearintegerKnown birth year. The single strongest false-positive filter available.
countrystringKnown country or nationality.
sourcesarrayDefaults to all lists.
minScorenumberScore floor. 0.92+ reads as a match, 0.80+ as possible.
limitinteger
asOfstringScreen 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…

ParameterTypeDescription
seriesIdstringSeries id, e.g. `tcmb.usd`. Omit to list the catalogue.
fromstringStart date (inclusive).
tostringEnd date (inclusive).
limitinteger
fillGapsboolean
includeEvidencebooleanInclude 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…

ParameterTypeDescription
trackingNumber*stringTracking number, with or without spaces and dashes.
countrystringDestination 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…

ParameterTypeDescription
tin*stringTax identifier as written, with or without spaces and punctuation.
country*stringISO 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…

ParameterTypeDescription
address*stringFree-text address.
defaultProvincestringProvince 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…

ParameterTypeDescription
start*stringStart date (YYYY-MM-DD).
addDaysintegerAdd/subtract this many business days (not calendar days).
endstringIf set, count business days between start and this date.
countHalfDaysAsWorkbooleanCount 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,…

ParameterTypeDescription
provinceProvince name or plate code — "Ankara", "istanbul" or 34. Leave empty to list covered provinces.
productstringFuel product. Omitted → every product available for that province.
asOfstringPrice in force on this date (YYYY-MM-DD). Omitted → latest known price.
fromstringWith `to`: return the price changes in this window.
tostring
includeDistrictsbooleanAdds 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…

ParameterTypeDescription
bankCode*string5-digit Turkish national bank / EFT code (e.g. 00062).
accountNumber*stringAccount number, up to 16 alphanumeric characters (padded left with zeros).
reservedstringReserved 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…

ParameterTypeDescription
profilestringTEMELFATURA: no formal objection flow. TICARIFATURA: buyer may accept/reject. EARSIVFATURA: buyer is not an e-Invoice user.
invoiceTypeCodestring
idstringInvoice number. Omit and supply `series` to have it built from the series and sequence.
seriesstringThree-letter series code, used with `sequence`.
sequenceintegerSequence number within the series and year.
uuidstringDocument UUID (ETTN). Generated when omitted.
issueDate*string
issueTimestring
currencystringISO 4217. Anything other than TRY requires `exchangeRate`.
exchangeRatenumberUnits of TRY per one unit of `currency`.
supplier*object
customer*object
lines*array
notesarray
amountInWordsbooleanAdds the payable amount written out in Turkish words as a note, the way invoices require.
despatchDocumentIdstringDelivery note number, if the goods shipped separately.
orderReferenceIdstring
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…

ParameterTypeDescription
xml*stringUBL-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,…

ParameterTypeDescription
startDate*stringEmployment start date (YYYY-MM-DD).
endDate*stringTermination date (YYYY-MM-DD). Inclusive of this day.
monthlyGross*numberGross monthly wage the severance is based on (giydirilmiş brüt).
asOfstringRate table date. Defaults to endDate.
ageintegerEmployee age at termination — affects annual-leave entitlement (under 18 or 50+).
unusedLeaveDaysnumberUnused 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…

ParameterTypeDescription
amount*Amount. Accepts both "1.234,56" and 1234.56.
currencystring
stylestringOutput letter case.
wrapHashboolean
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…

ParameterTypeDescription
postalCode*stringTurkish 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…

ParameterTypeDescription
iban*stringBeneficiary Turkish IBAN (with or without spaces).
name*stringPayee name shown to the payer (2–26 chars after trim).
amountnumberTRY amount; omitted → static QR (payer enters amount).
explanationstringOptional remittance note (application free field 10).
currencystringMust be TRY if provided.
generatorCodestringQR 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…

ParameterTypeDescription
type*stringNotification method. Determines which event `basisDate` refers to and whether the deemed-received date is same-day or shifted.
lawFamily*stringBody of procedural law the period is computed under. Only "hmk" (Code of Civil Procedure) is supported so far.
basisDate*stringThe date `basisLabel` describes for this type — for "electronic" this is the date UETS reports the message as reached, not sent or read.
periodDays*integerLength of the statutory or judicial period, in days, counted from `periodStart`.
periodTypestringFree-text label for the period (e.g. "itiraz", "temyiz"), echoed back only — not mapped to a day count.
ilanenDeemedDaysintegerOnly 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…
hasAttorneybooleanWhether 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…
subjectToJudicialRecessbooleanWhether 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…

ParameterTypeDescription
value*stringValue to validate.
typestringOmitted → 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…

ParameterTypeDescription
amount*numberThe amount to tax. See amountIncludesVat.
amountIncludesVatbooleanIf true, `amount` is the gross (KDV dahil); if false, it is the net/matrah.
rateVAT rate in percent. 0, 1, 10 or 20.
withholdingstringWithholding 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…

ParameterTypeDescription
uuid*stringUUID 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…

ParameterTypeDescription
vin*stringVehicle 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.

About

Turkey & EU business data: validation, sanctions screening, parsing, FX and fuel price history

Keywords
mcp
Alternatives
Comparing tool surfaces…

No dependency coverage

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.