Temsor API — Turkey & EU business data is a remote MCP server that gives an AI agent 68 tools, among them bic_validate, container_validate, creditor_ref. It answers at https://api.temsor.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 10 September 2026; the last check, on 19 October 2026, succeeded.
Turkey & EU business data: validation, sanctions screening, parsing, FX and fuel price history
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
bic_validate | 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 co Inputs: bic |
container_validate | 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 cu Inputs: code |
creditor_ref | 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 Inputs: reference |
ean_gtin | 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 g Inputs: code |
email_verify | 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 thoroug Inputs: email, rejectFreeProviders, rejectRoleAccounts |
eu_vat_rates | 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 Inputs: country, asOf |
eu_vat_validate | 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 b Inputs: vatNumber, countryCode |
iban_validate | 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 — Inputs: iban, expectCountry |
id_mrz | 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 Inputs: mrz |
isbn_validate | 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- Inputs: isbn |
isin_validate | 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 t Inputs: isin |
lei_lookup | 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 dig Inputs: lei |
lei_validate | 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 IBA Inputs: lei |
mcp_index | 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 Inputs: view, q, server, tool, minRisk, severity |
model_archive | 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. Inputs: view, provider, slug, q, type, severity |
model_drift | 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: Inputs: view, provider, severity, days, limit |
pay_epc_qr | 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): BC Inputs: name, iban, amountEur, remittance, bic, currency |
pbx_audio_chunk | 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. Inputs: call_id, pbx_id, uri, bytes_b64, t_ms |
pbx_bridge_multi_agent | 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 Inputs: call_id, agents, pbx_id |
pbx_calls | 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. Inputs: limit |
pbx_calls_get | 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. Inputs: call_id |
pbx_calls_graph | 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 Inputs: call_id, stuck_at |
pbx_dictionary | Domain dictionary v1 (hotel: room type, AC, check-out; PBX providers: tariff, IMEI, refund) — boosts search + Fact extract; includes pilot aliases. GET /v1/pbx/dictionary?domain=otel|santral_firmasi|msp|all (msp = legacy alias for santral_f Inputs: domain |
pbx_dictionary_add | Add a synonym/alias to the domain dictionary (pbx-scoped or global demo) — compounds search boost + Fact extract. ≤60/hour/key → 429. Idle $0. POST /v1/pbx/dictionary/add {term, alias, domain:otel|santral_firmasi, scope?:pbx|global}. Persis Inputs: term, alias, domain, kind, boost, scope |
pbx_events | 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- Inputs: pbx_id, events |
pbx_facts | 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; pe Inputs: call_id, kind, domain, q, limit |
pbx_facts_get | 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. Inputs: id |
pbx_index_partial | 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 Inputs: call_id, text, speaker, t_ms, is_final, live |
pbx_index_partial_get | 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. Asterisk on customer; no DID sales. Inputs: call_id |
pbx_ingest_transcript | 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 Inputs: transcript, call_id, pbx_id, who, ext, persist_promises |
pbx_night_twin_last | 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. |
pbx_night_twin_run | 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 ho Inputs: pbx_id, older_than_hours |
pbx_orchestra_act | Query→act: whisper / hold / transfer / pci_stop / snoop. Records intent; optional customer Stasis webhook. ≤120/hour/key → 429. No DID sales. POST /v1/pbx/orchestra/act {call_id, action, params?, stasis_webhook_url?}. Turns search/suggest h Inputs: call_id, action, params, pbx_id, stasis_webhook_url, skip_forward |
pbx_persons | 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 (ex Inputs: call_id, kind, q, include_extensions, limit |
pbx_persons_get | 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. Inputs: id |
pbx_promises | 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. Inputs: status |
pbx_promises_close | 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. Inputs: promise_id, status, note |
pbx_promises_export | 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 w Inputs: status, format |
pbx_promises_reopen | 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 wh Inputs: promise_id |
pbx_redact | One-command KVKK forget: clear derived index (promises/facts/partial/audio pointers) by id or phone; durable audit (who/what/when + scope). ≤30/hour/key → 429. Raw audio URI stays on customer PBX. Hardened redaction. mode=anonymize|delete. Inputs: target_type, target_id, phone, reason, mode, who |
pbx_redact_audit, pbx_register, pbx_search, pbx_status, pbx_synthetic_run, pbx_webhooks, pbx_webhooks_deliveries, pbx_whisper_suggest, phone_validate, sanctions_screen, series_history, shipping_identify, tin_validate, tr_address_parse, tr_business_days, tr_fuel_prices, tr_iban_olustur, tr_invoice_build, tr_invoice_parse, tr_labor, tr_money_to_words, tr_posta_kodu, tr_qr_odeme, tr_tebligat_clock, tr_validate, tr_vat, uuid_validate, vin_validate
Every block below points at https://api.temsor.com/mcp. Pick your client and copy.
claude mcp add --transport http temsor-api-turkey-eu-business-da https://api.temsor.com/mcp
{
"mcpServers": {
"temsor-api-turkey-eu-business-da": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.temsor.com/mcp"]
}
}
}{
"mcpServers": {
"temsor-api-turkey-eu-business-da": {
"url": "https://api.temsor.com/mcp"
}
}
}{
"servers": {
"temsor-api-turkey-eu-business-da": {
"type": "http",
"url": "https://api.temsor.com/mcp"
}
}
}{
"context_servers": {
"temsor-api-turkey-eu-business-da": {
"url": "https://api.temsor.com/mcp"
}
}
}{
"mcpServers": {
"temsor-api-turkey-eu-business-da": {
"serverUrl": "https://api.temsor.com/mcp"
}
}
}{
"mcpServers": {
"temsor-api-turkey-eu-business-da": {
"url": "https://api.temsor.com/mcp"
}
}
}name: Temsor API — Turkey & EU business data
version: 0.0.1
schema: v1
mcpServers:
- name: Temsor API — Turkey & EU business data
type: streamable-http
url: https://api.temsor.com/mcp{
"mcpServers": {
"temsor-api-turkey-eu-business-da": {
"httpUrl": "https://api.temsor.com/mcp"
}
}
}{
"mcpServers": {
"temsor-api-turkey-eu-business-da": {
"type": "http",
"url": "https://api.temsor.com/mcp"
}
}
}{
"mcpServers": {
"temsor-api-turkey-eu-business-da": {
"url": "https://api.temsor.com/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fapi.temsor.com%2Fmcp&type=streamable_http&id=temsor-api-turkey-eu-business-da&name=Temsor%20API%20%E2%80%94%20Turkey%20%26%20EU%20business%20data
It answered our last check on 19 October 2026 in 225 ms. Over 6 checks since 10 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by temsor.com and served from api.temsor.com, the vendor's own domain: https://api.temsor.com/mcp.
68, as returned by the server's own tools/list on 11 September 2026: bic_validate, container_validate, creditor_ref, ean_gtin, email_verify, eu_vat_rates, eu_vat_validate, iban_validate, and 60 more.
It answered our last check on 19 October 2026 in 225 ms. Over 6 checks since 10 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.temsor.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: com.temsor. Endpoint host: api.temsor.com. ARD identifier: urn:air:com.temsor:mcp:api.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.